:root {
  --bg: #16120f;
  --panel: #231a14;
  --panel-2: #2f241b;
  --text: #f6ead8;
  --muted: #c6ad8d;
  --line: #4c3928;
  --accent: #d6a84f;
  --accent-2: #8fbf7a;
  --danger: #d86a5f;
  --shadow: rgba(0,0,0,.35);
  --input: #130f0c;
  --bg-rgb: 22,18,15;
  --panel-rgb: 35,26,20;
  --panel-2-rgb: 47,36,27;
  --input-rgb: 19,15,12;
  --accent-rgb: 214,168,79;
  --accent-2-rgb: 143,191,122;
  --danger-rgb: 216,106,95;
  --button-bg: #3a2a1e;
  --button-hover: #4a3526;
  --primary-bg: #d6a84f;
  --primary-bg-2: #8d6627;
  --primary-text: #1f1509;
  --primary-border: #f0c979;
}

/* v0.276 — pont local Gestion D&D / Gemma, résumés et psychologie des PNJ */
#npcTabAi.active {
  overflow: auto;
}
.npc-ai-shell {
  width: min(1180px, 100%);
  margin: 0 auto;
  padding: .35rem .2rem 1.25rem;
  display: grid;
  gap: .85rem;
}
.npc-ai-intro,
.npc-ai-form,
.npc-ai-result {
  border: 1px solid var(--npc-line, var(--line));
  border-radius: 14px;
  background: color-mix(in srgb, var(--panel) 92%, #000 8%);
  padding: 1rem;
}
.npc-ai-intro h3 {
  margin: .15rem 0 .35rem;
  font-size: 1.35rem;
  color: var(--text);
}
.npc-ai-intro p:last-child {
  margin: 0;
  color: var(--muted);
  font-size: 1rem;
}
.npc-ai-form {
  display: grid;
  gap: .75rem;
}
.npc-ai-form textarea {
  width: 100%;
  min-height: 230px;
  resize: vertical;
  font: inherit;
  line-height: 1.5;
}
.npc-ai-actions {
  display: flex;
  justify-content: flex-end;
  gap: .6rem;
  flex-wrap: wrap;
}
.npc-ai-actions button {
  min-height: 48px;
  font-size: 1rem;
}
.npc-ai-form > small {
  color: var(--muted);
}
.npc-ai-count {
  justify-self: end;
  margin-top: -.55rem;
  font-variant-numeric: tabular-nums;
}
.npc-ai-options {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  padding: .8rem;
  border: 1px solid color-mix(in srgb, var(--accent) 38%, var(--line) 62%);
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 6%, var(--panel-2) 94%);
}
.npc-ai-options legend {
  padding: 0 .35rem;
  color: var(--accent);
  font-weight: 800;
}
.npc-ai-options label {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  padding: .7rem;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: rgba(var(--input-rgb), .35);
  cursor: pointer;
}
.npc-ai-options label:has(input:checked) {
  border-color: var(--accent-2);
  background: color-mix(in srgb, var(--accent-2) 12%, var(--panel-2) 88%);
}
.npc-ai-options input {
  width: 1.25rem;
  height: 1.25rem;
  margin-top: .1rem;
  accent-color: var(--accent-2);
}
.npc-ai-options span {
  display: grid;
  gap: .2rem;
}
.npc-ai-options small {
  color: var(--muted);
  line-height: 1.35;
}
.npc-ai-privacy {
  line-height: 1.4;
}
.npc-ai-status {
  padding: .85rem 1rem;
  border-radius: 12px;
  border: 1px solid #4f86a5;
  background: #183142;
  color: #e6f6ff;
  font-weight: 750;
}
.npc-ai-status.error {
  border-color: var(--danger);
  background: color-mix(in srgb, var(--danger) 24%, var(--panel) 76%);
  color: var(--text);
}
.npc-ai-status.success {
  border-color: var(--accent-2);
  background: color-mix(in srgb, var(--accent-2) 22%, var(--panel) 78%);
  color: var(--text);
}
.npc-ai-readonly {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  flex-wrap: wrap;
  padding-bottom: .75rem;
  border-bottom: 1px solid var(--line);
}
.npc-ai-readonly strong {
  color: #9ee6ad;
}
.npc-ai-readonly span,
.npc-ai-result article small {
  color: var(--muted);
}
.npc-ai-summary {
  font-size: 1.05rem;
  line-height: 1.55;
}
.npc-ai-result-section {
  margin-top: 1rem;
}
.npc-ai-result-section h4 {
  margin: 0 0 .55rem;
  color: var(--accent);
  font-size: 1.12rem;
}
.npc-ai-result-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
}
.npc-ai-result article {
  padding: .8rem;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--panel-2);
}
.npc-ai-result article h5 {
  margin: 0 0 .25rem;
  font-size: 1.08rem;
}
.npc-ai-result article p {
  margin: .4rem 0;
  line-height: 1.45;
}
.npc-ai-result article.npc-ai-line {
  line-height: 1.45;
}
.npc-ai-result article.caution {
  border-color: #a87632;
  background: color-mix(in srgb, #a87632 18%, var(--panel-2) 82%);
}
.npc-ai-profile {
  display: grid;
  gap: .5rem;
  margin-top: .7rem;
  padding: .7rem;
  border: 1px solid color-mix(in srgb, var(--accent-2) 52%, var(--line) 48%);
  border-radius: 10px;
  background: color-mix(in srgb, var(--accent-2) 9%, var(--panel) 91%);
}
.npc-ai-profile-head {
  display: flex;
  justify-content: space-between;
  gap: .65rem;
  flex-wrap: wrap;
}
.npc-ai-profile-head span,
.npc-ai-profile > small {
  color: var(--muted);
}
.npc-ai-trait-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.npc-ai-trait-chips span {
  padding: .25rem .45rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: var(--panel-2);
  font-size: .84rem;
}
.npc-ai-trait-chips b {
  color: var(--accent);
}
.npc-ai-import-choice {
  margin-top: .75rem;
  padding-top: .65rem;
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  gap: .55rem;
  color: var(--text);
  font-weight: 700;
  cursor: pointer;
}
.npc-ai-import-choice input {
  width: 1.15rem;
  height: 1.15rem;
  accent-color: var(--accent-2);
}
.npc-ai-import-choice.duplicate {
  color: var(--muted);
  cursor: not-allowed;
  opacity: .75;
}
.npc-ai-import-choice.duplicate.can-complete {
  color: var(--text);
  cursor: pointer;
  opacity: 1;
}
.npc-ai-import-panel {
  margin-top: 1rem;
  padding: .9rem;
  border: 1px solid color-mix(in srgb, var(--accent) 65%, var(--line) 35%);
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 10%, var(--panel-2) 90%);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}
.npc-ai-import-panel p {
  margin: .25rem 0 0;
  color: var(--muted);
}
.npc-ai-import-actions {
  display: flex;
  gap: .55rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.npc-ai-selection-options {
  flex: 1 0 100%;
  width: 100%;
  margin: .35rem 0;
}
.npc-ai-selection-help {
  grid-column: 1 / -1;
  color: var(--muted);
  padding: .15rem .25rem 0;
}
.npc-ai-initial-location {
  display: grid;
  gap: .3rem;
  margin-top: .75rem;
  padding-top: .7rem;
  border-top: 1px solid var(--line);
  color: var(--text);
  font-weight: 750;
}
.npc-ai-initial-location small {
  color: var(--muted);
  font-weight: 500;
}
.npc-placement-choice {
  display: inline-flex;
  align-items: stretch;
  gap: .2rem;
}
.npc-placement-choice > [data-place-location] {
  flex: 1 1 auto;
}
.npc-placement-choice .npc-delete-location {
  min-width: 2.45rem;
  padding-inline: .55rem;
}
.npc-location-required {
  display: grid;
  gap: .55rem;
  padding: .8rem;
  border: 1px solid color-mix(in srgb, var(--accent) 65%, var(--line) 35%);
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 10%, var(--panel-2) 90%);
}
.npc-location-required p { margin: 0; color: var(--muted); }
.npc-profile-actions {
  display: grid;
  gap: .55rem;
}
.npc-ai-profile-work,
.npc-ai-profile-proposal {
  display: grid;
  gap: .75rem;
  padding: 1rem;
  border: 1px solid color-mix(in srgb, var(--accent) 60%, var(--line) 40%);
  border-radius: 12px;
  background: color-mix(in srgb, var(--accent) 8%, var(--panel-2) 92%);
}
.npc-ai-profile-work p,
.npc-ai-profile-proposal p { margin: 0; }
.npc-ai-profile-work.error { border-color: var(--danger, #c65b4b); }
.npc-ai-profile-proposal > div:first-child { display: flex; justify-content: space-between; gap: .7rem; flex-wrap: wrap; }
.npc-profile-proposal-columns { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .6rem; }
.npc-profile-proposal-columns > div { padding: .65rem; border: 1px solid var(--line); border-radius: 10px; }
.npc-delete-person { margin-top: .45rem; }
.npc-delete-person.armed { background: color-mix(in srgb, #a72e25 75%, var(--panel) 25%); color: #fff; font-weight: 800; }
@media (max-width: 780px) {
  .npc-ai-result-grid { grid-template-columns: 1fr; }
  .npc-ai-options { grid-template-columns: 1fr; }
  .npc-ai-actions { display: grid; grid-template-columns: 1fr; }
  .npc-ai-import-panel { align-items: stretch; flex-direction: column; }
  .npc-ai-import-actions { display: grid; grid-template-columns: 1fr; }
  .npc-profile-proposal-columns { grid-template-columns: 1fr; }
}

/* v0.261 — PNJ / Phandalin */
.npc-phandalin-open{min-height:48px;font-size:1rem;gap:.45rem}
.npc-dialog{--npc-gold:#d9a441;--npc-panel:#17130f;--npc-line:#5d4929}
.npc-dialog>.npc-card{width:min(1480px,96vw);height:min(900px,94vh);max-width:none;display:flex;flex-direction:column;overflow:hidden}
.npc-workspace{display:flex;flex-direction:column;min-height:0;gap:.7rem;flex:1}
.npc-timebar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:.7rem 1rem;border:1px solid var(--npc-line);border-radius:14px;background:linear-gradient(120deg,#251b11,#17130f)}
.npc-timebar>div:first-child{display:grid;min-width:190px}.npc-timebar strong{font-size:1.25rem;color:#ffe0a4}.npc-timebar small{color:#cfc0a5}
.npc-time-actions{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap}.npc-time-actions button{min-height:44px;font-weight:750}.npc-manual-time{display:flex!important;flex-direction:row!important;align-items:center;gap:.35rem;margin:0!important}.npc-manual-time input{width:108px;min-height:42px}
.npc-alert-button{min-height:48px;border-color:#655840;color:#d8c9ae}.npc-alert-button.has-events{background:#703b13;border-color:#e79e32;color:#fff3d4;box-shadow:0 0 0 2px #e79e3230}
.npc-next-preview{grid-column:1/-1;display:flex;gap:.6rem;align-items:center;padding:.6rem .75rem;background:#342716;border-radius:10px}.npc-next-preview span{margin-right:auto}
.npc-tabs{display:flex;gap:.45rem;border-bottom:1px solid var(--npc-line);padding-bottom:.5rem}.npc-tabs button{min-height:42px}.npc-tabs button.active{background:#7f5720;color:white;border-color:#d9a441}
.npc-tab{display:none;min-height:0;flex:1;overflow:auto}.npc-tab.active{display:block}
.npc-map-layout{display:grid;grid-template-columns:minmax(600px,2.1fr) minmax(330px,.9fr);gap:.8rem;height:100%;min-height:580px}
.npc-map-toolbar{display:flex;gap:.5rem;align-items:center;margin-bottom:.5rem}.npc-map-toolbar label{display:flex;flex-direction:row;gap:.4rem;align-items:center;margin:0}.npc-map-toolbar button.active{background:#765017;color:white}
.npc-map{position:relative;min-height:520px;height:calc(100% - 105px);overflow:hidden;border:2px solid #6b5028;border-radius:16px;background:radial-gradient(circle at 30% 20%,#4d6b48,#273b2a 48%,#18231b);isolation:isolate}
.npc-map:after{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:44px 44px;pointer-events:none;z-index:1}
.npc-map-placeholder{position:absolute;inset:0;display:grid;place-content:center;text-align:center;color:#e9ddc2;gap:.4rem}.npc-map-placeholder strong{font-size:2rem}.npc-map-placeholder span{color:#c8bea9}.npc-map>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
#npcMarkers{position:absolute;inset:0;z-index:3}.npc-marker{position:absolute;transform:translate(-50%,-50%);display:grid;justify-items:center;background:none;border:0!important;padding:0;overflow:visible}.npc-marker>span{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#2a2118;border:3px solid #e1ad4d;box-shadow:0 3px 12px #000}.npc-marker.selected>span{border-color:#69c9ff;box-shadow:0 0 0 4px #69c9ff55}.npc-marker img{width:100%;height:100%;border-radius:50%;object-fit:cover}.npc-marker em{margin-top:.2rem;background:#15110de8;color:white;padding:.18rem .45rem;border-radius:6px;font-style:normal;font-size:.78rem;white-space:nowrap}
.npc-marker.npc-marker-search-hit { z-index: 60; }
.npc-marker.npc-marker-search-hit > span { border-color: #fff36c; box-shadow: 0 0 0 7px rgba(255,243,108,.62), 0 0 34px 18px rgba(255,196,48,.72); animation: npc-search-pulse .8s ease-in-out infinite alternate; }
.npc-marker.npc-marker-search-hit > em { color: #161008; background: #fff36c; font-size: .92rem; font-weight: 950; box-shadow: 0 0 18px rgba(255,224,64,.72); }
@keyframes npc-search-pulse { from { transform: scale(1); } to { transform: scale(1.22); } }
.npc-location-legend{display:flex;gap:.4rem;overflow:auto;padding-top:.5rem}.npc-location-legend button{display:grid;grid-template-columns:auto 1fr;gap:0 .4rem;text-align:left;min-width:170px}.npc-location-legend small{grid-column:2;color:#b9ad99}.npc-open-dot{width:10px;height:10px;border-radius:50%;margin-top:.28rem}.npc-open-dot.open{background:#54d477}.npc-open-dot.closed{background:#c65e55}
.npc-quick{border:1px solid var(--npc-line);border-radius:16px;background:#17130f;padding:1rem;overflow:auto}.npc-quick-head{display:flex;align-items:center;gap:.8rem;border-bottom:1px solid #4b3a23;padding-bottom:.8rem}.npc-avatar{display:grid;place-items:center;width:76px;height:76px;border-radius:50%;background:#312518;font-size:2rem;overflow:hidden}.npc-avatar img{width:100%;height:100%;object-fit:cover}.npc-quick h3{font-size:1.5rem;margin:.1rem 0}.npc-quick p{margin:0;color:#e7c982}.npc-primary-actions{display:grid;gap:.6rem;margin:1rem 0}.npc-primary-actions button{min-height:60px;font-size:1.08rem}.npc-primary-actions .secondary{background:#304d63;border-color:#78b6df}.npc-brain-summary{display:flex;flex-wrap:wrap;gap:.4rem;margin:.8rem 0}.npc-brain-summary span{background:#292119;border:1px solid #4f402e;padding:.35rem .55rem;border-radius:999px}
.npc-inline-form,.npc-form-card{display:grid;gap:.65rem;padding:.8rem;margin-top:.8rem;border:1px solid #4f402e;background:#211a14;border-radius:12px}.npc-inline-form textarea{width:100%;resize:vertical}.npc-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.npc-form-row .button{display:grid;place-items:center;text-decoration:none}
.npc-event-list{display:grid;gap:.7rem}.npc-event{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:1rem;border:1px solid #674d2d;border-radius:14px;background:#1d1711}.npc-event h3{margin:.15rem 0}.npc-event-actions{display:flex;flex-direction:column;gap:.4rem;min-width:210px}.npc-event-actions button{min-height:42px}.npc-empty-list,.npc-empty{padding:2rem;text-align:center;border:1px dashed #65543d;border-radius:14px;color:#d4c4a8}
.npc-planning-grid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.npc-form-card{margin:0}.npc-planning-list{margin-top:.8rem;border:1px solid #4f402e;border-radius:12px;padding:.8rem}.npc-planning-list>div{display:flex;justify-content:space-between;gap:1rem;padding:.55rem;border-bottom:1px solid #3a3025}.npc-planning-list span{color:#c8b89d}.npc-empty[hidden],.npc-workspace[hidden],.npc-next-preview[hidden]{display:none!important}
@media(max-width:1000px){.npc-timebar{grid-template-columns:1fr}.npc-map-layout{grid-template-columns:1fr;min-height:0}.npc-map{height:520px}.npc-quick{min-height:360px}.npc-planning-grid{grid-template-columns:1fr}.npc-event{grid-template-columns:1fr}.npc-event-actions{display:grid;grid-template-columns:1fr 1fr}}
@media(max-width:650px){.npc-dialog>.npc-card{width:98vw;height:96vh}.npc-map-layout{display:block}.npc-map{min-height:430px}.npc-time-actions{display:grid;grid-template-columns:1fr 1fr}.npc-form-row{grid-template-columns:1fr}.npc-tabs{overflow:auto}.npc-event-actions{grid-template-columns:1fr}}

* { box-sizing: border-box; }
body {
  margin: 0;
  font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  background:
    radial-gradient(circle at top left, rgba(214,168,79,.16), transparent 34rem),
    radial-gradient(circle at bottom right, rgba(143,191,122,.12), transparent 32rem),
    var(--bg);
  color: var(--text);
}

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

button, .button {
  border: 1px solid var(--line);
  background: #3a2a1e;
  color: var(--text);
  padding: .55rem .75rem;
  border-radius: .75rem;
  cursor: pointer;
  text-decoration: none;
  box-shadow: 0 2px 0 rgba(0,0,0,.2);
}

button:hover, .button:hover { filter: brightness(1.12); }
button.primary, .button.primary { background: linear-gradient(180deg, #c09138, #8d6627); border-color: #e0b96d; }
button.danger { background: #5a231f; border-color: #9d3f38; }
button.ghost { background: transparent; }

input, textarea, select {
  width: 100%;
  background: var(--input);
  border: 1px solid var(--line);
  color: var(--text);
  border-radius: .65rem;
  padding: .55rem .65rem;
}
textarea { resize: vertical; }
label { display: grid; gap: .25rem; color: var(--muted); font-size: .9rem; }

.topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--line);
  background: rgba(19,15,12,.78);
  position: sticky;
  top: 0;
  z-index: 10;
  backdrop-filter: blur(8px);
}
.topbar h1 { margin: 0; font-size: 1.6rem; }
.topbar p { margin: .15rem 0 0; color: var(--muted); }
.topbar nav { display: flex; gap: .75rem; align-items: center; }
.topbar a { color: var(--accent); }

.layout-mj {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 420px;
  gap: 1rem;
  padding: 1rem;
  align-items: start;
}

.panel, .player-panel {
  background: linear-gradient(180deg, rgba(47,36,27,.94), rgba(35,26,20,.94));
  border: 1px solid var(--line);
  border-radius: 1.1rem;
  box-shadow: 0 10px 25px var(--shadow);
  padding: 1rem;
}
.panel h2, .player-panel h2 { margin-top: 0; }
.panel-header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.toolbar { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: 1rem; }
.inline-field { display: flex; grid-template-columns: auto 150px; align-items: center; gap: .5rem; }
.round-pill, .round-badge {
  border: 1px solid var(--line);
  background: rgba(0,0,0,.2);
  padding: .45rem .7rem;
  border-radius: 999px;
  color: var(--muted);
}
.active-box {
  border: 1px solid rgba(214,168,79,.5);
  background: rgba(214,168,79,.14);
  border-radius: 1rem;
  padding: .9rem 1rem;
  margin-bottom: 1rem;
  font-size: 1.1rem;
}

.combatants-list { display: grid; gap: .75rem; }
.combatant-card {
  background: rgba(19,15,12,.52);
  border: 1px solid var(--line);
  border-radius: 1rem;
  padding: .85rem;
}
.combatant-card.active { outline: 2px solid var(--accent); }
.combatant-card.hidden-player { opacity: .62; }
.combatant-head, .stats-row, .quick-actions, .card-actions, .roll-form, .log-form { display: flex; gap: .5rem; align-items: center; }
.combatant-head { justify-content: space-between; }
.combatant-head h3 { margin: 0; font-size: 1.15rem; }
.meta-line { margin: .15rem 0 0; color: var(--muted); }
.stats-row { flex-wrap: wrap; margin: .65rem 0; }
.stat-chip {
  background: rgba(255,255,255,.06);
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: .25rem .55rem;
  color: var(--muted);
  font-size: .88rem;
}
.hpbar {
  height: .75rem;
  background: #120d0a;
  border: 1px solid var(--line);
  border-radius: 999px;
  overflow: hidden;
  margin-top: .65rem;
}
.hpbar span {
  display: block;
  height: 100%;
  width: 50%;
  background: linear-gradient(90deg, #7d1f1c, #d6a84f, #8fbf7a);
}
.quick-actions { margin: .7rem 0; flex-wrap: wrap; }
.edit-grid, .grid-form {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .6rem;
}
.grid-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.full { grid-column: 1 / -1; }
.checkbox { display: flex; align-items: center; gap: .5rem; }
.checkbox input { width: auto; }
.side-column { display: grid; gap: 1rem; }
.log {
  display: grid;
  gap: .45rem;
  max-height: 330px;
  overflow: auto;
  padding-right: .25rem;
  margin-top: .75rem;
}
.log-entry {
  border-left: 3px solid var(--accent);
  background: rgba(0,0,0,.16);
  padding: .45rem .6rem;
  border-radius: .5rem;
}
.log-entry.private { border-left-color: var(--danger); opacity: .78; }
.log-time { color: var(--muted); font-size: .78rem; }

.home { min-height: 100vh; display: grid; place-items: center; }
.landing {
  max-width: 720px;
  margin: 2rem;
  padding: 2rem;
  border: 1px solid var(--line);
  border-radius: 1.5rem;
  background: rgba(35,26,20,.92);
  text-align: center;
  box-shadow: 0 10px 35px var(--shadow);
}
.landing h1 { font-size: clamp(2.4rem, 8vw, 5rem); margin: 0; }
.landing p { color: var(--muted); font-size: 1.2rem; }
.landing-actions { display: flex; justify-content: center; gap: 1rem; flex-wrap: wrap; }

.player-body { min-height: 100vh; }
.player-hero {
  display: flex;
  justify-content: space-between;
  gap: 1.5rem;
  align-items: center;
  padding: 2rem;
  border-bottom: 1px solid var(--line);
  background: rgba(19,15,12,.76);
}
.player-hero h1 { margin: .15rem 0; font-size: clamp(2rem, 6vw, 4rem); }
.player-hero p { max-width: 900px; margin: 0; color: var(--muted); }
.eyebrow { text-transform: uppercase; letter-spacing: .12em; color: var(--accent); font-size: .8rem; }
.player-layout { display: grid; grid-template-columns: 1fr; gap: 1rem; padding: 1rem; max-width: 1200px; margin: auto; }
.active-turn-panel {
  background: linear-gradient(180deg, rgba(76,57,40,.96), rgba(35,26,20,.96));
  border-color: rgba(214,168,79,.5);
}
.active-turn-panel h2 { font-size: clamp(2rem, 5vw, 4rem); margin: .2rem 0; }
.player-combatants { display: grid; gap: .75rem; }
.player-card {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(220px, 2fr) auto;
  gap: .8rem;
  align-items: center;
  border: 1px solid var(--line);
  border-radius: 1rem;
  padding: .8rem;
  background: rgba(0,0,0,.18);
}
.player-card.active { outline: 2px solid var(--accent); background: rgba(214,168,79,.13); }
.player-card h3 { margin: 0; }
.player-card p { margin: .25rem 0 0; color: var(--muted); }
.muted { color: var(--muted); }
.player-log { max-height: 360px; }

@media (max-width: 1050px) {
  .layout-mj { grid-template-columns: 1fr; }
  .side-column { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .topbar, .player-hero { align-items: stretch; flex-direction: column; }
  .edit-grid, .grid-form { grid-template-columns: 1fr; }
  .player-card { grid-template-columns: 1fr; }
  .roll-form, .log-form { flex-direction: column; align-items: stretch; }
}


/* V0.3 — Mode compact par défaut
   Objectif: afficher beaucoup plus de combattants dans la même fenêtre,
   surtout côté MJ pendant une vraie rencontre. */
.compact-ui .topbar {
  padding: .7rem 1rem;
}
.compact-ui .topbar h1 {
  font-size: 1.28rem;
}
.compact-ui .topbar p {
  font-size: .86rem;
}
.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) 360px;
  gap: .65rem;
  padding: .65rem;
}
.compact-ui .panel,
.compact-ui .player-panel {
  border-radius: .85rem;
  padding: .7rem;
}
.compact-ui .panel h2,
.compact-ui .player-panel h2 {
  margin: 0 0 .55rem;
  font-size: 1.15rem;
}
.compact-ui .panel-header {
  margin-bottom: .45rem;
}
.compact-ui .toolbar {
  gap: .4rem;
  margin-bottom: .55rem;
}
.compact-ui button,
.compact-ui .button {
  padding: .35rem .55rem;
  border-radius: .55rem;
}
.compact-ui input,
.compact-ui textarea,
.compact-ui select {
  padding: .38rem .48rem;
  border-radius: .48rem;
}
.compact-ui label {
  gap: .18rem;
  font-size: .82rem;
}
.compact-ui .round-pill,
.compact-ui .round-badge {
  padding: .28rem .52rem;
}
.compact-ui .active-box {
  padding: .5rem .65rem;
  margin-bottom: .55rem;
  border-radius: .7rem;
  font-size: .96rem;
}
.compact-ui .combatants-list,
.compact-ui .player-combatants,
.compact-ui .side-column {
  gap: .45rem;
}
.compact-ui .combatant-card {
  padding: .52rem .58rem;
  border-radius: .75rem;
}
.compact-ui .combatant-head h3 {
  font-size: 1rem;
}
.compact-ui .meta-line {
  margin: .05rem 0 0;
  font-size: .78rem;
}
.compact-ui .hpbar {
  height: .48rem;
  margin-top: .38rem;
}
.compact-ui .stats-row {
  margin: .38rem 0 .25rem;
  gap: .32rem;
}
.compact-ui .stat-chip {
  padding: .15rem .42rem;
  font-size: .78rem;
}
.compact-ui .quick-actions {
  margin: .35rem 0 .15rem;
  gap: .35rem;
}
.compact-ui .card-actions {
  gap: .35rem;
}
.compact-ui .edit-grid,
.compact-ui .grid-form {
  gap: .42rem;
}
.compact-ui .combatant-details {
  margin-top: .35rem;
  border-top: 1px solid rgba(255,255,255,.08);
  padding-top: .3rem;
}
.compact-ui .combatant-details summary {
  color: var(--muted);
  cursor: pointer;
  font-size: .82rem;
  user-select: none;
}
.compact-ui .combatant-details .edit-grid {
  margin-top: .4rem;
}
.compact-ui .log {
  max-height: 240px;
  gap: .3rem;
  margin-top: .45rem;
}
.compact-ui .log-entry {
  padding: .32rem .45rem;
  border-radius: .4rem;
}
.compact-ui .log-time {
  font-size: .72rem;
}
.compact-ui .roll-form,
.compact-ui .log-form {
  gap: .35rem;
}

/* Côté joueurs: moins d'espace cérémoniel, plus de lignes d'initiative visibles. */
.compact-ui.player-body .player-hero {
  padding: .85rem 1.1rem;
  gap: .75rem;
}
.compact-ui.player-body .player-hero h1 {
  font-size: clamp(1.6rem, 4vw, 2.7rem);
}
.compact-ui.player-body .player-layout {
  max-width: 1400px;
  padding: .65rem;
  gap: .65rem;
}
.compact-ui.player-body .active-turn-panel h2 {
  font-size: clamp(1.7rem, 4vw, 3rem);
}
.compact-ui.player-body .player-card {
  grid-template-columns: minmax(150px, 1fr) minmax(180px, 2fr) auto;
  gap: .5rem;
  padding: .5rem .6rem;
  border-radius: .75rem;
}
.compact-ui.player-body .player-card h3 {
  font-size: 1rem;
}
.compact-ui.player-body .player-card p {
  margin: .12rem 0 0;
  font-size: .86rem;
}
.compact-ui.player-body .player-log {
  max-height: 280px;
}

@media (max-width: 1050px) {
  .compact-ui .layout-mj { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .compact-ui.player-body .player-card { grid-template-columns: 1fr; }
}

/* V0.4 — paramètres visuels : taille, police et palette */
html { font-size: 17px; }
html.font-size-compact { font-size: 15px; }
html.font-size-readable { font-size: 17px; }
html.font-size-large { font-size: 19px; }
html.font-size-huge { font-size: 22px; }

html.font-family-system { --font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif; }
html.font-family-arial { --font-family: Arial, Helvetica, sans-serif; }
html.font-family-verdana { --font-family: Verdana, Geneva, sans-serif; }
html.font-family-georgia { --font-family: Georgia, 'Times New Roman', serif; }
html.font-family-atkinson { --font-family: 'Atkinson Hyperlegible', 'Arial', 'Verdana', sans-serif; }

body { font-family: var(--font-family, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif); }

html.theme-amber {
  --bg: #16120f; --panel: #231a14; --panel-2: #2f241b; --text: #f6ead8; --muted: #c6ad8d; --line: #4c3928; --accent: #d6a84f; --accent-2: #8fbf7a; --danger: #d86a5f; --input: #130f0c;
  --primary-bg: #d6a84f; --primary-bg-2: #8d6627; --primary-text: #1f1509; --primary-border: #f0c979;
}
html.theme-forest {
  --bg: #0e1711; --panel: #17261c; --panel-2: #203625; --text: #edf7e9; --muted: #b8d0ad; --line: #38523d; --accent: #90d26d; --accent-2: #d9b45d; --danger: #e17969; --input: #0a100c;
  --primary-bg: #90d26d; --primary-bg-2: #4f873e; --primary-text: #071007; --primary-border: #bef0a4;
}
html.theme-arcane {
  --bg: #0f1220; --panel: #171b31; --panel-2: #212747; --text: #eef1ff; --muted: #bdc5ea; --line: #3c4775; --accent: #8fb7ff; --accent-2: #c498ff; --danger: #ed7281; --input: #0a0d19;
  --primary-bg: #8fb7ff; --primary-bg-2: #496dbf; --primary-text: #071022; --primary-border: #c7dcff;
}
html.theme-royal {
  --bg: #160f1f; --panel: #21172e; --panel-2: #302141; --text: #f5edff; --muted: #d0b8e8; --line: #513a69; --accent: #c89cff; --accent-2: #f0c66a; --danger: #e06c78; --input: #100918;
  --primary-bg: #c89cff; --primary-bg-2: #7d55ad; --primary-text: #170a21; --primary-border: #e5cfff;
}
html.theme-dragon {
  --bg: #1c0f0d; --panel: #2a1512; --panel-2: #3a1d18; --text: #fff0ea; --muted: #e1b3a9; --line: #65382f; --accent: #ff7d62; --accent-2: #ffd166; --danger: #ff5f5f; --input: #130806;
  --primary-bg: #ff7d62; --primary-bg-2: #b5412f; --primary-text: #210805; --primary-border: #ffb5a5;
}
html.theme-ocean {
  --bg: #08161b; --panel: #10252c; --panel-2: #183640; --text: #e9fbff; --muted: #a7d0da; --line: #315967; --accent: #66d9ef; --accent-2: #9ee493; --danger: #e36f75; --input: #061014;
  --primary-bg: #66d9ef; --primary-bg-2: #238aa0; --primary-text: #041014; --primary-border: #a7effa;
}
html.theme-steel {
  --bg: #111418; --panel: #1b2026; --panel-2: #252c34; --text: #f0f4f8; --muted: #bbc7d3; --line: #43505d; --accent: #b8c7d9; --accent-2: #88b7d6; --danger: #e07474; --input: #0b0e11;
  --primary-bg: #b8c7d9; --primary-bg-2: #6c7e92; --primary-text: #0b0e12; --primary-border: #e1e9f2;
}
html.theme-ember {
  --bg: #17100b; --panel: #24180f; --panel-2: #332112; --text: #fff1df; --muted: #d7b58a; --line: #573b24; --accent: #ffb347; --accent-2: #ff6b35; --danger: #e25a48; --input: #100a06;
  --primary-bg: #ffb347; --primary-bg-2: #b7631e; --primary-text: #1e1003; --primary-border: #ffd18a;
}
html.theme-sand {
  --bg: #201b13; --panel: #302719; --panel-2: #453823; --text: #fff7e9; --muted: #dcc69e; --line: #655337; --accent: #e7cf8f; --accent-2: #b9d28b; --danger: #d56c5d; --input: #17120c;
  --primary-bg: #e7cf8f; --primary-bg-2: #9c7d3c; --primary-text: #191207; --primary-border: #fff0bd;
}
html.theme-contrast {
  --bg: #000000; --panel: #0b0b0b; --panel-2: #151515; --text: #ffffff; --muted: #e7e7e7; --line: #ffffff; --accent: #ffe600; --accent-2: #00e5ff; --danger: #ff6b6b; --input: #000000;
  --primary-bg: #ffe600; --primary-bg-2: #ffe600; --primary-text: #000000; --primary-border: #ffffff;
  --shadow: rgba(255,255,255,.18);
}

button.primary, .button.primary {
  background: linear-gradient(180deg, var(--primary-bg, #d6a84f), var(--primary-bg-2, #8d6627));
  border-color: var(--primary-border, #e0b96d);
  color: var(--primary-text, #1f1509);
  font-weight: 700;
}

.player-actions { display: flex; gap: .75rem; align-items: center; flex-wrap: wrap; justify-content: flex-end; }

.settings-dialog {
  width: min(760px, calc(100vw - 2rem));
  border: 1px solid var(--line);
  border-radius: 1.2rem;
  padding: 0;
  color: var(--text);
  background: var(--panel);
  box-shadow: 0 20px 60px rgba(0,0,0,.55);
}
.settings-dialog::backdrop { background: rgba(0,0,0,.62); backdrop-filter: blur(3px); }
.settings-card {
  display: grid;
  gap: 1rem;
  padding: 1rem;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
}
.settings-head, .settings-actions { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.settings-head h2 { margin: 0; }
.settings-group > p { color: var(--muted); margin: 0 0 .5rem; }
.ai-provider-dashboard { margin-top: .45rem; }
.ai-settings-card { width: min(760px, calc(100vw - 2rem)); }
.ai-provider-dashboard > summary {
  cursor: pointer;
  color: var(--muted);
  font-weight: 700;
}
.ai-provider-dashboard-body {
  display: grid;
  gap: .75rem;
  padding-top: .8rem;
}
.ai-usage-metrics {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
}
.ai-usage-metrics > span {
  display: grid;
  gap: .2rem;
  padding: .7rem;
  border: 1px solid var(--line);
  border-radius: .75rem;
  background: color-mix(in srgb, var(--panel) 82%, transparent);
}
.ai-usage-metrics strong { font-size: 1.05rem; }
.ai-usage-metrics small { color: var(--muted); }
.ai-usage-by-mode { display: grid; gap: .35rem; }
.ai-usage-openai-link {
  justify-self: start;
  text-decoration: none;
}
.ai-combat-character-add {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .6rem;
}
.ai-combat-character-list { display: grid; gap: .5rem; margin-top: .65rem; }
.ai-combat-character-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  padding: .65rem .75rem;
  border: 1px solid var(--line);
  border-radius: .75rem;
}
.ai-combat-character-row span { display: grid; gap: .15rem; }
.ai-combat-character-row small { color: var(--muted); }
.ai-combat-turn-card { width: min(1180px, calc(100vw - 2rem)); }
.ai-combat-turn-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1rem;
}
.ai-combat-map-automatic{margin:0;padding:.7rem .85rem;border:1px solid var(--line);border-radius:.75rem;color:var(--muted);background:color-mix(in srgb,var(--panel) 86%,transparent)}
.ai-combat-map-panel, .ai-combat-dialogue-panel { display: grid; align-content: start; gap: .75rem; }
.ai-combat-map-drop {
  display: grid;
  place-items: center;
  min-height: 260px;
  padding: .75rem;
  border: 2px dashed var(--line);
  border-radius: 1rem;
  cursor: pointer;
  overflow: hidden;
}
.ai-combat-map-drop img { width: 100%; max-height: 55vh; object-fit: contain; border-radius: .6rem; }
.ai-combat-conversation {
  display: grid;
  gap: .5rem;
  max-height: 230px;
  overflow-y: auto;
}
.ai-combat-conversation article {
  padding: .65rem .8rem;
  border-radius: .8rem;
  background: color-mix(in srgb, var(--panel) 86%, transparent);
}
.ai-combat-conversation article.character { border-left: 4px solid var(--accent); }
.ai-combat-conversation article.mj { border-left: 4px solid #4aa3ff; }
.ai-combat-conversation p { margin: .25rem 0 0; }
.ai-combat-proposal { display: grid; gap: .65rem; }
.ai-combat-action-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .5rem;
}
.ai-combat-action-grid p {
  display: grid;
  gap: .2rem;
  margin: 0;
  padding: .6rem;
  border: 1px solid var(--line);
  border-radius: .7rem;
}
.ai-combat-questions, .ai-combat-ambiguities { padding: .65rem; border-radius: .75rem; }
.ai-combat-questions { background: color-mix(in srgb, #4aa3ff 15%, transparent); }
.ai-combat-ambiguities { background: color-mix(in srgb, #f0ad3d 16%, transparent); }
@media (max-width: 850px) {
  .ai-combat-turn-layout { grid-template-columns: 1fr; }
}
.theme-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .55rem;
}
.theme-choice {
  display: flex;
  align-items: center;
  gap: .45rem;
  min-height: 2.7rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  padding: .45rem .55rem;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.7);
  cursor: pointer;
}
.theme-choice input { width: auto; accent-color: var(--accent); }
.theme-choice:has(input:checked) { outline: 3px solid var(--accent); outline-offset: 2px; }
.swatch-amber { background: linear-gradient(135deg, #16120f, #d6a84f); }
.swatch-forest { background: linear-gradient(135deg, #0e1711, #90d26d); }
.swatch-arcane { background: linear-gradient(135deg, #0f1220, #8fb7ff); }
.swatch-royal { background: linear-gradient(135deg, #160f1f, #c89cff); }
.swatch-dragon { background: linear-gradient(135deg, #1c0f0d, #ff7d62); }
.swatch-ocean { background: linear-gradient(135deg, #08161b, #66d9ef); }
.swatch-steel { background: linear-gradient(135deg, #111418, #b8c7d9); }
.swatch-ember { background: linear-gradient(135deg, #17100b, #ffb347); }
.swatch-sand { background: linear-gradient(135deg, #201b13, #e7cf8f); }
.swatch-contrast { background: linear-gradient(135deg, #000, #ffe600); color: #fff; }
.settings-preview {
  border: 1px solid var(--line);
  border-radius: .9rem;
  background: rgba(0,0,0,.23);
  padding: .9rem 1rem;
  color: var(--text);
}
.settings-actions { justify-content: flex-end; }

html.theme-contrast .panel,
html.theme-contrast .player-panel,
html.theme-contrast .combatant-card,
html.theme-contrast .player-card,
html.theme-contrast .settings-dialog {
  border-width: 2px;
}
html.theme-contrast a { color: var(--accent); }
html.theme-contrast .stat-chip { color: #fff; border-color: #fff; }
html.theme-contrast .active-box { border-color: var(--accent); background: rgba(255,230,0,.14); }

@media (max-width: 760px) {
  .theme-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .settings-head, .settings-actions { align-items: stretch; }
}

/* V0.286.10 — générateur de rencontres SRD, isolé du tiroir Ajouter un combattant */
body.mode-combat .encounter-generator-panel { display: none !important; }
body.mode-exploration .combatant-drawer-panel { display: none !important; }
body.mode-exploration .layout-mj,
body.mode-exploration.compact-ui .layout-mj,
html.mj-combatants-2 body.mode-exploration .layout-mj {
  grid-template-columns: 4.25rem minmax(0, 1fr) 4.25rem 4.25rem;
}
body.mode-exploration .mj-left-dock { grid-column: 1; }
body.mode-exploration .encounter-panel { grid-column: 2; }
body.mode-exploration .scene-notes-drawer-panel { grid-column: 3; }
body.mode-exploration .journal-drawer-panel { grid-column: 4; }
.mj-left-dock .encounter-generator-tab { min-height: min(34vh, 18rem); }
html.mj-encounter-generator-open body.mode-exploration .layout-mj,
html.mj-encounter-generator-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(25rem, 430px) minmax(0, 1fr) 4.25rem 4.25rem;
}
html.mj-encounter-generator-open .mj-left-dock { height:calc(100vh - 5.75rem); max-height:calc(100vh - 5.75rem); }
html.mj-encounter-generator-open .mj-left-dock .dice-drawer-panel { display:none; }
html.mj-encounter-generator-open .mj-left-dock .encounter-generator-panel {
  flex:1 1 auto; height:100%; min-height:0; max-width:none; width:100%; border-color:rgba(var(--accent-rgb),.54);
}
html.mj-encounter-generator-open .encounter-generator-tab { height:100%; min-height:100%; }
.encounter-generator-body { align-content:start; }
.encounter-generator-form { display:grid; grid-template-columns:1fr 1fr; gap:.75rem; }
.encounter-generator-form .full { grid-column:1 / -1; }
.encounter-detected-context { padding:.75rem; border:1px solid rgba(var(--accent-rgb),.22); border-radius:.75rem; background:rgba(var(--accent-rgb),.08); line-height:1.45; }
.encounter-generator-status { min-height:1.4rem; color:var(--muted); }
.encounter-generator-status.error { color:var(--danger); }
.encounter-suggestion-card { display:grid; gap:.8rem; padding:.9rem; border:1px solid rgba(var(--accent-rgb),.3); border-radius:.85rem; background:rgba(var(--panel-2-rgb),.8); }
.encounter-suggestion-card h3,.encounter-suggestion-card h4 { margin:.1rem 0; }
.encounter-suggestion-card ul { margin:.25rem 0; padding-left:1.25rem; }
.encounter-budget { display:flex; justify-content:space-between; gap:.5rem; padding:.5rem .7rem; border-radius:.6rem; background:rgba(var(--accent-rgb),.12); }
.encounter-creature-row { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:.65rem; align-items:center; padding:.55rem; border-radius:.65rem; background:rgba(0,0,0,.12); }
.encounter-creature-details { border:1px solid rgba(var(--accent-rgb),.16); border-radius:.7rem; overflow:hidden; }
.encounter-creature-details > summary { cursor:pointer; list-style:none; }
.encounter-creature-details > summary::-webkit-details-marker { display:none; }
.encounter-creature-details[open] > summary { border-bottom:1px solid rgba(var(--accent-rgb),.2); border-radius:.65rem .65rem 0 0; }
.encounter-creature-statblock { display:grid; gap:.55rem; padding:.8rem; background:rgba(0,0,0,.16); line-height:1.45; }
.encounter-creature-statblock p { margin:0; }
.encounter-creature-core,.encounter-creature-abilities { display:flex; flex-wrap:wrap; gap:.45rem; }
.encounter-creature-core span,.encounter-creature-abilities span { padding:.32rem .5rem; border:1px solid rgba(var(--accent-rgb),.2); border-radius:.5rem; background:rgba(var(--accent-rgb),.08); }
.encounter-full-statblock summary { cursor:pointer; color:var(--accent); font-weight:800; }
.encounter-full-statblock pre { max-height:28rem; overflow:auto; white-space:pre-wrap; word-break:break-word; padding:.75rem; border-radius:.55rem; background:rgba(0,0,0,.28); color:var(--text); font:inherit; font-size:.86rem; }
.encounter-manual-prompt { grid-template-columns:1fr !important; }
.encounter-manual-prompt textarea { width:100%; min-height:30rem; resize:vertical; font-family:inherit; line-height:1.5; }
.encounter-suggestion-actions { display:flex; flex-wrap:wrap; gap:.55rem; position:sticky; bottom:0; padding-top:.7rem; background:linear-gradient(transparent, var(--panel) 28%); }
.prepared-encounters { border-top:1px solid rgba(var(--accent-rgb),.18); padding-top:.65rem; }
.prepared-encounter-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:.4rem; margin-top:.4rem; }
.prepared-encounter-row button:first-child { text-align:left; overflow:hidden; text-overflow:ellipsis; }
@media (max-width:1240px) {
  body.mode-exploration .layout-mj,
  body.mode-exploration.compact-ui .layout-mj,
  html.mj-encounter-generator-open body.mode-exploration .layout-mj { grid-template-columns:1fr; }
  body.mode-exploration .mj-left-dock,body.mode-exploration .encounter-panel,
  body.mode-exploration .scene-notes-drawer-panel,body.mode-exploration .journal-drawer-panel { grid-column:1; }
  .mj-left-dock .encounter-generator-panel,.mj-left-dock .encounter-generator-panel.collapsed { width:100%; max-width:none; grid-template-columns:1fr; }
  .mj-left-dock .encounter-generator-tab,html.mj-encounter-generator-open .encounter-generator-tab { width:100%; min-height:3rem; height:3rem; }
  .encounter-generator-tab span { writing-mode:horizontal-tb; transform:none; }
}


/* V0.5 — palettes vraiment appliquées à toute l'interface
   Les anciennes couleurs fixes restent dans le fichier, mais cette section les remplace
   pour que le thème choisi colore clairement les fonds, boutons, panneaux et fenêtres. */
html.theme-amber {
  --bg-rgb: 22,18,15; --panel-rgb: 35,26,20; --panel-2-rgb: 47,36,27; --input-rgb: 19,15,12;
  --accent-rgb: 214,168,79; --accent-2-rgb: 143,191,122; --danger-rgb: 216,106,95;
  --button-bg: #3a2a1e; --button-hover: #4a3526;
}
html.theme-forest {
  --bg-rgb: 14,23,17; --panel-rgb: 23,38,28; --panel-2-rgb: 32,54,37; --input-rgb: 10,16,12;
  --accent-rgb: 144,210,109; --accent-2-rgb: 217,180,93; --danger-rgb: 225,121,105;
  --button-bg: #203625; --button-hover: #2b4932;
}
html.theme-arcane {
  --bg-rgb: 15,18,32; --panel-rgb: 23,27,49; --panel-2-rgb: 33,39,71; --input-rgb: 10,13,25;
  --accent-rgb: 143,183,255; --accent-2-rgb: 196,152,255; --danger-rgb: 237,114,129;
  --button-bg: #212747; --button-hover: #2c355f;
}
html.theme-royal {
  --bg-rgb: 22,15,31; --panel-rgb: 33,23,46; --panel-2-rgb: 48,33,65; --input-rgb: 16,9,24;
  --accent-rgb: 200,156,255; --accent-2-rgb: 240,198,106; --danger-rgb: 224,108,120;
  --button-bg: #302141; --button-hover: #412c59;
}
html.theme-dragon {
  --bg-rgb: 28,15,13; --panel-rgb: 42,21,18; --panel-2-rgb: 58,29,24; --input-rgb: 19,8,6;
  --accent-rgb: 255,125,98; --accent-2-rgb: 255,209,102; --danger-rgb: 255,95,95;
  --button-bg: #3a1d18; --button-hover: #502820;
}
html.theme-ocean {
  --bg-rgb: 8,22,27; --panel-rgb: 16,37,44; --panel-2-rgb: 24,54,64; --input-rgb: 6,16,20;
  --accent-rgb: 102,217,239; --accent-2-rgb: 158,228,147; --danger-rgb: 227,111,117;
  --button-bg: #183640; --button-hover: #224b58;
}
html.theme-steel {
  --bg-rgb: 17,20,24; --panel-rgb: 27,32,38; --panel-2-rgb: 37,44,52; --input-rgb: 11,14,17;
  --accent-rgb: 184,199,217; --accent-2-rgb: 136,183,214; --danger-rgb: 224,116,116;
  --button-bg: #252c34; --button-hover: #343e49;
}
html.theme-ember {
  --bg-rgb: 23,16,11; --panel-rgb: 36,24,15; --panel-2-rgb: 51,33,18; --input-rgb: 16,10,6;
  --accent-rgb: 255,179,71; --accent-2-rgb: 255,107,53; --danger-rgb: 226,90,72;
  --button-bg: #332112; --button-hover: #493018;
}
html.theme-sand {
  --bg-rgb: 32,27,19; --panel-rgb: 48,39,25; --panel-2-rgb: 69,56,35; --input-rgb: 23,18,12;
  --accent-rgb: 231,207,143; --accent-2-rgb: 185,210,139; --danger-rgb: 213,108,93;
  --button-bg: #453823; --button-hover: #5f4d30;
}
html.theme-contrast {
  --bg-rgb: 0,0,0; --panel-rgb: 11,11,11; --panel-2-rgb: 21,21,21; --input-rgb: 0,0,0;
  --accent-rgb: 255,230,0; --accent-2-rgb: 0,229,255; --danger-rgb: 255,107,107;
  --button-bg: #111111; --button-hover: #222222;
}

body {
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .20), transparent 34rem),
    radial-gradient(circle at bottom right, rgba(var(--accent-2-rgb), .16), transparent 32rem),
    linear-gradient(135deg, rgba(var(--bg-rgb), 1), rgba(var(--panel-rgb), .94));
}

button, .button {
  background: linear-gradient(180deg, var(--button-hover), var(--button-bg));
  border-color: rgba(var(--accent-rgb), .38);
}
button.ghost { background: rgba(var(--panel-rgb), .45); }
button.danger {
  background: linear-gradient(180deg, rgba(var(--danger-rgb), .42), rgba(var(--danger-rgb), .22));
  border-color: rgba(var(--danger-rgb), .75);
}

.topbar,
.player-hero {
  background:
    linear-gradient(90deg, rgba(var(--panel-rgb), .96), rgba(var(--panel-2-rgb), .90)),
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .18), transparent 28rem);
}

.panel,
.player-panel,
.landing {
  background:
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .97), rgba(var(--panel-rgb), .97)),
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .09), transparent 18rem);
}

.combatant-card,
.player-card,
.log-entry,
.settings-preview {
  background: rgba(var(--input-rgb), .58);
}

.combatant-card.active,
.player-card.active,
.active-turn-panel,
.active-box {
  background:
    linear-gradient(180deg, rgba(var(--accent-rgb), .18), rgba(var(--panel-rgb), .94)),
    rgba(var(--panel-rgb), .9);
  border-color: rgba(var(--accent-rgb), .72);
}

.player-card.active,
.combatant-card.active {
  outline-color: var(--accent);
}

.stat-chip,
.round-pill,
.round-badge {
  background: rgba(var(--accent-rgb), .11);
  border-color: rgba(var(--accent-rgb), .34);
}

.hpbar {
  background: rgba(var(--input-rgb), .95);
}
.hpbar span {
  background: linear-gradient(90deg, var(--danger), var(--accent), var(--accent-2));
}

input, textarea, select {
  background: rgba(var(--input-rgb), .96);
  border-color: rgba(var(--accent-rgb), .28);
}

.settings-dialog,
.action-dialog {
  background: var(--panel);
}
.settings-card,
.action-card {
  background:
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .18), transparent 22rem),
    linear-gradient(180deg, var(--panel-2), var(--panel));
}

.action-card {
  display: grid;
  gap: 1rem;
  padding: 1rem;
}
.action-target {
  border: 1px solid rgba(var(--accent-rgb), .38);
  border-radius: .9rem;
  background: rgba(var(--input-rgb), .48);
  padding: .75rem .85rem;
}
.action-target strong { color: var(--accent); }
.action-quick-buttons {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .45rem;
}
.action-quick-buttons button {
  padding: .5rem .35rem;
}

@media (max-width: 760px) {
  .action-quick-buttons { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* V0.6 — actions à la souris et conditions sélectionnables */
.condition-field {
  display: grid;
  gap: .25rem;
  color: var(--muted);
  font-size: .9rem;
}
.condition-picker {
  width: 100%;
  min-height: 2.35rem;
  justify-content: flex-start;
  text-align: left;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.condition-picker.has-conditions {
  color: var(--text);
  border-color: rgba(var(--accent-rgb), .62);
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .20), rgba(var(--input-rgb), .78));
}

.action-dialog {
  width: min(920px, calc(100vw - 2rem));
}
.action-quick-buttons {
  grid-template-columns: repeat(10, minmax(0, 1fr));
  gap: .35rem;
}
.action-quick-buttons button {
  min-height: 2.25rem;
  padding: .45rem .25rem;
  font-weight: 800;
}

.condition-dialog {
  width: min(880px, calc(100vw - 2rem));
}
.condition-card {
  display: grid;
  gap: 1rem;
  padding: 1rem;
  background:
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .18), transparent 22rem),
    linear-gradient(180deg, var(--panel-2), var(--panel));
}
.condition-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .5rem;
}
.condition-choice {
  min-height: 2.45rem;
  text-align: left;
  justify-content: flex-start;
  color: var(--text);
}
.condition-choice.selected {
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .92), rgba(var(--accent-rgb), .44));
  border-color: rgba(var(--accent-rgb), .95);
  color: var(--primary-text, #111);
  font-weight: 800;
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .22);
}
.condition-choice.selected::before {
  content: '✓ ';
}

.compact-ui .condition-field {
  gap: .18rem;
  font-size: .82rem;
}
.compact-ui .condition-picker {
  min-height: 2rem;
  padding: .38rem .48rem;
  border-radius: .48rem;
}

@media (max-width: 760px) {
  .action-quick-buttons { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  .condition-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* V0.7 — Écran joueurs en deux colonnes
   À gauche: le combattant actif bien visible.
   À droite: la liste d'initiative comme avant. */
.player-layout.player-layout-side {
  grid-template-columns: minmax(320px, .85fr) minmax(480px, 1.35fr);
  align-items: start;
}
.player-active-left {
  position: sticky;
  top: 1rem;
  min-height: 22rem;
  display: grid;
  align-content: start;
}
.player-initiative-right {
  min-width: 0;
}
.player-log-panel {
  grid-column: 1 / -1;
}
.active-details {
  display: grid;
  gap: .8rem;
}
.active-stat-grid {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}
.active-hp .hpbar {
  height: 1.15rem;
  margin-top: .35rem;
}
.active-hp .hptext {
  color: var(--muted);
  margin: .35rem 0 0;
  font-size: 1.05rem;
}
.active-conditions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
}
.no-condition {
  margin: 0;
}
.player-active-left .stat-chip {
  font-size: .98rem;
}
.player-active-left .health-state {
  display: inline-flex;
  width: fit-content;
}

.compact-ui.player-body .player-layout.player-layout-side {
  grid-template-columns: minmax(300px, .8fr) minmax(520px, 1.4fr);
}
.compact-ui.player-body .player-active-left {
  min-height: 18rem;
}
.compact-ui.player-body .active-details {
  gap: .55rem;
}
.compact-ui.player-body .active-hp .hpbar {
  height: .9rem;
}
.compact-ui.player-body .active-hp .hptext {
  font-size: .92rem;
}
.compact-ui.player-body .player-active-left .stat-chip {
  font-size: .84rem;
}

@media (max-width: 980px) {
  .player-layout.player-layout-side,
  .compact-ui.player-body .player-layout.player-layout-side {
    grid-template-columns: 1fr;
  }
  .player-active-left {
    position: static;
    min-height: auto;
  }
  .player-log-panel {
    grid-column: auto;
  }
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix {
  display: grid;
  grid-template-columns: 92px 78px minmax(150px, 1fr);
  grid-template-rows: auto;
  align-items: center;
  gap: .42rem .65rem;
  padding: .65rem;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .player-card-portrait {
  width: 88px;
  height: 88px;
  min-height: 88px;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .player-focus-badge {
  position: relative;
  inset: auto;
  width: 68px;
  height: 68px;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .player-focus-badge > span {
  width: 58px;
  height: 58px;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .player-focus-badge.empty-focus > span {
  border: 2px dashed rgba(196,178,255,.42);
  background: radial-gradient(circle, rgba(105,76,145,.2), rgba(22,17,30,.82));
}
.combat-health-name {
  justify-self: center;
  width: fit-content;
  max-width: 100%;
  padding: .28rem .8rem;
  border: 2px solid;
  border-radius: 999px;
  color: #fff;
  font-size: .92rem;
  font-weight: 1000;
  line-height: 1.12;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
}
.combat-health-name-enemy {
  border-color: #ff7771;
  background: #8f2926;
  box-shadow: 0 0 .65rem rgba(255,92,87,.28);
}
.combat-health-name-ally {
  border-color: #69d98b;
  background: #246a3d;
  box-shadow: 0 0 .65rem rgba(105,217,139,.22);
}
.player-body:not(.player-mobile-body).mode-combat .exploration-health-cell {
  grid-template-rows: auto auto 1fr;
  gap: .4rem;
}
.player-body .player-card.creature-card,
.player-body .active-turn-panel.creature-card {
  border: 3px solid #ff5c57 !important;
  background: #351b1b !important;
  box-shadow:
    inset 0 0 0 2px rgba(255,255,255,.08),
    inset 0 0 28px rgba(255,60,55,.18),
    0 0 0 2px rgba(255,92,87,.2),
    0 8px 24px rgba(0,0,0,.35) !important;
}
.player-body .player-card.creature-card.active,
.player-body .active-turn-panel.creature-card.active {
  outline: 3px solid #ffd35c !important;
  outline-offset: 3px;
}

/* V0.8 — Écran MJ: Init/CA/PV près du nom, conditions mises en évidence */
.combatant-title {
  min-width: 0;
  flex: 1;
}
.combatant-name-row {
  display: flex;
  align-items: center;
  gap: .6rem;
  flex-wrap: wrap;
}
.head-stats {
  display: flex;
  align-items: center;
  gap: .35rem;
  flex-wrap: wrap;
}
.stat-chip-head {
  color: var(--text);
  font-weight: 700;
  border-color: rgba(var(--accent-rgb), .48);
  background: rgba(var(--accent-rgb), .14);
}
.condition-strip {
  margin: .55rem 0 .35rem;
}
.condition-strip .condition-picker-main {
  min-height: 2.45rem;
  border-width: 2px;
  border-color: rgba(var(--accent-rgb), .55);
  background:
    linear-gradient(180deg, rgba(var(--accent-rgb), .13), rgba(var(--input-rgb), .68));
  color: var(--muted);
  font-weight: 700;
}
.condition-strip .condition-picker-main::before {
  content: 'Conditions : ';
  color: var(--accent);
  font-weight: 900;
}
.condition-strip .condition-picker-main.has-conditions {
  color: var(--text);
  border-color: rgba(var(--danger-rgb), .88);
  background:
    linear-gradient(180deg, rgba(var(--danger-rgb), .26), rgba(var(--accent-rgb), .12)),
    rgba(var(--input-rgb), .78);
  box-shadow: 0 0 0 2px rgba(var(--danger-rgb), .13);
}

.compact-ui .combatant-name-row {
  gap: .42rem;
}
.compact-ui .head-stats {
  gap: .25rem;
}
.compact-ui .stat-chip-head {
  padding: .13rem .36rem;
  font-size: .75rem;
}
.compact-ui .condition-strip {
  margin: .38rem 0 .18rem;
}
.compact-ui .condition-strip .condition-picker-main {
  min-height: 2.05rem;
  padding: .34rem .46rem;
}

@media (max-width: 720px) {
  .combatant-head {
    align-items: flex-start;
  }
  .combatant-name-row {
    align-items: flex-start;
  }
}

/* V0.9 — Affichage des PV déplacé dans les paramètres MJ + page joueurs mobile séparée */
.settings-hint {
  margin: -.45rem 0 .15rem;
  color: var(--muted);
  font-size: .86rem;
  line-height: 1.35;
}
.player-layout.player-layout-mobile,
.compact-ui.player-body .player-layout.player-layout-mobile {
  display: grid;
  grid-template-columns: 1fr;
  max-width: 760px;
  padding: .7rem;
  gap: .7rem;
}
.player-mobile-body .player-hero {
  padding: .8rem;
  align-items: stretch;
  flex-direction: column;
}
.player-mobile-body .player-actions {
  justify-content: flex-start;
}
.player-mobile-body .player-actions .button,
.player-mobile-body .player-actions button,
.player-mobile-body .round-badge {
  min-height: 2.45rem;
}
.player-active-mobile {
  position: static;
  min-height: auto;
}
.player-mobile-body .active-turn-panel h2 {
  font-size: clamp(1.8rem, 9vw, 3.2rem);
}
.player-mobile-body .player-card,
.compact-ui.player-mobile-body .player-card {
  grid-template-columns: 1fr;
  gap: .45rem;
  padding: .7rem;
  border-radius: .85rem;
}
.player-mobile-body .player-card h3,
.compact-ui.player-mobile-body .player-card h3 {
  font-size: 1.1rem;
}
.player-mobile-body .player-card .hpbar {
  height: .85rem;
}
.player-mobile-body .player-log-panel .log,
.compact-ui.player-mobile-body .player-log-panel .log {
  max-height: 260px;
}
.player-mobile-body .settings-dialog {
  width: min(96vw, 760px);
}
.player-mobile-body .theme-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* V0.11 — Portraits locaux pour PJ, PNJ et monstres */
.combatant-head {
  align-items: flex-start;
}
.combatant-title {
  flex: 1;
  min-width: 0;
}
.portrait-button {
  width: 3.35rem;
  height: 3.35rem;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  padding: 0;
  overflow: hidden;
  border-radius: .85rem;
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(0,0,0,.18));
  border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
  position: relative;
}
.portrait-button:hover {
  filter: brightness(1.18);
  transform: translateY(-1px);
}
.combatant-portrait,
.portrait-button img,
.player-card-portrait img,
.active-portrait img,
.portrait-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.portrait-initials,
.portrait-empty span,
.portrait-preview-empty {
  font-weight: 800;
  color: var(--text);
  letter-spacing: .03em;
  text-shadow: 0 1px 3px rgba(0,0,0,.55);
}
.portrait-card {
  max-width: 660px;
}
.portrait-preview {
  width: min(100%, 340px);
  aspect-ratio: 1 / 1;
  margin: .3rem auto .7rem;
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--line));
  border-radius: 1rem;
  overflow: hidden;
  background: rgba(0,0,0,.25);
  display: grid;
  place-items: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04), 0 10px 25px rgba(0,0,0,.25);
}
.portrait-preview-empty {
  font-size: 5rem;
  color: var(--accent);
}
.active-portrait {
  width: min(100%, 360px);
  aspect-ratio: 1 / 1;
  margin: .4rem auto 1rem;
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--line));
  border-radius: 1.1rem;
  overflow: hidden;
  background: rgba(0,0,0,.22);
  display: grid;
  place-items: center;
  box-shadow: 0 12px 28px rgba(0,0,0,.28);
  position: relative;
}
.active-portrait.portrait-empty span {
  font-size: clamp(3rem, 8vw, 6rem);
  color: var(--accent);
}
.player-card {
  grid-template-columns: 4.6rem minmax(150px, 1fr) minmax(220px, 2fr) auto;
}
.player-card-portrait {
  width: 4.25rem;
  aspect-ratio: 1 / 1;
  border-radius: .9rem;
  overflow: hidden;
  border: 1px solid var(--line);
  background: rgba(0,0,0,.22);
  display: grid;
  place-items: center;
  position: relative;
}
.creature-token-number {
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  z-index:5;
  min-width:1.75em;
  height:1.75em;
  padding:0 .2em;
  display:grid;
  place-items:center;
  border:.12em solid #fff4c7;
  border-radius:999px;
  color:#fff;
  background:rgba(116,12,12,.9);
  box-shadow:0 0 0 .13em rgba(0,0,0,.75),0 .16em .4em rgba(0,0,0,.9);
  font-size:1.45rem;
  font-weight:1000;
  line-height:1;
  text-shadow:0 2px 2px #000;
  pointer-events:none;
}
.active-portrait .creature-token-number { font-size:clamp(3.2rem,9vw,7rem); }
.player-card-portrait .creature-token-number { font-size:1.65rem; }
.player-card-portrait.portrait-empty span {
  font-size: 1.35rem;
  color: var(--accent);
}
.player-mobile-body .active-portrait {
  max-width: 260px;
}
.player-mobile-body .player-card-portrait {
  width: 3.7rem;
}

@media (max-width: 720px) {
  .player-card {
    grid-template-columns: 4rem minmax(0, 1fr);
  }
  .player-card > div:nth-child(3),
  .player-card > div:nth-child(4) {
    grid-column: 1 / -1;
  }
  .portrait-button {
    width: 3rem;
    height: 3rem;
  }
}


/* V0.12 — Portraits automatiques de créatures + barres de vie joueurs plus lisibles */
.player-card {
  grid-template-columns: 4.6rem minmax(180px, 1fr) auto;
}
.player-card-main {
  min-width: 0;
}
.player-card-status {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .45rem;
}
.player-card-hp {
  grid-column: 1 / -1;
  width: 100%;
}
.player-card-hp .hpbar {
  width: 100%;
  height: 1.35rem;
  margin-top: .2rem;
}
.player-card-hp .hptext {
  margin: .32rem 0 0;
  font-size: 1.02rem;
  color: var(--muted);
}
.active-hp .hpbar {
  width: 100%;
  height: 1.75rem;
  margin-top: .45rem;
}
.active-hp .hptext {
  font-size: 1.18rem;
  font-weight: 750;
}
.player-active-left .active-hp,
.player-active-mobile .active-hp {
  width: 100%;
}
.compact-ui.player-body .player-card-hp .hpbar {
  height: 1.15rem;
}
.compact-ui.player-body .active-hp .hpbar {
  height: 1.45rem;
}
.font-size-large .player-card-hp .hpbar,
.font-size-huge .player-card-hp .hpbar {
  height: 1.55rem;
}
.font-size-large .active-hp .hpbar,
.font-size-huge .active-hp .hpbar {
  height: 2rem;
}
.player-mobile-body .player-card-hp .hpbar,
.compact-ui.player-mobile-body .player-card-hp .hpbar {
  height: 1.35rem;
}

@media (max-width: 720px) {
  .player-card,
  .compact-ui.player-body .player-card {
    grid-template-columns: 4rem minmax(0, 1fr);
  }
  .player-card-status {
    grid-column: 1 / -1;
    justify-content: flex-start;
  }
  .player-card-hp {
    grid-column: 1 / -1;
  }
}


/* V0.13 — Écran joueurs: plus de CA, conditions collées au nom + portraits PJ automatiques */
#activeName .player-name-row {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-wrap: wrap;
}
#activeName .player-name-row > span {
  line-height: 1.05;
}
.player-name-row {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-wrap: wrap;
  min-width: 0;
}
.player-name-row h3 {
  margin: 0;
}
.condition-chip.name-condition {
  border-color: rgba(var(--danger-rgb), .82);
  background:
    linear-gradient(180deg, rgba(var(--danger-rgb), .24), rgba(var(--accent-rgb), .12)),
    rgba(var(--input-rgb), .72);
  color: var(--text);
  font-weight: 850;
  max-width: min(32rem, 100%);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.player-card {
  grid-template-columns: 4.6rem minmax(180px, 1fr);
}
.player-card-main {
  min-width: 0;
}
.player-card-status {
  display: none;
}
.player-card-hp {
  grid-column: 1 / -1;
}
.player-mobile-body .player-name-row {
  align-items: flex-start;
}
.player-mobile-body .condition-chip.name-condition {
  white-space: normal;
}
.font-size-large .condition-chip.name-condition,
.font-size-huge .condition-chip.name-condition {
  white-space: normal;
}

/* V0.15 — Mise en évidence des créatures / monstres
   Les combattants de type Monstre reçoivent une bordure et une lueur distinctes.
   La couleur est contrôlée par Paramètres > Couleur des créatures côté MJ. */
:root,
html.creature-highlight-red {
  --creature-rgb: 255, 88, 88;
  --creature-text-rgb: 255, 224, 224;
}
html.creature-highlight-orange {
  --creature-rgb: 255, 151, 54;
  --creature-text-rgb: 255, 232, 206;
}
html.creature-highlight-purple {
  --creature-rgb: 198, 128, 255;
  --creature-text-rgb: 239, 222, 255;
}
html.creature-highlight-blue {
  --creature-rgb: 91, 169, 255;
  --creature-text-rgb: 220, 238, 255;
}
html.creature-highlight-green {
  --creature-rgb: 104, 219, 130;
  --creature-text-rgb: 221, 255, 228;
}
html.creature-highlight-none {
  --creature-rgb: var(--accent-rgb);
  --creature-text-rgb: var(--accent-rgb);
}

html:not(.creature-highlight-none) .combatant-card.creature-card,
html:not(.creature-highlight-none) .player-card.creature-card,
html:not(.creature-highlight-none) .active-turn-panel.creature-card {
  border-color: rgba(var(--creature-rgb), .92);
  box-shadow:
    inset .42rem 0 0 rgba(var(--creature-rgb), .88),
    0 0 0 1px rgba(var(--creature-rgb), .18),
    0 10px 25px var(--shadow);
  background:
    linear-gradient(90deg, rgba(var(--creature-rgb), .20), rgba(var(--input-rgb), .60) 36%, rgba(var(--input-rgb), .54)),
    rgba(var(--input-rgb), .58);
}

html:not(.creature-highlight-none) .combatant-card.creature-card.active,
html:not(.creature-highlight-none) .player-card.creature-card.active,
html:not(.creature-highlight-none) .active-turn-panel.creature-card {
  outline-color: rgb(var(--creature-rgb));
  border-color: rgb(var(--creature-rgb));
  background:
    linear-gradient(90deg, rgba(var(--creature-rgb), .30), rgba(var(--panel-rgb), .94) 42%, rgba(var(--panel-rgb), .92)),
    rgba(var(--panel-rgb), .9);
}

html:not(.creature-highlight-none) .combatant-card.creature-card .portrait-button,
html:not(.creature-highlight-none) .player-card.creature-card .player-card-portrait,
html:not(.creature-highlight-none) .active-turn-panel.creature-card .active-portrait {
  border-color: rgba(var(--creature-rgb), .95);
  box-shadow: 0 0 0 2px rgba(var(--creature-rgb), .18);
}

html:not(.creature-highlight-none) .combatant-card.creature-card .meta-line.creature-meta,
html:not(.creature-highlight-none) .player-card.creature-card .player-card-main p,
html:not(.creature-highlight-none) .active-turn-panel.creature-card .stat-chip:first-child {
  color: rgb(var(--creature-text-rgb));
  font-weight: 800;
}

html:not(.creature-highlight-none) .combatant-card.creature-card .meta-line.creature-meta::before,
html:not(.creature-highlight-none) .player-card.creature-card .player-card-main p::before {
  content: '⚠ ';
  color: rgb(var(--creature-rgb));
}

html:not(.creature-highlight-none) .combatant-card.creature-card .stat-chip-head,
html:not(.creature-highlight-none) .player-card.creature-card .stat-chip,
html:not(.creature-highlight-none) .active-turn-panel.creature-card .stat-chip {
  border-color: rgba(var(--creature-rgb), .56);
}

html:not(.creature-highlight-none) .combatant-card.creature-card .condition-picker-main:not(.has-conditions) {
  border-color: rgba(var(--creature-rgb), .52);
}

html:not(.creature-highlight-none) .combatant-card.creature-card .condition-picker-main:not(.has-conditions)::before {
  color: rgb(var(--creature-rgb));
}

html.creature-highlight-none .combatant-card.creature-card,
html.creature-highlight-none .player-card.creature-card,
html.creature-highlight-none .active-turn-panel.creature-card {
  box-shadow: 0 10px 25px var(--shadow);
}


.creature-lookup-info {
  min-height: 0;
  padding: .45rem .65rem;
  border: 1px dashed color-mix(in srgb, var(--line), var(--accent) 30%);
  border-radius: .75rem;
  color: var(--muted);
  background: color-mix(in srgb, var(--panel-2), transparent 35%);
  font-size: .92em;
}
.creature-lookup-info:empty {
  display: none;
}
.creature-lookup-info.found {
  border-style: solid;
  color: var(--text);
  background: color-mix(in srgb, var(--accent), var(--panel-2) 82%);
}

/* V0.17 — palette visuelle pour la couleur des monstres/créatures */
.creature-highlight-setting {
  border: 1px solid rgba(var(--creature-rgb), .28);
  border-radius: 1rem;
  padding: .75rem;
  background:
    linear-gradient(135deg, rgba(var(--creature-rgb), .12), rgba(var(--input-rgb), .34)),
    rgba(var(--input-rgb), .22);
}
.creature-highlight-setting > p {
  font-weight: 850;
  color: var(--text);
}
.creature-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.creature-choice {
  --choice-rgb: 255, 88, 88;
  min-height: 3.1rem;
  position: relative;
  overflow: hidden;
  border-color: rgba(var(--choice-rgb), .46);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.creature-choice::before {
  content: '';
  width: 1.05rem;
  height: 1.05rem;
  flex: 0 0 auto;
  border-radius: 999px;
  background: rgb(var(--choice-rgb));
  box-shadow: 0 0 0 .22rem rgba(var(--choice-rgb), .18), 0 0 1rem rgba(var(--choice-rgb), .45);
}
.creature-choice:has(input:checked) {
  outline: 3px solid rgb(var(--choice-rgb));
  outline-offset: 2px;
  border-color: rgb(var(--choice-rgb));
  box-shadow: 0 0 0 5px rgba(var(--choice-rgb), .18), inset 0 0 0 1px rgba(255,255,255,.16);
}
.creature-swatch-red {
  --choice-rgb: 255, 88, 88;
  background: linear-gradient(135deg, #220b0b, #ff5858);
}
.creature-swatch-orange {
  --choice-rgb: 255, 151, 54;
  background: linear-gradient(135deg, #211006, #ff9736);
}
.creature-swatch-purple {
  --choice-rgb: 198, 128, 255;
  background: linear-gradient(135deg, #170b24, #c680ff);
}
.creature-swatch-blue {
  --choice-rgb: 91, 169, 255;
  background: linear-gradient(135deg, #071426, #5ba9ff);
}
.creature-swatch-green {
  --choice-rgb: 104, 219, 130;
  background: linear-gradient(135deg, #071a0d, #68db82);
}
.creature-swatch-none {
  --choice-rgb: 220, 220, 220;
  background:
    repeating-linear-gradient(135deg, rgba(255,255,255,.18) 0 9px, rgba(0,0,0,.18) 9px 18px),
    linear-gradient(135deg, #111, #555);
}
.creature-swatch-none::before {
  background: transparent;
  border: 2px solid rgba(255,255,255,.86);
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.45), 0 0 0 .22rem rgba(255,255,255,.12);
}

@media (max-width: 820px) {
  .creature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .creature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* V0.18 — Écran MJ: boutons d’action regroupés dans l’en-tête */
.combatant-action-group {
  justify-content: flex-end;
  align-items: center;
  flex-wrap: wrap;
  gap: .42rem;
  margin-left: .5rem;
}
.combatant-action-group .combat-action {
  min-height: 2.15rem;
  padding: .38rem .58rem;
  border-radius: .7rem;
  font-weight: 850;
  letter-spacing: .01em;
  box-shadow: 0 2px 0 rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.08);
}
.combatant-action-group .action-damage {
  background: linear-gradient(180deg, rgba(220, 72, 64, .92), rgba(122, 28, 25, .92));
  border-color: rgba(255, 145, 136, .82);
  color: #fff7f4;
}
.combatant-action-group .action-heal {
  background: linear-gradient(180deg, rgba(76, 170, 94, .92), rgba(27, 97, 49, .92));
  border-color: rgba(151, 235, 161, .78);
  color: #f4fff4;
}
.combatant-action-group .action-temp {
  background: linear-gradient(180deg, rgba(77, 148, 226, .94), rgba(32, 78, 150, .94));
  border-color: rgba(160, 211, 255, .82);
  color: #f4fbff;
}
.combatant-action-group .action-visible {
  min-width: 2.45rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .28), rgba(var(--button-bg-rgb), .92));
}
.combatant-action-group .action-delete {
  min-width: 2.45rem;
}
.combatant-action-group .combat-action:hover {
  filter: brightness(1.13) saturate(1.05);
  transform: translateY(-1px);
}
.compact-ui .combatant-action-group {
  gap: .28rem;
}
.compact-ui .combatant-action-group .combat-action {
  min-height: 1.9rem;
  padding: .26rem .42rem;
  border-radius: .55rem;
  font-size: .78rem;
}
@media (max-width: 900px) {
  .combatant-head {
    align-items: flex-start;
  }
  .combatant-action-group {
    margin-left: 0;
  }
}

/* Préparation des créatures avant le déclenchement de l’initiative. */
body.mode-exploration .combatant-drawer-panel { display: grid !important; }
html.mj-add-combatant-open body.mode-exploration .layout-mj,
html.mj-add-combatant-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(25rem,430px) minmax(0,1fr) 4.25rem 4.25rem;
}
html.mj-add-combatant-open body.mode-exploration .mj-left-dock {
  height: calc(100vh - 5.75rem);
  max-height: calc(100vh - 5.75rem);
}
html.mj-add-combatant-open body.mode-exploration .mj-left-dock .dice-drawer-panel,
html.mj-add-combatant-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
  display: none;
}
@media (max-width: 1240px) {
  html.mj-add-combatant-open body.mode-exploration .layout-mj { grid-template-columns: 1fr; }
  html.mj-add-combatant-open body.mode-exploration .mj-left-dock { height: auto; max-height: none; }
}
@media (max-width: 720px) {
  .combatant-action-group {
    width: 100%;
    justify-content: stretch;
  }
  .combatant-action-group .combat-action {
    flex: 1 1 5.8rem;
  }
  .combatant-action-group .action-visible,
  .combatant-action-group .action-delete {
    flex: 0 0 3rem;
  }
}

/* V0.19 — Date et heure de jeu */
.campaign-clock-button,
.campaign-clock-display {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: .1rem;
  min-width: 10.5rem;
  border: 1px solid rgba(var(--accent-rgb), .48);
  background:
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .18), transparent 12rem),
    linear-gradient(180deg, rgba(var(--button-hover-rgb), .96), rgba(var(--button-bg-rgb), .96));
  border-radius: .9rem;
  padding: .45rem .7rem;
  color: var(--text);
  box-shadow: 0 2px 0 rgba(0,0,0,.24);
}

.campaign-clock-display {
  cursor: default;
}

.clock-label {
  color: var(--muted);
  font-size: .72rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  line-height: 1;
}

.campaign-clock-button strong,
.campaign-clock-display strong {
  color: var(--accent);
  font-size: .98rem;
  line-height: 1.15;
  white-space: nowrap;
}

.clock-card {
  display: grid;
  gap: 1rem;
}

.clock-edit-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr);
  gap: .75rem;
}

.clock-quick-actions {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .45rem;
}

.clock-quick-actions button {
  padding: .55rem .35rem;
}

@media (max-width: 760px) {
  .campaign-clock-button,
  .campaign-clock-display {
    width: 100%;
  }
  .clock-edit-grid,
  .clock-quick-actions {
    grid-template-columns: 1fr;
  }
}

/* V0.20 — calendrier grégorien configuré */
.field-hint {
  display: block;
  margin-top: .3rem;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.25;
}

.clock-quick-actions {
  grid-template-columns: repeat(auto-fit, minmax(7rem, 1fr));
}

.settings-sample {
  margin: -0.35rem 0 0.65rem;
  padding: 0.7rem 0.85rem;
  border: 1px solid var(--border-strong);
  border-radius: 12px;
  background: rgba(255,255,255,0.07);
  color: var(--text);
  font-weight: 800;
}

/* V0.23 — paramètres MJ en deux colonnes + contraste local des bulles d'infos */
body[data-settings-scope="mj"] .settings-dialog {
  width: min(1120px, calc(100vw - 2rem));
}
.settings-layout-two {
  display: grid;
  grid-template-columns: minmax(300px, .9fr) minmax(420px, 1.1fr);
  gap: 1rem;
  align-items: start;
}
.settings-column {
  display: grid;
  gap: .85rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 1rem;
  padding: .9rem;
  background: rgba(var(--input-rgb), .18);
}
.settings-column h3 {
  margin: 0 0 .15rem;
  color: var(--text);
  font-size: 1.05rem;
}
.settings-column-software h3::before { content: '⚙ '; }
.settings-column-colors h3::before { content: '🎨 '; }

.info-bubble-setting {
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 1rem;
  padding: .75rem;
  background:
    linear-gradient(135deg, rgba(var(--accent-rgb), .11), rgba(var(--input-rgb), .34)),
    rgba(var(--input-rgb), .22);
}
.info-bubble-setting > p {
  font-weight: 850;
  color: var(--text);
}
.bubble-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.bubble-choice {
  --bubble-choice-bg: rgba(255,255,255,.08);
  --bubble-choice-border: rgba(255,255,255,.4);
  --bubble-choice-text: #fff;
  background: var(--bubble-choice-bg);
  border-color: var(--bubble-choice-border);
  color: var(--bubble-choice-text);
  text-shadow: 0 1px 2px rgba(0,0,0,.7);
}
.bubble-choice::before {
  content: '';
  width: 1.05rem;
  height: 1.05rem;
  flex: 0 0 auto;
  border-radius: 999px;
  background: var(--bubble-choice-text);
  border: 2px solid var(--bubble-choice-border);
  box-shadow: 0 0 0 .22rem rgba(255,255,255,.12);
}
.bubble-choice:has(input:checked) {
  outline: 3px solid var(--bubble-choice-border);
  outline-offset: 2px;
  box-shadow: 0 0 0 5px rgba(255,255,255,.12), inset 0 0 0 1px rgba(255,255,255,.16);
}
.bubble-swatch-theme { --bubble-choice-bg: linear-gradient(135deg, rgba(var(--accent-rgb), .25), rgba(var(--panel-rgb), .85)); --bubble-choice-border: var(--accent); --bubble-choice-text: var(--text); }
.bubble-swatch-light { --bubble-choice-bg: linear-gradient(135deg, #f7f2e8, #d8c7a6); --bubble-choice-border: #fff7df; --bubble-choice-text: #1e160a; text-shadow: none; }
.bubble-swatch-dark { --bubble-choice-bg: linear-gradient(135deg, #151515, #333); --bubble-choice-border: #bfbfbf; --bubble-choice-text: #ffffff; }
.bubble-swatch-white { --bubble-choice-bg: linear-gradient(135deg, #ffffff, #dddddd); --bubble-choice-border: #ffffff; --bubble-choice-text: #000000; text-shadow: none; }
.bubble-swatch-yellow { --bubble-choice-bg: linear-gradient(135deg, #ffe600, #c59d00); --bubble-choice-border: #fff6a0; --bubble-choice-text: #171000; text-shadow: none; }
.bubble-swatch-cyan { --bubble-choice-bg: linear-gradient(135deg, #00e5ff, #027a8b); --bubble-choice-border: #9af6ff; --bubble-choice-text: #001013; text-shadow: none; }
.bubble-swatch-purple { --bubble-choice-bg: linear-gradient(135deg, #c680ff, #4b1b70); --bubble-choice-border: #e0b8ff; --bubble-choice-text: #ffffff; }
.bubble-swatch-black { --bubble-choice-bg: linear-gradient(135deg, #000000, #202020); --bubble-choice-border: #ffffff; --bubble-choice-text: #ffffff; }

html.info-bubbles-light {
  --info-chip-bg: #f7f2e8;
  --info-chip-border: #fff7df;
  --info-chip-text: #1e160a;
}
html.info-bubbles-dark {
  --info-chip-bg: #161616;
  --info-chip-border: #d9d9d9;
  --info-chip-text: #ffffff;
}
html.info-bubbles-white {
  --info-chip-bg: #ffffff;
  --info-chip-border: #ffffff;
  --info-chip-text: #000000;
}
html.info-bubbles-yellow {
  --info-chip-bg: #ffe600;
  --info-chip-border: #fff6a0;
  --info-chip-text: #120d00;
}
html.info-bubbles-cyan {
  --info-chip-bg: #00e5ff;
  --info-chip-border: #a8f8ff;
  --info-chip-text: #001216;
}
html.info-bubbles-purple {
  --info-chip-bg: #5b1f82;
  --info-chip-border: #e0b8ff;
  --info-chip-text: #ffffff;
}
html.info-bubbles-black {
  --info-chip-bg: #000000;
  --info-chip-border: #ffffff;
  --info-chip-text: #ffffff;
}
html:not(.info-bubbles-theme) .stat-chip,
html:not(.info-bubbles-theme) .stat-chip-head,
html:not(.info-bubbles-theme) .round-pill,
html:not(.info-bubbles-theme) .round-badge {
  background: var(--info-chip-bg) !important;
  border-color: var(--info-chip-border) !important;
  color: var(--info-chip-text) !important;
  text-shadow: none;
  font-weight: 800;
}
html:not(.info-bubbles-theme) .condition-chip {
  background: var(--info-chip-bg) !important;
  border-color: var(--info-chip-border) !important;
  color: var(--info-chip-text) !important;
}
html:not(.info-bubbles-theme) .settings-preview .stat-chip {
  display: inline-flex;
  margin: .1rem .15rem .1rem 0;
}
.hpbar-state {
  margin-top: .35rem;
}

@media (max-width: 900px) {
  .settings-layout-two { grid-template-columns: 1fr; }
  .bubble-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* V0.24 — Statut Vaincu / Mort
   Les combattants vaincus restent visibles, mais ils sont clairement marqués et sautés dans l'initiative. */
.combatant-card,
.player-card,
.active-turn-panel {
  position: relative;
  overflow: hidden;
}

.action-defeat {
  min-width: 2.45rem;
  background: linear-gradient(180deg, rgba(var(--danger-rgb), .62), rgba(var(--danger-rgb), .30));
  border-color: rgba(var(--danger-rgb), .88);
  color: var(--text);
  font-weight: 950;
}
.action-defeat.action-revive {
  background: linear-gradient(180deg, rgba(104, 219, 130, .58), rgba(91, 169, 255, .28));
  border-color: rgba(104, 219, 130, .88);
}

.defeated-chip,
.stat-chip.defeated-chip {
  border-color: rgba(var(--danger-rgb), .88);
  background: linear-gradient(180deg, rgba(var(--danger-rgb), .34), rgba(var(--danger-rgb), .14));
  color: #fff1ef;
  font-weight: 950;
}

.combatant-card.defeated-card,
.player-card.defeated-card,
.active-turn-panel.defeated-card,
html:not(.creature-highlight-none) .combatant-card.creature-card.defeated-card,
html:not(.creature-highlight-none) .player-card.creature-card.defeated-card,
html:not(.creature-highlight-none) .active-turn-panel.creature-card.defeated-card {
  border-color: rgba(var(--danger-rgb), .80);
  box-shadow:
    inset .42rem 0 0 rgba(var(--danger-rgb), .72),
    0 0 0 1px rgba(var(--danger-rgb), .20),
    0 10px 25px var(--shadow);
  background:
    linear-gradient(90deg, rgba(var(--danger-rgb), .18), rgba(var(--input-rgb), .72) 36%, rgba(var(--input-rgb), .58)),
    rgba(var(--input-rgb), .64);
  filter: saturate(.72);
}

.combatant-card.defeated-card::after,
.player-card.defeated-card::after,
.active-turn-panel.defeated-card::after {
  content: '✕';
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: rgba(var(--danger-rgb), .30);
  font-size: clamp(5rem, 18vw, 13rem);
  line-height: 1;
  font-weight: 1000;
  text-shadow: 0 0 1.2rem rgba(0,0,0,.65);
  pointer-events: none;
  z-index: 0;
}
.combatant-card.defeated-card > *,
.player-card.defeated-card > *,
.active-turn-panel.defeated-card > * {
  position: relative;
  z-index: 1;
}

.combatant-card.defeated-card .action-damage,
.combatant-card.defeated-card .action-heal,
.combatant-card.defeated-card .action-temp {
  display: none;
}
.combatant-card.defeated-card .hpbar span,
.player-card.defeated-card .hpbar span,
.active-turn-panel.defeated-card .hpbar span {
  width: 0% !important;
  background: rgba(var(--danger-rgb), .75);
}
.combatant-card.defeated-card .condition-strip {
  opacity: .72;
}
.combatant-card.defeated-card .meta-line,
.player-card.defeated-card .player-card-main p {
  color: #fff1ef;
}
.defeated-hp {
  border-color: rgba(var(--danger-rgb), .85);
  background: rgba(var(--danger-rgb), .20);
}

/* V0.26 — connexion des écrans joueurs */
.player-login-gate {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    radial-gradient(circle at top left, color-mix(in srgb, var(--accent) 26%, transparent), transparent 34%),
    linear-gradient(135deg, color-mix(in srgb, var(--bg) 92%, black), color-mix(in srgb, var(--panel) 84%, black));
}

.player-unlocked .player-login-gate {
  display: none;
}

.player-locked > .player-hero,
.player-locked > .player-layout {
  filter: blur(2px);
  pointer-events: none;
  user-select: none;
}

.login-card {
  width: min(520px, 94vw);
  border: 2px solid color-mix(in srgb, var(--accent) 50%, var(--border));
  border-radius: 24px;
  padding: 28px;
  background: color-mix(in srgb, var(--panel) 94%, black);
  box-shadow: 0 30px 90px rgba(0,0,0,.42);
}

.login-card h1 {
  margin: 0 0 12px;
  font-size: 2rem;
}

.login-card label,
.player-identity-settings label,
.player-access-row label {
  display: grid;
  gap: 6px;
  font-weight: 700;
}

.login-card input,
.player-identity-settings input,
.player-access-row input {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 10px 12px;
  background: var(--input-bg, color-mix(in srgb, var(--panel) 80%, white));
  color: var(--text);
  font: inherit;
}

.login-message {
  min-height: 1.4em;
  color: var(--warning, #ffd166);
  font-weight: 700;
}

.player-identity-pill {
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--border));
  background: color-mix(in srgb, var(--accent) 16%, var(--panel));
  border-radius: 999px;
  padding: 8px 12px;
  white-space: nowrap;
  box-shadow: 0 2px 0 rgba(0,0,0,.2);
}

button.player-identity-pill:hover {
  background: color-mix(in srgb, var(--accent) 28%, var(--panel));
  border-color: color-mix(in srgb, var(--accent) 80%, var(--border));
}

button.player-identity-pill:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--accent) 65%, white);
  outline-offset: 2px;
}

.player-identity-row {
  display: flex;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  margin-top: 8px;
}

.player-access-manager {
  margin-top: 24px;
  padding-top: 18px;
  border-top: 1px solid var(--border);
}

.player-access-list {
  display: grid;
  gap: 10px;
  margin-top: 12px;
}

.player-access-row {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) minmax(120px, 1fr) auto;
  gap: 10px;
  align-items: end;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: color-mix(in srgb, var(--panel) 88%, var(--accent));
}

.player-access-remove {
  min-width: 44px;
  min-height: 44px;
}

.player-access-actions {
  justify-content: flex-start;
  margin-top: 12px;
}

@media (max-width: 700px) {
  .player-access-row {
    grid-template-columns: 1fr;
  }
}


/* V0.28 — mode Combat / Exploration posé pour la suite */
.mode-toggle-button,
.mode-badge {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 7.5rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .55);
  background:
    linear-gradient(135deg, rgba(var(--accent-rgb), .24), rgba(var(--panel-rgb), .66)),
    var(--panel);
  color: var(--text);
  line-height: 1.05;
  padding: .48rem .8rem;
  box-shadow: 0 0 0 1px rgba(255,255,255,.04) inset, 0 8px 18px rgba(0,0,0,.18);
}
.mode-toggle-button strong,
.mode-badge strong {
  font-size: 1rem;
  letter-spacing: .01em;
}
.mode-label {
  color: var(--muted);
  font-size: .7rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 850;
}
.mode-toggle-button.mode-combat,
.mode-badge.mode-combat {
  border-color: rgba(239, 99, 88, .8);
  background: linear-gradient(135deg, rgba(142, 38, 30, .74), rgba(var(--panel-rgb), .72));
}
.mode-toggle-button.mode-exploration,
.mode-badge.mode-exploration {
  border-color: rgba(83, 190, 122, .8);
  background: linear-gradient(135deg, rgba(28, 104, 58, .76), rgba(var(--panel-rgb), .72));
}
.player-exploration-panel {
  grid-column: 1 / -1;
}
.mode-combat .player-exploration-panel {
  display: none;
}
.mode-exploration .active-turn-panel,
.mode-exploration .player-initiative-right {
  display: none;
}
.mode-exploration .round-badge {
  opacity: .55;
}
.exploration-scene-text {
  color: var(--text);
  font-size: 1.1rem;
  line-height: 1.45;
  margin-top: -.25rem;
}
.exploration-group {
  display: grid;
  gap: .75rem;
  margin-top: 1rem;
}
.exploration-card {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(240px, .8fr);
  gap: .75rem;
  align-items: center;
  background: rgba(var(--input-rgb), .28);
  border: 1px solid var(--line);
  border-radius: 1rem;
  padding: .75rem;
}
@media (max-width: 760px) {
  .mode-toggle-button,
  .mode-badge,
  .player-actions .mode-badge {
    width: 100%;
  }
  .exploration-card {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .exploration-card .player-card-hp {
    grid-column: 1 / -1;
  }
}

/* V0.29 — bouton Combat / Exploration beaucoup plus visible côté MJ */
.encounter-title-row {
  align-items: center;
}
.panel-subtitle {
  margin: .15rem 0 0;
  color: var(--muted);
  font-size: .88rem;
}
.encounter-mode-actions {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.mode-toggle-main {
  min-width: 13rem;
  padding: .62rem 1rem;
  border-width: 2px;
}
.mode-toggle-main strong {
  font-size: 1.18rem;
}
.mode-toggle-main em {
  color: var(--muted);
  font-style: normal;
  font-size: .72rem;
  margin-top: .16rem;
}
.topbar .mode-toggle-button {
  min-width: 9rem;
}
@media (max-width: 760px) {
  .encounter-title-row,
  .encounter-mode-actions {
    align-items: stretch;
    flex-direction: column;
  }
  .encounter-mode-actions {
    justify-content: stretch;
  }
  .mode-toggle-main {
    width: 100%;
  }
}


/* V0.30 — fenêtre d'initiative au passage Exploration -> Combat */
.initiative-dialog {
  width: min(980px, calc(100vw - 2rem));
}
.initiative-card {
  gap: .85rem;
}
.initiative-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: .8rem 1rem;
  border: 1px solid rgba(var(--accent-rgb), .26);
  border-radius: 1rem;
  background: linear-gradient(135deg, rgba(var(--accent-rgb), .12), rgba(var(--input-rgb), .35));
}
.initiative-help {
  line-height: 1.35;
}
.initiative-list {
  display: grid;
  gap: .55rem;
  max-height: min(58vh, 620px);
  overflow: auto;
  padding-right: .25rem;
}
.initiative-row {
  display: grid;
  grid-template-columns: auto minmax(12rem, 1fr) auto minmax(7.5rem, 9.5rem) minmax(8rem, auto);
  align-items: center;
  gap: .75rem;
  padding: .7rem .8rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-left: .45rem solid rgba(var(--accent-rgb), .55);
  border-radius: 1rem;
  background: rgba(var(--panel-2-rgb), .72);
}
.initiative-row-creature {
  border-left-color: var(--creature-highlight, #e05b52);
  box-shadow: inset 0 0 0 1px rgba(224, 91, 82, .12);
}
.initiative-row-pj { border-left-color: rgba(var(--accent-2-rgb), .95); }
.initiative-row-npc { border-left-color: rgba(var(--accent-rgb), .75); }
.initiative-row-defeated { opacity: .55; }
.initiative-avatar {
  width: 3rem;
  height: 3rem;
  border: 1px solid rgba(var(--accent-rgb), .35);
  border-radius: .8rem;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: rgba(var(--input-rgb), .55);
  font-weight: 900;
}
.initiative-avatar-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.initiative-info {
  display: grid;
  gap: .15rem;
}
.initiative-info strong {
  font-size: 1.08rem;
  color: var(--text);
}
.initiative-info span,
.initiative-current {
  color: var(--muted);
  font-size: .9rem;
}
.initiative-entry {
  display: grid;
  grid-template-columns: minmax(4.5rem, 1fr) 3.1rem;
  align-items: stretch;
  gap: .25rem;
}
.initiative-row input {
  min-height: 3rem;
  text-align: center;
  font-size: 1.25rem;
  font-weight: 900;
}
.initiative-roll-btn {
  min-height: 3rem;
  padding: .3rem .45rem;
  font-size: 1.25rem;
  border-radius: .85rem;
  background: linear-gradient(135deg, rgba(var(--accent-rgb), .95), rgba(var(--accent-2-rgb), .85));
  color: var(--button-text);
  border-color: rgba(var(--text-rgb), .18);
}
.initiative-roll-btn:hover:not(:disabled) {
  filter: brightness(1.08);
  transform: translateY(-1px);
}
.initiative-roll-note {
  color: var(--muted);
  font-size: .88rem;
  min-width: 8rem;
  text-align: right;
}
.initiative-roll-note-flash {
  color: var(--text);
  font-weight: 900;
}
.initiative-empty {
  padding: 1rem;
  border: 1px dashed rgba(var(--accent-rgb), .35);
  border-radius: 1rem;
  color: var(--muted);
  background: rgba(var(--input-rgb), .25);
}
.initiative-actions {
  flex-wrap: wrap;
}
@media (max-width: 760px) {
  .initiative-row {
    grid-template-columns: auto minmax(0, 1fr) minmax(5rem, 7rem);
  }
  .initiative-current,
  .initiative-roll-note { display: none; }
}

/* V0.33 — page Outils joueurs */
.tools-body .player-login-gate[hidden] {
  display: none !important;
}

.tools-body.player-locked .tools-hero,
.tools-body.player-locked .tools-layout {
  display: none !important;
}

.tools-layout {
  width: min(960px, calc(100% - 24px));
  margin: 18px auto 40px;
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(260px, 0.65fr);
  gap: 18px;
}

.initiative-tool-card {
  padding: clamp(18px, 4vw, 30px);
}

.tool-character-match {
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 14px 16px;
  background: var(--panel-2);
  margin: 12px 0 18px;
  box-shadow: var(--shadow-soft);
}

.tool-character-name {
  font-size: 1.25em;
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.tool-character-details {
  margin-top: 6px;
  color: var(--muted);
}

.initiative-tool-form {
  display: grid;
  gap: 16px;
}

.initiative-tool-form label {
  display: grid;
  gap: 8px;
  font-weight: 800;
}

.initiative-tool-form input[type="number"] {
  font-size: clamp(2.2rem, 10vw, 4.5rem);
  text-align: center;
  font-weight: 900;
  padding: 14px;
  border-radius: 20px;
  border: 2px solid var(--accent);
  background: var(--input-bg);
  color: var(--text);
}

.tool-actions-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.tool-actions-row button {
  min-height: 64px;
  font-size: 1.05em;
  font-weight: 900;
}

.initiative-roll-big {
  border-color: var(--accent-2);
  background: linear-gradient(135deg, var(--panel-2), var(--button));
}

.initiative-roll-result,
.initiative-status {
  margin-top: 14px;
  padding: 12px 14px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background: var(--info-bubble-bg);
  color: var(--info-bubble-text);
  font-weight: 800;
  min-height: 24px;
}

.tools-help-card p {
  line-height: 1.45;
}

@media (max-width: 760px) {
  .tools-layout {
    grid-template-columns: 1fr;
    width: min(100% - 16px, 720px);
    margin-top: 10px;
    gap: 12px;
  }

  .tool-actions-row {
    grid-template-columns: 1fr;
  }

  .tool-actions-row button {
    min-height: 58px;
  }

  .tools-hero .player-actions {
    gap: 8px;
  }
}

/* V0.34 — Outils joueurs + messages privés */
.private-chat-bell {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  border: 1px solid var(--border);
  background: var(--panel-2);
  color: var(--text);
  border-radius: 999px;
  padding: .55rem .85rem;
  font-weight: 800;
  box-shadow: var(--shadow-soft);
}
.private-chat-bell.has-unread {
  outline: 3px solid var(--accent);
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--accent) 24%, transparent), var(--shadow-soft);
}
.private-chat-unread {
  min-width: 1.55rem;
  height: 1.55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: var(--danger);
  color: #fff;
  font-size: .88rem;
  padding: 0 .35rem;
}

.tools-hero-v34 {
  align-items: stretch;
  gap: 1rem;
}
.tools-header-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, auto));
  gap: .7rem;
  align-items: stretch;
  justify-content: end;
}
.tools-header-grid > * {
  min-height: 3.25rem;
}
.tools-identity {
  justify-content: center;
  min-width: 10rem;
}
.tools-identity span,
.tools-identity strong {
  display: block;
}
.tools-nav-links {
  display: flex;
  gap: .45rem;
  align-items: center;
  justify-content: flex-end;
}
.tools-layout-v34 {
  align-items: start;
  grid-template-columns: minmax(22rem, .9fr) minmax(24rem, 1.1fr);
}
.tool-expander {
  padding: 0;
  overflow: hidden;
}
.tool-expander > summary {
  list-style: none;
  cursor: pointer;
  padding: 1rem 1.1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  background: var(--panel-2);
  border-bottom: 1px solid var(--border);
}
.tool-expander > summary::-webkit-details-marker { display: none; }
.tool-expander summary strong {
  font-size: 1.15rem;
}
.tool-expander summary em {
  display: block;
  margin-top: .15rem;
  font-style: normal;
  color: var(--muted);
  font-weight: 700;
}
.tool-expand-arrow {
  font-size: 1.65rem;
  font-weight: 900;
  color: var(--accent);
}
.tool-expander[open] .tool-expand-arrow {
  transform: rotate(180deg);
}
.initiative-tool-expander.initiative-requested > summary {
  background: color-mix(in srgb, var(--accent) 18%, var(--panel-2));
  outline: 3px solid color-mix(in srgb, var(--accent) 65%, transparent);
  outline-offset: -3px;
}
.initiative-tool-card-inner {
  padding: 1rem;
}
.private-message-tool-card {
  min-height: 28rem;
  display: flex;
  flex-direction: column;
}
.tool-card-title-row {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: .8rem;
  margin-bottom: .8rem;
}
.chat-status-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .35rem .65rem;
  border-radius: 999px;
  background: var(--info-bubble-bg, var(--panel-2));
  color: var(--info-bubble-text, var(--text));
  border: 1px solid var(--border);
  font-weight: 800;
  white-space: nowrap;
}
.private-chat-log {
  display: flex;
  flex-direction: column;
  gap: .65rem;
  overflow: auto;
  background: color-mix(in srgb, var(--bg) 55%, var(--panel));
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: .8rem;
}
.player-private-chat-log {
  min-height: 18rem;
  max-height: 55vh;
  flex: 1;
}
.chat-bubble {
  max-width: 86%;
  border: 1px solid var(--border);
  border-radius: 1rem;
  padding: .65rem .8rem;
  line-height: 1.35;
  box-shadow: var(--shadow-soft);
}
.chat-bubble.from-player {
  align-self: flex-end;
  background: color-mix(in srgb, var(--accent) 24%, var(--panel));
}
.chat-bubble.from-mj {
  align-self: flex-start;
  background: var(--panel-2);
}
.chat-bubble-meta {
  font-size: .78em;
  color: var(--muted);
  font-weight: 800;
  margin-bottom: .2rem;
}
.private-chat-empty,
.private-chat-empty-tabs {
  color: var(--muted);
  font-weight: 700;
  padding: 1rem;
  text-align: center;
}
.private-message-form,
.private-chat-reply-row {
  display: flex;
  gap: .6rem;
  margin-top: .8rem;
}
.private-message-form input,
.private-chat-reply-row input {
  flex: 1;
}
.private-chat-card {
  width: min(62rem, calc(100vw - 2rem));
  max-height: min(48rem, calc(100vh - 2rem));
}
.private-chat-messenger {
  display: grid;
  grid-template-columns: minmax(13rem, 16rem) minmax(22rem, 1fr);
  gap: .9rem;
  min-height: 30rem;
}
.private-chat-tabs {
  display: flex;
  flex-direction: column;
  gap: .45rem;
  overflow: auto;
  padding-right: .25rem;
  border-right: 1px solid var(--border);
}
.private-chat-tab {
  position: relative;
  text-align: left;
  border: 1px solid var(--border);
  background: var(--panel-2);
  color: var(--text);
  border-radius: .85rem;
  padding: .7rem .75rem;
  display: grid;
  gap: .25rem;
}
.private-chat-tab.active {
  outline: 3px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 16%, var(--panel-2));
}
.private-chat-tab.unread strong::before {
  content: '● ';
  color: var(--danger);
}
.private-chat-tab small {
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.private-chat-tab-badge {
  position: absolute;
  top: .45rem;
  right: .45rem;
  background: var(--danger);
  color: #fff;
  border-radius: 999px;
  min-width: 1.4rem;
  height: 1.4rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .78rem;
  font-weight: 900;
}
.private-chat-thread-panel {
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.private-chat-thread-title {
  font-weight: 900;
  font-size: 1.15rem;
  margin-bottom: .55rem;
}
.mj-private-chat-log {
  flex: 1;
  min-height: 22rem;
  max-height: 50vh;
}

@media (max-width: 800px) {
  .tools-header-grid,
  .tools-layout-v34,
  .private-chat-messenger {
    grid-template-columns: 1fr;
  }
  .tools-nav-links {
    justify-content: stretch;
  }
  .tools-nav-links .button {
    flex: 1;
  }
  .private-chat-tabs {
    border-right: 0;
    border-bottom: 1px solid var(--border);
    padding-right: 0;
    padding-bottom: .7rem;
    max-height: 13rem;
  }
  .private-message-form,
  .private-chat-reply-row {
    flex-direction: column;
  }
  .chat-bubble {
    max-width: 96%;
  }
}

/* V0.35 — images dans le chat privé et code de table */
.private-message-form-with-image,
.private-chat-reply-row-with-image {
  gap: 0.55rem;
}

.chat-attach-btn {
  white-space: nowrap;
  min-width: max-content;
}

.chat-image-hint {
  margin-top: 0.35rem;
}

.chat-image-thumb {
  display: block;
  margin-top: 0.35rem;
  border: 1px solid var(--border);
  border-radius: 0.8rem;
  overflow: hidden;
  background: rgba(0, 0, 0, 0.18);
  max-width: min(100%, 420px);
}

.chat-image-thumb img {
  display: block;
  max-width: 100%;
  max-height: 260px;
  object-fit: contain;
}

.chat-image-caption {
  margin-top: 0.45rem;
  white-space: pre-wrap;
}

.session-code-settings {
  display: grid;
  gap: 0.65rem;
  padding: 0.8rem;
  border: 1px solid var(--border);
  border-radius: 0.9rem;
  background: var(--panel-2);
  margin-bottom: 0.75rem;
}

.checkbox-line {
  display: flex !important;
  align-items: center;
  gap: 0.55rem;
  font-weight: 800;
}

.checkbox-line input {
  width: auto !important;
}

@media (max-width: 720px) {
  .private-message-form-with-image,
  .private-chat-reply-row-with-image {
    grid-template-columns: 1fr;
  }

  .chat-attach-btn,
  .private-message-form-with-image .primary,
  .private-chat-reply-row-with-image .primary {
    width: 100%;
  }
}

/* V0.36 — purge sélective des conversations privées */
.private-chat-head-actions {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.purge-open-btn {
  border-color: color-mix(in srgb, var(--warning, var(--accent)) 55%, var(--border));
}

.purge-chat-card {
  width: min(42rem, calc(100vw - 2rem));
  max-height: min(48rem, calc(100vh - 2rem));
}

.purge-toolbar {
  display: flex;
  gap: 0.55rem;
  flex-wrap: wrap;
  margin-bottom: 0.75rem;
}

.purge-conversation-list {
  display: grid;
  gap: 0.55rem;
  max-height: min(22rem, 45vh);
  overflow: auto;
  padding-right: 0.25rem;
}

.purge-conversation-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem;
  border: 1px solid var(--border);
  border-radius: 0.9rem;
  background: var(--panel-2);
  cursor: pointer;
}

.purge-conversation-row:has(input:checked) {
  outline: 3px solid var(--accent);
  background: color-mix(in srgb, var(--accent) 16%, var(--panel-2));
}

.purge-conversation-row input {
  width: 1.2rem;
  height: 1.2rem;
}

.purge-conversation-main {
  display: grid;
  gap: 0.2rem;
  min-width: 0;
}

.purge-conversation-main strong,
.purge-conversation-main small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.purge-conversation-main small,
.purge-conversation-date {
  color: var(--muted);
  font-size: 0.9em;
}

.purge-options {
  display: grid;
  gap: 0.6rem;
  margin-top: 0.85rem;
  padding: 0.8rem;
  border: 1px solid var(--border);
  border-radius: 0.9rem;
  background: color-mix(in srgb, var(--panel-2) 84%, var(--bg));
}

.check-row {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  font-weight: 800;
}

.check-row input {
  width: 1.15rem;
  height: 1.15rem;
}

.danger-hint {
  color: color-mix(in srgb, var(--danger) 75%, var(--text));
  font-weight: 800;
}

@media (max-width: 720px) {
  .purge-conversation-row {
    grid-template-columns: auto 1fr;
  }
  .purge-conversation-date {
    grid-column: 2;
  }
  .private-chat-head-actions {
    width: 100%;
  }
  .private-chat-head-actions button {
    flex: 1;
  }
}

/* V0.37 — confirmations propres et suivi initiative joueur */
.purge-chat-confirm-card {
  max-width: 680px;
}
.purge-confirm-details {
  border: 1px solid var(--border);
  background: var(--panel-2);
  border-radius: 18px;
  padding: 1rem;
  margin: 1rem 0;
}
.purge-confirm-selection {
  font-size: 1.05rem;
  margin-bottom: .65rem;
}
.purge-confirm-list {
  margin: 0;
  padding-left: 1.25rem;
  color: var(--text);
}
.purge-status {
  min-height: 1.5rem;
  color: var(--text);
  font-weight: 700;
  margin-top: .65rem;
}
.initiative-last-sent {
  border: 1px solid var(--border);
  background: var(--info-bubble-bg, var(--panel-2));
  color: var(--info-bubble-text, var(--text));
  border-radius: 16px;
  padding: .65rem .85rem;
  margin: .75rem 0;
  font-weight: 700;
}
.initiative-last-sent[hidden] {
  display: none !important;
}

.app-version {
  display: inline-flex;
  align-items: center;
  margin-left: .6rem;
  padding: .16rem .45rem;
  border: 1px solid rgba(var(--accent-rgb), .35);
  border-radius: 999px;
  color: var(--muted);
  background: rgba(var(--panel-2-rgb), .7);
  font-size: .82rem;
  font-weight: 800;
  vertical-align: middle;
}
.initiative-input-flash {
  box-shadow: 0 0 0 .18rem rgba(var(--accent-2-rgb), .45), 0 0 1.1rem rgba(var(--accent-2-rgb), .35);
}

/* V0.44 — Outils : date/heure intégrée à la bulle de mode */
.tools-mode-badge {
  min-width: 12rem;
  padding-top: .55rem;
  padding-bottom: .55rem;
  gap: .12rem;
}
.tools-mode-badge .mode-clock {
  display: block;
  margin-top: .18rem;
  color: rgba(var(--text-rgb), .88);
  font-weight: 800;
  font-size: .82rem;
  line-height: 1.05;
  white-space: nowrap;
}
.tools-header-grid {
  grid-template-columns: repeat(2, minmax(0, auto));
}
@media (max-width: 760px) {
  .tools-header-grid {
    grid-template-columns: 1fr;
    justify-content: stretch;
  }
  .tools-mode-badge,
  .tools-identity {
    width: 100%;
  }
}

/* V0.44 — le combattant actif reste visible en haut de l'écran MJ */
.combatant-card.active {
  border-width: 2px;
  box-shadow:
    0 0 0 2px rgba(var(--accent-rgb), .24),
    0 0 22px rgba(var(--accent-rgb), .42);
  scroll-margin-top: 1rem;
}

.combatant-card.active .combatant-name-row::before {
  content: "▶ TOUR ACTIF";
  display: inline-flex;
  align-items: center;
  align-self: center;
  background: rgba(var(--accent-rgb), .28);
  border: 1px solid rgba(var(--accent-rgb), .72);
  color: var(--text);
  border-radius: 999px;
  padding: .22rem .55rem;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .03em;
  white-space: nowrap;
}

/* V0.45 — démarrage de combat en deux temps */
.mode-exploration #prevTurn,
.mode-exploration #nextTurn {
  display: none !important;
}

#initiativeSubmit:disabled {
  opacity: .45;
  cursor: not-allowed;
  filter: grayscale(.25);
}

.initiative-required-hint {
  border: 1px solid rgba(var(--danger-rgb), .35);
  background: rgba(var(--danger-rgb), .10);
  border-radius: .75rem;
  padding: .55rem .7rem;
}

.initiative-required-hint.initiative-ready {
  border-color: rgba(var(--accent-2-rgb), .45);
  background: rgba(var(--accent-2-rgb), .12);
}

/* V0.49 — actif fortement contrasté, sans sortir de la palette */
.layout-mj .combatant-card.active {
  background:
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .22), transparent 22rem),
    linear-gradient(180deg, var(--primary-bg, var(--accent)), var(--primary-border, var(--accent)));
  color: var(--primary-text, #111);
  border: 3px solid var(--primary-border, var(--accent));
  outline: 3px solid rgba(var(--accent-rgb), .55);
  outline-offset: 2px;
  box-shadow:
    0 0 0 3px rgba(var(--bg-rgb), .95),
    0 0 26px rgba(var(--accent-rgb), .62);
}

.layout-mj .combatant-card.active h3,
.layout-mj .combatant-card.active .meta-line,
.layout-mj .combatant-card.active .muted,
.layout-mj .combatant-card.active label,
.layout-mj .combatant-card.active .combatant-name-row,
.layout-mj .combatant-card.active .combatant-title,
.layout-mj .combatant-card.active .head-stats {
  color: var(--primary-text, #111) !important;
}

.layout-mj .combatant-card.active .stat-chip,
.layout-mj .combatant-card.active .condition-field {
  background: rgba(255,255,255,.32);
  border-color: rgba(0,0,0,.28);
  color: var(--primary-text, #111) !important;
}

.layout-mj .combatant-card.active input,
.layout-mj .combatant-card.active textarea,
.layout-mj .combatant-card.active select {
  background: rgba(255,255,255,.88);
  color: #101010;
  border-color: rgba(0,0,0,.35);
}

.layout-mj .combatant-card.active .combatant-name-row::before {
  background: rgba(0,0,0,.78);
  border-color: rgba(0,0,0,.88);
  color: #fff !important;
  box-shadow: 0 0 0 2px rgba(255,255,255,.28);
}

/* V0.49 — section Ajouter un combattant repliée par défaut */
.collapsible-panel {
  padding: 0;
  overflow: hidden;
}

.collapsible-panel-title {
  width: 100%;
  border: 0;
  border-radius: 1rem;
  background:
    linear-gradient(90deg, rgba(var(--panel-2-rgb), .98), rgba(var(--panel-rgb), .95)),
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .12), transparent 16rem);
  color: var(--text);
  padding: .9rem 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 1.15rem;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
}

.collapsible-panel-title:hover,
.collapsible-panel-title:focus-visible {
  outline: 3px solid rgba(var(--accent-rgb), .42);
  outline-offset: -3px;
}

.collapsible-panel-icon {
  color: var(--accent);
  font-size: 1.25rem;
}

.collapsible-panel-body {
  padding: 0 1rem 1rem;
}

.collapsible-panel:not(.collapsed) .collapsible-panel-title {
  border-bottom-left-radius: 0;
  border-bottom-right-radius: 0;
  border-bottom: 1px solid rgba(var(--accent-rgb), .25);
  margin-bottom: .85rem;
}

/* V0.49 — écran joueurs PC: actif collé à gauche + initiative compacte en deux colonnes */
.player-body:not(.player-mobile-body) .player-layout.player-layout-side {
  max-width: none;
  width: 100%;
  margin: 0;
  padding: 1rem;
  grid-template-columns: minmax(320px, 28rem) minmax(0, 1fr);
  gap: 1rem;
}

.player-body:not(.player-mobile-body) .player-active-left {
  grid-column: 1;
  width: 100%;
  min-height: 0;
  position: sticky;
  top: 1rem;
}

.player-body:not(.player-mobile-body) .player-initiative-right {
  grid-column: 2;
  width: 100%;
  min-width: 0;
}

.player-body:not(.player-mobile-body) .player-log-panel {
  grid-column: 1 / -1;
}

.player-body:not(.player-mobile-body) .player-combatants {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
  align-items: start;
}

.player-combatant-column {
  display: grid;
  gap: .65rem;
  min-width: 0;
}

.player-body:not(.player-mobile-body) .player-card,
.player-body:not(.player-mobile-body).compact-ui .player-card {
  grid-template-columns: 4.25rem minmax(0, 1fr);
  gap: .55rem;
  align-items: center;
  padding: .55rem .65rem;
  min-height: 0;
}

.player-body:not(.player-mobile-body) .player-card-portrait {
  width: 4.25rem;
}

.player-body:not(.player-mobile-body) .player-card-main {
  display: grid;
  gap: .22rem;
  min-width: 0;
}

.player-card-topline {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .5rem;
  min-width: 0;
}

.player-card-topline .player-name-row {
  min-width: 0;
  flex: 1 1 auto;
}

.player-body:not(.player-mobile-body) .player-card h3,
.player-body:not(.player-mobile-body).compact-ui .player-card h3 {
  font-size: 1rem;
  line-height: 1.05;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.player-body:not(.player-mobile-body) .player-card-topline p,
.player-body:not(.player-mobile-body).compact-ui .player-card-topline p {
  margin: 0;
  font-size: .84rem;
  line-height: 1.05;
  text-align: right;
  white-space: nowrap;
}

.player-body:not(.player-mobile-body) .player-card-hp,
.player-body:not(.player-mobile-body).compact-ui .player-card-hp {
  grid-column: auto;
  width: 100%;
  margin-top: .05rem;
}

.player-body:not(.player-mobile-body) .player-card-hp .hptext,
.player-body:not(.player-mobile-body).compact-ui .player-card-hp .hptext {
  margin: 0 0 .12rem;
  text-align: center;
  font-size: .88rem;
  line-height: 1;
  color: var(--text);
  font-weight: 850;
}

.player-body:not(.player-mobile-body) .player-card-hp .hpbar,
.player-body:not(.player-mobile-body).compact-ui .player-card-hp .hpbar {
  margin: 0;
  height: .95rem;
}

.player-body:not(.player-mobile-body).font-size-large .player-card-hp .hpbar,
.player-body:not(.player-mobile-body).font-size-huge .player-card-hp .hpbar {
  height: 1.15rem;
}

.player-body:not(.player-mobile-body) .player-card.active {
  display: none;
}

@media (max-width: 1100px) {
  .player-body:not(.player-mobile-body) .player-layout.player-layout-side {
    grid-template-columns: 1fr;
  }
  .player-body:not(.player-mobile-body) .player-active-left,
  .player-body:not(.player-mobile-body) .player-initiative-right {
    grid-column: 1;
    position: static;
  }
}

@media (max-width: 820px) {
  .player-body:not(.player-mobile-body) .player-combatants {
    grid-template-columns: 1fr;
  }
}

/* V0.50 — écran joueurs PC épuré + bannières + colonnes configurables */
.player-body:not(.player-mobile-body) .player-hero {
  position: relative;
  min-height: 11.5rem;
  padding: 1.15rem 1.35rem;
  overflow: hidden;
  isolation: isolate;
  background-color: var(--panel);
  background-size: cover;
  background-position: center;
  border-bottom: 1px solid rgba(var(--accent-rgb), .35);
  box-shadow: inset 0 -3rem 5rem rgba(0,0,0,.28), 0 .5rem 1.6rem rgba(0,0,0,.16);
}
.player-body:not(.player-mobile-body) .player-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(var(--bg-rgb), .90) 0%, rgba(var(--bg-rgb), .62) 42%, rgba(var(--bg-rgb), .38) 100%),
    linear-gradient(180deg, rgba(0,0,0,.25), rgba(0,0,0,.34));
}
.player-body:not(.player-mobile-body).mode-combat .player-hero {
  background-image: url('/assets/banners/combat-banner.png');
}
.player-body:not(.player-mobile-body).mode-exploration .player-hero {
  background-image: url('/assets/banners/exploration-banner.png');
}
.player-body:not(.player-mobile-body) .player-hero > div:first-child {
  max-width: min(52rem, 58vw);
  text-shadow: 0 2px 14px rgba(0,0,0,.68);
}
.player-body:not(.player-mobile-body) .player-hero .eyebrow,
.player-body:not(.player-mobile-body) .player-hero h1,
.player-body:not(.player-mobile-body) .player-hero p {
  color: var(--text);
}
.player-body:not(.player-mobile-body) .player-hero .eyebrow {
  color: var(--accent);
  font-weight: 850;
}
.player-body:not(.player-mobile-body) .player-actions-clean {
  align-self: flex-start;
  padding-top: .15rem;
  gap: .65rem;
}
.player-body:not(.player-mobile-body) .player-actions-clean .campaign-clock-display,
.player-body:not(.player-mobile-body) .player-actions-clean .round-badge {
  backdrop-filter: blur(6px);
  background:
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .88), rgba(var(--panel-rgb), .76));
  border-color: rgba(var(--accent-rgb), .65);
  box-shadow: 0 .3rem 1rem rgba(0,0,0,.28);
}
.player-body:not(.player-mobile-body).mode-exploration .round-badge {
  display: inline-flex;
}
.player-body:not(.player-mobile-body) .player-layout.player-layout-side {
  grid-template-columns: minmax(300px, 28rem) minmax(0, 1fr);
}
.player-body:not(.player-mobile-body) .player-combatants {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.player-body:not(.player-mobile-body).player-columns-3 .player-combatants {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .5rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-combatant-column {
  gap: .5rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-card,
.player-body:not(.player-mobile-body).player-columns-3.compact-ui .player-card {
  grid-template-columns: 3.85rem minmax(0, 1fr);
  padding: .45rem .55rem;
  gap: .48rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-card-portrait {
  width: 3.85rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-card h3,
.player-body:not(.player-mobile-body).player-columns-3.compact-ui .player-card h3 {
  font-size: .92rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-card-topline p,
.player-body:not(.player-mobile-body).player-columns-3.compact-ui .player-card-topline p {
  font-size: .78rem;
}
.player-body:not(.player-mobile-body).player-columns-3 .player-card-hp .hptext,
.player-body:not(.player-mobile-body).player-columns-3.compact-ui .player-card-hp .hptext {
  font-size: .82rem;
}

@media (max-width: 1250px) {
  .player-body:not(.player-mobile-body).player-columns-3 .player-combatants {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 820px) {
  .player-body:not(.player-mobile-body).player-columns-3 .player-combatants,
  .player-body:not(.player-mobile-body).player-columns-2 .player-combatants {
    grid-template-columns: 1fr;
  }
}

/* V0.53 — menu MJ nettoyé */
.topbar-mj {
  align-items: center;
  padding: .7rem 1rem;
}
.mj-title-block {
  min-width: 0;
}
.mj-title-line {
  display: flex;
  align-items: center;
  gap: .7rem;
  flex-wrap: wrap;
}
.mj-title-line h1 {
  white-space: nowrap;
}
.campaign-clock-button-compact {
  min-width: 0;
  padding: .35rem .62rem;
  border-radius: .72rem;
}
.campaign-clock-button-compact .clock-label {
  font-size: .62rem;
}
.campaign-clock-button-compact strong {
  font-size: .86rem;
}
.mj-top-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .65rem;
}
.mj-menu-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.mj-menu-button {
  width: 2.7rem;
  height: 2.7rem;
  display: inline-grid;
  place-items: center;
  border-radius: .85rem;
  font-size: 1.35rem;
  font-weight: 900;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .22), rgba(var(--panel-rgb), .94));
  border-color: rgba(var(--accent-rgb), .5);
}
.mj-menu {
  position: absolute;
  right: 0;
  top: calc(100% + .6rem);
  width: min(360px, calc(100vw - 2rem));
  z-index: 100;
  border: 1px solid rgba(var(--accent-rgb), .42);
  border-radius: 1rem;
  background:
    radial-gradient(circle at top right, rgba(var(--accent-rgb), .16), transparent 15rem),
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .98), rgba(var(--panel-rgb), .98));
  box-shadow: 0 22px 60px rgba(0,0,0,.45);
  padding: .7rem;
  backdrop-filter: blur(8px);
}
.mj-menu[hidden] { display: none; }
.mj-menu-user {
  display: grid;
  gap: .15rem;
  padding: .7rem .75rem .85rem;
  margin-bottom: .35rem;
  border: 1px solid rgba(var(--accent-rgb), .25);
  border-radius: .8rem;
  background: rgba(var(--input-rgb), .32);
}
.mj-menu-user span {
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .1em;
  font-size: .68rem;
  font-weight: 850;
}
.mj-menu-user strong {
  color: var(--text);
  font-size: 1.05rem;
}
.mj-menu-item,
.mj-menu-details > summary {
  width: 100%;
  display: flex;
  align-items: center;
  gap: .65rem;
  border: 0;
  border-radius: .75rem;
  padding: .72rem .8rem;
  background: transparent;
  color: var(--text);
  text-decoration: none;
  text-align: left;
  box-shadow: none;
  cursor: pointer;
  font-weight: 800;
}
.mj-menu-item:hover,
.mj-menu-details > summary:hover {
  background: rgba(var(--accent-rgb), .16);
  filter: none;
}
.mj-menu-details {
  margin: .15rem 0;
}
.mj-menu-details > summary {
  list-style: none;
}
.mj-menu-details > summary::-webkit-details-marker { display: none; }
.mj-menu-details > summary::after {
  content: '▸';
  margin-left: auto;
  color: var(--muted);
}
.mj-menu-details[open] > summary::after {
  content: '▾';
}
.mj-submenu {
  display: grid;
  gap: .15rem;
  margin: .15rem 0 .35rem 1.2rem;
  padding-left: .5rem;
  border-left: 2px solid rgba(var(--accent-rgb), .28);
}
.mj-submenu-item {
  font-size: .92rem;
  color: var(--muted);
}
.danger-menu-item {
  color: var(--danger);
}
.mj-menu-separator {
  height: 1px;
  background: rgba(var(--accent-rgb), .18);
  margin: .35rem .35rem;
}
.player-screen-settings-card .settings-layout-two {
  grid-template-columns: minmax(280px, .85fr) minmax(420px, 1.15fr);
}
@media (max-width: 760px) {
  .topbar-mj {
    align-items: stretch;
  }
  .mj-top-actions {
    justify-content: space-between;
  }
  .mj-title-line {
    align-items: stretch;
  }
  .campaign-clock-button-compact {
    width: 100%;
  }
  .player-screen-settings-card .settings-layout-two {
    grid-template-columns: 1fr;
  }
}

/* V0.53 — boutons de réorganisation dans l’ordre de rencontre */
.combatant-action-group .action-order {
  min-width: 2.45rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .54), rgba(var(--button-bg-rgb), .96));
  border-color: rgba(var(--accent-rgb), .82);
  color: var(--text);
  font-weight: 950;
}
.combatant-action-group .action-order:disabled {
  opacity: .35;
  cursor: not-allowed;
  filter: grayscale(.25);
  transform: none;
}


/* V0.54 — bannières exploration/combat sur MJ et écrans joueurs mobile */
.player-mobile-body .player-hero {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  background-color: var(--panel);
  background-size: cover;
  background-position: center;
  box-shadow: inset 0 -2rem 3.5rem rgba(0,0,0,.24), 0 .5rem 1.2rem rgba(0,0,0,.16);
}
.player-mobile-body .player-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(var(--bg-rgb), .90) 0%, rgba(var(--bg-rgb), .64) 46%, rgba(var(--bg-rgb), .42) 100%),
    linear-gradient(180deg, rgba(0,0,0,.20), rgba(0,0,0,.34));
}
.player-mobile-body.mode-combat .player-hero {
  background-image: url('/assets/banners/combat-banner.png');
}
.player-mobile-body.mode-exploration .player-hero {
  background-image: url('/assets/banners/exploration-banner.png');
}
.player-mobile-body .player-hero > * {
  position: relative;
  z-index: 1;
}

.encounter-panel {
  position: relative;
  overflow: hidden;
}
.encounter-panel::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 12.5rem;
  z-index: 0;
  pointer-events: none;
  background-size: cover;
  background-position: center;
  opacity: .98;
}
.mode-combat .encounter-panel::before {
  background-image:
    linear-gradient(180deg, rgba(0,0,0,.16) 0%, rgba(var(--panel-rgb), .88) 100%),
    url('/assets/banners/combat-banner.png');
}
.mode-exploration .encounter-panel::before {
  background-image:
    linear-gradient(180deg, rgba(0,0,0,.10) 0%, rgba(var(--panel-rgb), .88) 100%),
    url('/assets/banners/exploration-banner.png');
}
.encounter-panel > * {
  position: relative;
  z-index: 1;
}

/* V0.56 — tri MJ, colonnes MJ, menu portrait et fiche avancée */
.sort-control {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  margin: 0;
  color: var(--text);
  font-weight: 800;
}
.sort-control span {
  color: var(--muted);
  font-size: .9rem;
}
.sort-control select {
  min-width: 12rem;
  min-height: 2.35rem;
  padding: .35rem .7rem;
  border-radius: .65rem;
  font-weight: 800;
}

html.mj-combatants-2 .layout-mj {
  grid-template-columns: minmax(0, 1fr) 360px;
}
html.mj-combatants-2 .combatants-list {
  display: block;
  column-count: 2;
  column-gap: .85rem;
}
html.mj-combatants-2 .combatants-list .combatant-card {
  display: inline-block;
  width: 100%;
  break-inside: avoid;
  margin: 0 0 .85rem;
}
html.mj-combatants-2 .combatants-list .combatant-head {
  align-items: flex-start;
}
html.mj-combatants-2 .combatants-list .combatant-action-group {
  max-width: 17rem;
}
html.mj-combatants-2 .combatants-list .combat-action {
  padding-left: .45rem;
  padding-right: .45rem;
}
@media (max-width: 1300px) {
  html.mj-combatants-2 .layout-mj {
    grid-template-columns: 1fr;
  }
  html.mj-combatants-2 .combatants-list {
    column-count: 1;
  }
}

.portrait-action-menu {
  position: fixed;
  z-index: 2147483000;
  width: min(280px, calc(100vw - 1rem));
  max-height: calc(100vh - 1rem);
  overflow-y: auto;
  display: grid;
  gap: .25rem;
  padding: .45rem;
  border: 1px solid rgba(var(--accent-rgb), .48);
  border-radius: .85rem;
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .18), transparent 10rem),
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .98), rgba(var(--panel-rgb), .98));
  box-shadow: 0 20px 55px rgba(0,0,0,.46);
  backdrop-filter: blur(8px);
}
.portrait-action-menu button {
  width: 100%;
  justify-content: flex-start;
  text-align: left;
  display: flex;
  gap: .55rem;
  align-items: center;
  border-color: transparent;
  background: rgba(var(--input-rgb), .32);
  border-radius: .65rem;
  min-height: 2.35rem;
}
.portrait-action-menu button:hover,
.portrait-action-menu button:focus-visible {
  border-color: rgba(var(--accent-rgb), .55);
  background: rgba(var(--accent-rgb), .18);
}

.advanced-sheet-dialog {
  width: min(760px, calc(100vw - 2rem));
}
.advanced-sheet-card {
  gap: .9rem;
}
.advanced-sheet-top {
  display: grid;
  grid-template-columns: 120px minmax(0, 1fr);
  gap: 1rem;
  align-items: center;
}
.advanced-sheet-portrait {
  width: 120px;
  aspect-ratio: 1;
  border-radius: 1rem;
  overflow: hidden;
  border: 1px solid rgba(var(--accent-rgb), .52);
  background: rgba(var(--input-rgb), .5);
  display: grid;
  place-items: center;
  font-size: 2rem;
  font-weight: 900;
}
.advanced-sheet-portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.advanced-sheet-summary {
  display: grid;
  gap: .55rem;
}
.advanced-chip-row {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.advanced-sheet-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
  margin: 0;
}
.advanced-sheet-grid div {
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .28);
  padding: .7rem;
}
.advanced-sheet-grid dt {
  color: var(--muted);
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 900;
}
.advanced-sheet-grid dd {
  margin: .25rem 0 0;
  color: var(--text);
  font-weight: 700;
  line-height: 1.35;
}
@media (max-width: 700px) {
  .advanced-sheet-top,
  .advanced-sheet-grid {
    grid-template-columns: 1fr;
  }
}

/* V0.56 — colonnes MJ exactes : première moitié à gauche, deuxième moitié à droite */
html.mj-combatants-2 .combatants-list.mj-column-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .85rem;
  column-count: initial;
}
html.mj-combatants-2 .mj-combatant-column {
  display: grid;
  align-content: start;
  gap: .85rem;
  min-width: 0;
}
html.mj-combatants-2 .combatants-list.mj-column-list .combatant-card {
  display: block;
  width: auto;
  margin: 0;
}
@media (max-width: 1300px) {
  html.mj-combatants-2 .combatants-list.mj-column-list {
    grid-template-columns: 1fr;
  }
}

/* V0.56 — fiche avancée éditable + menu personnage dans Outils */
.advanced-sheet-edit-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}
.advanced-sheet-edit-grid label {
  display: grid;
  gap: .3rem;
  color: var(--muted);
  font-size: .82rem;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.advanced-sheet-edit-grid label.full {
  grid-column: 1 / -1;
}
.advanced-sheet-edit-grid input,
.advanced-sheet-edit-grid textarea,
.advanced-sheet-edit-grid select {
  width: 100%;
  color: var(--text);
  font-weight: 800;
  text-transform: none;
  letter-spacing: normal;
}
.advanced-sheet-edit-grid.is-readonly input,
.advanced-sheet-edit-grid.is-readonly textarea,
.advanced-sheet-edit-grid.is-readonly select {
  border-color: rgba(var(--accent-rgb), .22);
  background: rgba(var(--input-rgb), .22);
  opacity: .9;
}
.advanced-sheet-edit-grid.is-editing input,
.advanced-sheet-edit-grid.is-editing textarea,
.advanced-sheet-edit-grid.is-editing select {
  border-color: rgba(var(--accent-rgb), .62);
  background: rgba(var(--input-rgb), .62);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .08);
}
@media (max-width: 700px) {
  .advanced-sheet-edit-grid {
    grid-template-columns: 1fr;
  }
}

.tools-character-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.tools-character-button {
  position: relative;
  width: 5.2rem;
  height: 5.2rem;
  border-radius: 1rem;
  overflow: hidden;
  padding: 0;
  border: 2px solid rgba(var(--accent-rgb), .55);
  background: rgba(var(--input-rgb), .48);
  box-shadow: 0 .5rem 1.4rem rgba(0,0,0,.32);
  display: grid;
  place-items: center;
}
.tools-character-button img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.tools-character-initials {
  font-size: 1.55rem;
  font-weight: 1000;
  color: var(--text);
}
.tools-character-name {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  min-height: 1.35rem;
  padding: .16rem .22rem .2rem;
  text-align: center;
  font-size: .72rem;
  line-height: 1.05;
  color: white;
  background: linear-gradient(180deg, rgba(0,0,0,.15), rgba(0,0,0,.78));
  text-shadow: 0 1px 3px rgba(0,0,0,.9);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.tools-character-menu {
  position: absolute;
  right: 0;
  top: calc(100% + .55rem);
  width: min(300px, calc(100vw - 1rem));
  z-index: 1200;
  display: grid;
  gap: .25rem;
  padding: .45rem;
  border: 1px solid rgba(var(--accent-rgb), .48);
  border-radius: .9rem;
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .18), transparent 10rem),
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .98), rgba(var(--panel-rgb), .98));
  box-shadow: 0 20px 55px rgba(0,0,0,.46);
  backdrop-filter: blur(8px);
}
.tools-character-menu[hidden] { display: none; }
.tools-character-menu button {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: .55rem;
  min-height: 2.55rem;
  text-align: left;
  border-color: transparent;
  background: rgba(var(--input-rgb), .32);
  border-radius: .7rem;
}
.tools-character-menu button:hover,
.tools-character-menu button:focus-visible {
  border-color: rgba(var(--accent-rgb), .55);
  background: rgba(var(--accent-rgb), .18);
}
.tools-body .tools-header-grid {
  align-items: center;
}
@media (max-width: 720px) {
  .tools-character-button {
    width: 4.6rem;
    height: 4.6rem;
  }
}


/* V0.59 — Outils joueurs : grand portrait pleine largeur + menu au-dessus de l'initiative */
.tools-body .tools-hero-v34 {
  position: relative;
  z-index: 40;
  overflow: visible;
}
.tools-body .tools-header-grid {
  grid-template-columns: minmax(0, 1fr);
  justify-content: stretch;
  align-items: stretch;
  width: min(100%, 760px);
  margin-left: auto;
}
.tools-body .tools-character-wrap {
  width: 100%;
  display: block;
  position: relative;
  z-index: 5000;
}
.tools-body .tools-character-button {
  width: 100%;
  height: clamp(9rem, 22vw, 15rem);
  border-radius: 1.25rem;
}
.tools-body .tools-character-button img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.tools-body .tools-character-initials {
  font-size: clamp(2.6rem, 8vw, 5.5rem);
}
.tools-body .tools-character-name {
  min-height: 2.15rem;
  padding: .35rem .55rem .45rem;
  font-size: clamp(1rem, 2.5vw, 1.45rem);
  font-weight: 1000;
  letter-spacing: .02em;
}
.tools-body .tools-character-menu {
  left: 0;
  right: auto;
  top: calc(100% + .65rem);
  z-index: 9000;
  width: min(420px, 100%);
}
.tools-body .tools-layout {
  position: relative;
  z-index: 1;
}
.tools-body .tools-mode-badge {
  justify-self: stretch;
  width: 100%;
}
@media (max-width: 860px) {
  .tools-body .tools-header-grid {
    width: 100%;
  }
  .tools-body .tools-character-button {
    height: clamp(10rem, 42vw, 17rem);
  }
}


/* V0.59 — corrections Outils et fiche avancée */
.tools-body .tools-hero-v34 {
  z-index: 20000;
  overflow: visible;
}
.tools-body .tools-layout {
  z-index: 0;
}
.tools-settings-gear {
  position: absolute;
  top: .8rem;
  right: .8rem;
  z-index: 22000;
  width: 2.75rem;
  height: 2.75rem;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  font-size: 1.25rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .24), rgba(var(--panel-rgb), .86));
  border: 1px solid rgba(var(--accent-rgb), .55);
  box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.32);
}
.tools-body .tools-character-wrap {
  z-index: 21000;
}
.tools-body .tools-character-button {
  height: auto;
  min-height: 9rem;
  align-items: center;
}
.tools-body .tools-character-button img {
  width: 100%;
  height: auto;
  max-height: none;
  object-fit: contain;
}
.tools-body .tools-character-menu {
  top: .75rem;
  left: .75rem;
  right: .75rem;
  width: auto;
  max-width: none;
  z-index: 50000;
}
.tools-profile-name .tools-character-button {
  min-height: 0;
  height: auto;
  width: 100%;
  padding: .9rem 1rem;
  border-radius: 999px;
  overflow: visible;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .24), rgba(var(--panel-rgb), .92));
}
.tools-profile-name .tools-character-button img,
.tools-profile-name .tools-character-initials {
  display: none !important;
}
.tools-profile-name .tools-character-name {
  position: static;
  min-height: auto;
  padding: 0;
  color: var(--text);
  background: transparent;
  text-shadow: none;
  font-size: clamp(1.25rem, 4vw, 2rem);
}
.tools-profile-name .tools-character-menu {
  top: calc(100% + .65rem);
  left: 0;
  right: auto;
  width: min(420px, 100%);
}
.tools-profile-grid .theme-choice {
  min-height: 3.25rem;
}
@media (max-width: 860px) {
  .tools-body .tools-character-button {
    min-height: 10rem;
  }
  .tools-profile-name .tools-character-button {
    min-height: 0;
  }
}


/* V0.59 — bouton ✅ en haut des conditions Outils */
.dialog-head-actions {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
}
.dialog-icon-save {
  min-width: 2.45rem;
  min-height: 2.45rem;
  padding: .35rem .55rem;
  border-radius: .75rem;
  font-size: 1rem;
}
#toolsConditionStatus {
  margin: -.25rem 0 .55rem;
}


/* V0.62 — fiche avancée en groupes + stats D&D complètes */
.dialog-head-actions {
  display: flex;
  align-items: center;
  gap: .45rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.advanced-sheet-dialog {
  width: min(1040px, calc(100vw - 2rem));
}
.advanced-sheet-groups {
  display: grid;
  gap: .75rem;
}
.advanced-sheet-group {
  border: 1px solid rgba(var(--accent-rgb), .34);
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(var(--panel-2-rgb), .62), rgba(var(--input-rgb), .24));
  overflow: hidden;
}
.advanced-sheet-group > summary {
  cursor: pointer;
  list-style: none;
  padding: .85rem 1rem;
  font-weight: 1000;
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .22);
}
.advanced-sheet-group > summary::-webkit-details-marker {
  display: none;
}
.advanced-sheet-group > summary::before {
  content: "▸";
  display: inline-grid;
  place-items: center;
  width: 1.35rem;
  height: 1.35rem;
  border-radius: 999px;
  margin-right: .45rem;
  background: rgba(var(--accent-rgb), .18);
  color: var(--accent);
}
.advanced-sheet-group[open] > summary::before {
  content: "▾";
}
.advanced-sheet-group > summary span {
  margin-left: auto;
  color: var(--muted);
  font-size: .82rem;
  font-weight: 750;
}
.advanced-sheet-group > .advanced-sheet-edit-grid {
  padding: .85rem;
}
.advanced-subsection {
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .18);
  padding: .75rem;
}
.advanced-subsection h3 {
  margin: 0 0 .65rem;
  font-size: .95rem;
  color: var(--accent);
  letter-spacing: .06em;
  text-transform: uppercase;
}
.ability-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: .55rem;
}
.skill-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .55rem;
}
.ability-field {
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .8rem;
  background: rgba(var(--panel-rgb), .42);
  padding: .55rem;
}
.ability-field > span {
  color: var(--accent);
  font-size: 1rem;
  font-weight: 1000;
  letter-spacing: .08em;
}
.ability-field em {
  color: var(--muted);
  font-style: normal;
  font-size: .72rem;
  text-transform: none;
  letter-spacing: normal;
}
.ability-field input {
  text-align: center;
  font-size: 1.15rem;
  min-height: 2.35rem;
}
.dnd-stats-grid {
  align-items: start;
}
@media (max-width: 1100px) {
  .ability-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .skill-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 700px) {
  .ability-grid,
  .skill-grid {
    grid-template-columns: 1fr;
  }
  .advanced-sheet-group > summary {
    align-items: flex-start;
    flex-direction: column;
  }
}


/* V0.62 — Exploration joueurs PC : groupe à gauche, scène + journal à droite */
.player-body:not(.player-mobile-body) .player-exploration-scene-panel {
  display: none;
}

.player-body:not(.player-mobile-body).mode-combat .player-exploration-scene-panel {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
  display: grid;
  max-width: none;
  margin: 0;
  grid-template-columns: minmax(300px, 34rem) minmax(0, 1fr);
  grid-template-rows: auto minmax(260px, 1fr);
  align-items: start;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel {
  display: block;
  grid-column: 1;
  grid-row: 1 / span 2;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel {
  display: block;
  grid-column: 2;
  grid-row: 1;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
  display: block;
  grid-column: 2;
  grid-row: 2;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-group {
  display: grid;
  grid-template-columns: 1fr !important;
  gap: .75rem;
  margin-top: .75rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-card {
  grid-template-columns: 4.5rem minmax(0, 1fr);
  gap: .65rem;
  padding: .65rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-portrait {
  width: 4.5rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-hp {
  grid-column: 1 / -1;
  margin-top: -.15rem;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel .log {
  max-height: min(48vh, 560px);
}

.player-body:not(.player-mobile-body).mode-combat .player-log-panel {
  grid-column: 1 / -1;
}

@media (max-width: 980px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
    grid-template-columns: 1fr;
    grid-template-rows: auto;
  }
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
    grid-column: 1;
    grid-row: auto;
  }
}


/* V0.62 — Exploration joueurs PC compacte + bannière scène + journaux séparés */
.player-body:not(.player-mobile-body).mode-exploration .exploration-card,
.player-body:not(.player-mobile-body).mode-exploration .exploration-card.player-card {
  grid-template-columns: 4.75rem minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-items: center;
  gap: .45rem .7rem;
  padding: .58rem .7rem;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-portrait {
  grid-column: 1;
  grid-row: 1 / span 2;
  width: 4.75rem;
  min-height: 4.75rem;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-main {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-main p {
  margin: .15rem 0 0;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-hp {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
  align-self: end;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-hp .hptext {
  text-align: center;
  margin: 0 0 .12rem;
  font-weight: 900;
  line-height: 1;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-hp .hpbar {
  height: .8rem;
}
.exploration-scene-banner {
  width: 100%;
  min-height: 12rem;
  border-radius: 1rem;
  overflow: hidden;
  border: 1px solid rgba(var(--accent-rgb), .46);
  background:
    linear-gradient(135deg, rgba(var(--accent-rgb), .18), rgba(var(--panel-rgb), .84)),
    var(--panel-2);
  color: var(--text);
  display: grid;
  place-items: center;
  margin-bottom: .9rem;
  padding: 0;
  position: relative;
  box-shadow: 0 .65rem 1.8rem rgba(0,0,0,.22);
}
.exploration-scene-banner img {
  width: 100%;
  height: 100%;
  min-height: 12rem;
  object-fit: cover;
  display: block;
}
.exploration-scene-banner span {
  position: absolute;
  left: 1rem;
  bottom: .8rem;
  right: 1rem;
  padding: .45rem .7rem;
  border-radius: .8rem;
  background: rgba(0,0,0,.48);
  border: 1px solid rgba(255,255,255,.22);
  color: white;
  text-align: center;
  font-weight: 850;
  backdrop-filter: blur(4px);
}
.exploration-scene-banner.has-image span {
  opacity: .14;
  transition: opacity .15s ease;
}
.exploration-scene-banner.has-image:hover span,
.exploration-scene-banner.has-image:focus-visible span {
  opacity: 1;
}


/* V0.67 — Exploration joueurs PC : l'en-tête passe dans la colonne droite */
.player-body:not(.player-mobile-body).mode-exploration .player-hero {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
  padding-top: .65rem;
}

.exploration-side-header {
  display: grid;
  gap: .55rem;
  margin-bottom: .85rem;
  padding: .85rem 1rem;
  border: 1px solid rgba(var(--accent-rgb), .34);
  border-radius: 1rem;
  background:
    linear-gradient(135deg, rgba(var(--accent-rgb), .16), rgba(var(--panel-rgb), .78)),
    var(--panel-2);
  box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.16);
}

.exploration-side-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .8rem;
  flex-wrap: wrap;
}

.exploration-side-title-row h2 {
  margin: 0;
  font-size: clamp(1.8rem, 3.2vw, 3rem);
  line-height: 1;
}

.exploration-side-mode {
  min-width: 8.5rem;
  padding: .4rem .7rem;
}

.exploration-side-scene-text {
  margin: 0;
  color: var(--muted);
  line-height: 1.35;
  max-width: 80ch;
}

.exploration-side-meta {
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
}

.exploration-side-meta .campaign-clock-display,
.exploration-side-meta .round-badge {
  background: rgba(var(--input-rgb), .28);
  border: 1px solid rgba(var(--accent-rgb), .36);
}

@media (max-width: 980px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-hero {
    display: flex;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
    display: none;
  }
}


/* V0.67 — Exploration joueurs PC : 3 colonnes, entête épuré, bannière + journal à droite */
.player-body:not(.player-mobile-body) .player-exploration-info-panel {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
  display: grid;
  max-width: none;
  margin: 0;
  padding-top: .45rem;
  grid-template-columns: minmax(17rem, 1fr) minmax(17rem, 1fr) minmax(34rem, 2fr);
  grid-template-rows: auto minmax(260px, 1fr);
  align-items: start;
  gap: .8rem;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel {
  grid-column: 1;
  grid-row: 1 / span 2;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-info-panel {
  display: block;
  grid-column: 2;
  grid-row: 1;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel {
  display: block;
  grid-column: 3;
  grid-row: 1;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
  display: block;
  grid-column: 3;
  grid-row: 2;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
  margin: 0;
  min-height: 12rem;
  display: grid;
  align-content: start;
  gap: .65rem;
  padding: .85rem 1rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display {
  display: grid;
  gap: .2rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display .clock-label {
  color: var(--muted);
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .1em;
  font-weight: 900;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-date-chip {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  padding: .38rem .7rem;
  border-radius: 999px;
  background: rgba(var(--accent-rgb), .14);
  border: 1px solid rgba(var(--accent-rgb), .28);
  color: var(--text);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.1;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display strong {
  display: block;
  color: var(--accent);
  font-size: clamp(1.85rem, 3.2vw, 3.55rem);
  line-height: .95;
  font-weight: 950;
  letter-spacing: -.04em;
  text-shadow: 0 .15rem 1rem rgba(0,0,0,.28);
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-scene-text {
  margin: 0;
  color: var(--text);
  font-size: clamp(1.05rem, 1.45vw, 1.65rem);
  line-height: 1.18;
  font-weight: 800;
  max-width: none;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-scene-text[hidden],
.player-body:not(.player-mobile-body).mode-exploration .exploration-side-scene-text:empty {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-scene-banner {
  min-height: 12rem;
  margin: 0;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-scene-banner img {
  min-height: 12rem;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel .log {
  max-height: min(62vh, 720px);
}

@media (max-width: 1300px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
    grid-template-columns: minmax(16rem, 1fr) minmax(16rem, 1fr);
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel {
    grid-column: 1;
    grid-row: 1 / span 2;
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-info-panel {
    grid-column: 2;
    grid-row: 1;
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
    grid-column: 1 / -1;
    grid-row: auto;
  }
}

@media (max-width: 980px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
    grid-template-columns: 1fr;
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-info-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
    grid-column: 1;
    grid-row: auto;
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-hero {
    display: none;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
    display: grid;
  }
}

/* V0.67b — Journal collé sous la banderole, sans attendre la hauteur de la colonne info */
.player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
  grid-template-rows: auto;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-scene-banner {
  height: 12rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-scene-banner img {
  height: 12rem;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
  grid-row: 1;
  margin-top: 12.8rem;
}

@media (max-width: 1300px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
    grid-row: auto;
    margin-top: 0;
  }
}

/* V0.67 — MJ : Jets & journal repliable, dés structurés et consultation des historiques */
.roll-journal-panel .collapsible-panel-body {
  display: grid;
  gap: .75rem;
}

.roll-form-structured,
.log-form-structured {
  display: grid;
  grid-template-columns: minmax(8rem, 1.25fr) minmax(6rem, .8fr) minmax(6rem, .8fr) minmax(6rem, .8fr) auto;
  gap: .5rem;
  align-items: end;
}

.log-form-structured {
  grid-template-columns: minmax(12rem, 1.5fr) minmax(7rem, .8fr) minmax(6rem, .75fr) auto;
}

.roll-form-structured label,
.log-form-structured label,
.journal-view-toolbar label {
  display: grid;
  gap: .25rem;
  color: var(--muted);
  font-size: .78rem;
}

.roll-form-structured select,
.roll-form-structured input,
.log-form-structured select,
.log-form-structured input,
.journal-view-toolbar select {
  width: 100%;
}

.journal-note-field input {
  min-width: 0;
}

.journal-view-toolbar {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: .75rem;
  border-top: 1px solid rgba(var(--accent-rgb), .18);
  padding-top: .65rem;
}

.journal-view-hint {
  color: var(--muted);
  font-size: .82rem;
  white-space: nowrap;
}

.compact-ui .roll-form-structured,
.compact-ui .log-form-structured {
  gap: .4rem;
}

@media (max-width: 980px) {
  .roll-form-structured,
  .log-form-structured {
    grid-template-columns: 1fr 1fr;
  }
  .roll-form-structured button,
  .log-form-structured button,
  .journal-note-field {
    grid-column: 1 / -1;
  }
  .journal-view-toolbar {
    align-items: stretch;
    flex-direction: column;
  }
}

/* V0.67 — MJ : Jets & journal en mode large quand le panneau est ouvert */
.roll-journal-panel {
  transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}

html.mj-roll-journal-open .layout-mj {
  grid-template-columns: minmax(34rem, 1fr) minmax(48rem, .95fr);
}

html.mj-roll-journal-open .roll-journal-panel {
  border-color: rgba(var(--accent-rgb), .42);
  box-shadow: 0 14px 36px rgba(0, 0, 0, .32), 0 0 0 1px rgba(var(--accent-rgb), .12) inset;
}

html.mj-roll-journal-open .roll-journal-panel .collapsible-panel-title {
  padding: 1rem 1.15rem;
  font-size: 1.35rem;
}

html.mj-roll-journal-open .roll-journal-panel .collapsible-panel-body {
  padding: 0 1.15rem 1.15rem;
  gap: 1rem;
}

html.mj-roll-journal-open .roll-form-structured {
  grid-template-columns: minmax(14rem, 1.35fr) minmax(7.5rem, .7fr) minmax(9rem, .8fr) minmax(8.5rem, .75fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open .log-form-structured {
  grid-template-columns: minmax(24rem, 1.65fr) minmax(10rem, .75fr) minmax(8.5rem, .7fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open .roll-form-structured label,
html.mj-roll-journal-open .log-form-structured label,
html.mj-roll-journal-open .journal-view-toolbar label {
  font-size: .9rem;
  gap: .35rem;
}

html.mj-roll-journal-open .roll-form-structured select,
html.mj-roll-journal-open .roll-form-structured input,
html.mj-roll-journal-open .log-form-structured select,
html.mj-roll-journal-open .log-form-structured input,
html.mj-roll-journal-open .journal-view-toolbar select {
  min-height: 2.65rem;
  font-size: 1rem;
  padding: .55rem .7rem;
}

html.mj-roll-journal-open .roll-form-structured button,
html.mj-roll-journal-open .log-form-structured button {
  min-height: 2.65rem;
  padding-left: 1rem;
  padding-right: 1rem;
  font-size: .98rem;
}

html.mj-roll-journal-open .journal-view-toolbar {
  padding-top: .85rem;
}

html.mj-roll-journal-open .journal-view-hint {
  font-size: .92rem;
}

html.mj-roll-journal-open #log.log {
  max-height: min(54vh, 720px);
  min-height: 16rem;
  gap: .6rem;
  padding-right: .45rem;
}

html.mj-roll-journal-open #log .log-entry {
  padding: .65rem .78rem;
}

html.mj-roll-journal-open #log .log-time {
  font-size: .82rem;
  margin-bottom: .18rem;
}

@media (min-width: 1420px) {
  html.mj-roll-journal-open .side-column {
    position: sticky;
    top: 5.4rem;
    max-height: calc(100vh - 5.9rem);
    overflow: auto;
    padding-right: .15rem;
  }
}

@media (max-width: 1419px) {
  html.mj-roll-journal-open .layout-mj {
    grid-template-columns: 1fr;
  }

  html.mj-roll-journal-open .side-column {
    position: static;
  }
}

@media (max-width: 980px) {
  html.mj-roll-journal-open .roll-form-structured,
  html.mj-roll-journal-open .log-form-structured {
    grid-template-columns: 1fr 1fr;
  }

  html.mj-roll-journal-open .roll-form-structured button,
  html.mj-roll-journal-open .log-form-structured button,
  html.mj-roll-journal-open .journal-note-field {
    grid-column: 1 / -1;
  }

  html.mj-roll-journal-open .journal-view-toolbar {
    align-items: stretch;
    flex-direction: column;
  }
}

/* V0.67 — MJ : panneau Journaux caché derrière un grand onglet vertical */
.layout-mj,
.compact-ui .layout-mj,
html.mj-combatants-2 .layout-mj {
  grid-template-columns: minmax(0, 1fr) 360px 4.25rem;
  transition: grid-template-columns .22s ease, gap .22s ease;
}

.journal-drawer-panel {
  align-self: start;
  position: sticky;
  top: 5.15rem;
  min-height: min(70vh, 46rem);
  max-height: calc(100vh - 5.75rem);
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: 4.25rem minmax(0, 1fr);
  gap: 0;
  border-color: rgba(var(--accent-rgb), .34);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .30);
}

.journal-drawer-panel.collapsed {
  grid-template-columns: 4.25rem 0;
  min-width: 4.25rem;
  max-width: 4.25rem;
}

.journal-drawer-tab {
  width: 4.25rem;
  min-height: min(70vh, 46rem);
  height: 100%;
  padding: .9rem .25rem;
  border: 0;
  border-radius: 0;
  border-right: 1px solid rgba(var(--accent-rgb), .28);
  background:
    radial-gradient(circle at 50% 18%, rgba(var(--accent-rgb), .26), transparent 12rem),
    linear-gradient(180deg, rgba(var(--accent-rgb), .34), rgba(var(--button-bg-rgb), .98));
  color: var(--text);
  display: grid;
  place-items: center;
  font-weight: 1000;
  font-size: clamp(1.25rem, 1.45vw, 1.75rem);
  letter-spacing: .11em;
  text-transform: uppercase;
  cursor: pointer;
}

.journal-drawer-tab span {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  line-height: 1;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .32);
}

.journal-drawer-tab:hover,
.journal-drawer-tab:focus-visible {
  background:
    radial-gradient(circle at 50% 18%, rgba(var(--accent-rgb), .36), transparent 12rem),
    linear-gradient(180deg, rgba(var(--accent-rgb), .46), rgba(var(--button-bg-rgb), 1));
}

.journal-drawer-body {
  min-width: 0;
  overflow: auto;
  padding: 1rem;
  display: grid;
  gap: 1rem;
}

.journal-drawer-panel.collapsed .journal-drawer-body {
  padding: 0;
  overflow: hidden;
}

.journal-drawer-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: .7rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .18);
}

.journal-drawer-head h2 {
  margin: .12rem 0 0;
  font-size: clamp(1.6rem, 1.6vw, 2.2rem);
}

.journal-drawer-close {
  min-width: 2.35rem;
  min-height: 2.35rem;
  padding: .3rem .55rem;
  font-size: 1.1rem;
}

html.mj-roll-journal-open .layout-mj,
html.mj-roll-journal-open.compact-ui .layout-mj,
html.mj-roll-journal-open.mj-combatants-2 .layout-mj,
html.mj-roll-journal-open html.mj-combatants-2 .layout-mj {
  grid-template-columns: minmax(28rem, 1fr) minmax(18rem, 320px) minmax(39rem, .95fr);
}

html.mj-roll-journal-open .journal-drawer-panel {
  max-width: none;
  border-color: rgba(var(--accent-rgb), .54);
  box-shadow: 0 16px 40px rgba(0, 0, 0, .36), 0 0 0 1px rgba(var(--accent-rgb), .12) inset;
}

html.mj-roll-journal-open .journal-drawer-body {
  padding: 1.1rem 1.15rem 1.15rem;
}

html.mj-roll-journal-open .roll-form-structured {
  grid-template-columns: minmax(13rem, 1.3fr) minmax(7rem, .65fr) minmax(8.5rem, .75fr) minmax(8rem, .7fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open .log-form-structured {
  grid-template-columns: minmax(22rem, 1.6fr) minmax(9rem, .75fr) minmax(8rem, .7fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open #log.log {
  max-height: min(52vh, 700px);
  min-height: 17rem;
}

@media (max-width: 1680px) {
  html.mj-roll-journal-open .layout-mj,
  html.mj-roll-journal-open.compact-ui .layout-mj,
  html.mj-roll-journal-open.mj-combatants-2 .layout-mj {
    grid-template-columns: minmax(25rem, 1fr) minmax(16rem, 280px) minmax(34rem, .95fr);
  }

  html.mj-roll-journal-open .roll-form-structured,
  html.mj-roll-journal-open .log-form-structured {
    grid-template-columns: 1fr 1fr;
  }

  html.mj-roll-journal-open .roll-form-structured button,
  html.mj-roll-journal-open .log-form-structured button,
  html.mj-roll-journal-open .journal-note-field {
    grid-column: 1 / -1;
  }
}

@media (max-width: 1240px) {
  .layout-mj,
  .compact-ui .layout-mj,
  html.mj-combatants-2 .layout-mj,
  html.mj-roll-journal-open .layout-mj,
  html.mj-roll-journal-open.compact-ui .layout-mj,
  html.mj-roll-journal-open.mj-combatants-2 .layout-mj {
    grid-template-columns: 1fr;
  }

  .journal-drawer-panel,
  .journal-drawer-panel.collapsed {
    position: static;
    min-height: auto;
    max-height: none;
    max-width: none;
    grid-template-columns: 1fr;
  }

  .journal-drawer-tab {
    width: 100%;
    min-height: 3.25rem;
    height: 3.25rem;
    border-right: 0;
    border-bottom: 1px solid rgba(var(--accent-rgb), .28);
    font-size: 1.25rem;
  }

  .journal-drawer-tab span {
    writing-mode: horizontal-tb;
    transform: none;
  }

  html.mj-roll-journal-open .journal-drawer-panel {
    grid-template-columns: 1fr;
  }

  html.mj-roll-journal-open .journal-drawer-body {
    max-height: none;
  }
}

@media (max-width: 720px) {
  html.mj-roll-journal-open .roll-form-structured,
  html.mj-roll-journal-open .log-form-structured,
  .roll-form-structured,
  .log-form-structured {
    grid-template-columns: 1fr;
  }
}

/* V0.67c — corrections de priorité pour le body compact */
html.mj-roll-journal-open body.compact-ui .layout-mj,
html.mj-roll-journal-open.mj-combatants-2 body.compact-ui .layout-mj {
  grid-template-columns: minmax(28rem, 1fr) minmax(18rem, 320px) minmax(39rem, .95fr);
}

@media (max-width: 1680px) {
  html.mj-roll-journal-open body.compact-ui .layout-mj,
  html.mj-roll-journal-open.mj-combatants-2 body.compact-ui .layout-mj {
    grid-template-columns: minmax(25rem, 1fr) minmax(16rem, 280px) minmax(34rem, .95fr);
  }
}

@media (max-width: 1240px) {
  html.mj-roll-journal-open body.compact-ui .layout-mj,
  html.mj-roll-journal-open.mj-combatants-2 body.compact-ui .layout-mj {
    grid-template-columns: 1fr;
  }
}

/* V0.68 — MJ : tiroirs séparés Notes de scène / Journaux + ajout de combattant à gauche */
.layout-mj,
body.compact-ui .layout-mj,
html.mj-combatants-2 body.compact-ui .layout-mj,
html.mj-combatants-2 .layout-mj {
  grid-template-columns: 4.25rem minmax(0, 1fr) 4.25rem 4.25rem;
  align-items: start;
  transition: grid-template-columns .22s ease, gap .22s ease;
}

body.mode-exploration .layout-mj,
body.mode-exploration.compact-ui .layout-mj,
html.mj-combatants-2 body.mode-exploration .layout-mj {
  grid-template-columns: minmax(0, 1fr) 4.25rem 4.25rem;
}

.combatant-drawer-panel { grid-column: 1; }
.encounter-panel { grid-column: 2; }
.scene-notes-drawer-panel { grid-column: 3; }
.journal-drawer-panel { grid-column: 4; }

body.mode-exploration .combatant-drawer-panel {
  display: none;
}
body.mode-exploration .encounter-panel { grid-column: 1; }
body.mode-exploration .scene-notes-drawer-panel { grid-column: 2; }
body.mode-exploration .journal-drawer-panel { grid-column: 3; }

html.mj-add-combatant-open body.mode-combat .layout-mj,
html.mj-add-combatant-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(25rem, 430px) minmax(0, 1fr) 4.25rem 4.25rem;
}

html.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: 4.25rem minmax(0, 1fr) minmax(24rem, 420px) 4.25rem;
}

html.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: 4.25rem minmax(0, 1fr) 4.25rem minmax(38rem, .95fr);
}

html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(23rem, 390px) minmax(0, 1fr) minmax(23rem, 400px) 4.25rem;
}

html.mj-add-combatant-open.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-add-combatant-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(23rem, 390px) minmax(0, 1fr) 4.25rem minmax(34rem, .9fr);
}

html.mj-scene-notes-open body.mode-exploration .layout-mj,
html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(24rem, 420px) 4.25rem;
}

html.mj-roll-journal-open body.mode-exploration .layout-mj,
html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) 4.25rem minmax(38rem, .95fr);
}

.mj-drawer-panel,
.journal-drawer-panel,
.scene-notes-drawer-panel,
.combatant-drawer-panel {
  align-self: start;
  position: sticky;
  top: 5.15rem;
  min-height: min(72vh, 48rem);
  max-height: calc(100vh - 5.75rem);
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: 4.25rem minmax(0, 1fr);
  gap: 0;
  border-color: rgba(var(--accent-rgb), .34);
  box-shadow: 0 12px 30px rgba(0, 0, 0, .30);
}

.mj-drawer-panel.collapsed,
.journal-drawer-panel.collapsed,
.scene-notes-drawer-panel.collapsed,
.combatant-drawer-panel.collapsed {
  grid-template-columns: 4.25rem 0;
  min-width: 4.25rem;
  max-width: 4.25rem;
}

.mj-drawer-tab,
.journal-drawer-tab,
.scene-notes-drawer-tab,
.combatant-drawer-tab {
  width: 4.25rem;
  min-height: min(72vh, 48rem);
  height: 100%;
  padding: .9rem .25rem;
  border: 0;
  border-radius: 0;
  border-right: 1px solid rgba(var(--accent-rgb), .28);
  background:
    radial-gradient(circle at 50% 18%, rgba(var(--accent-rgb), .26), transparent 12rem),
    linear-gradient(180deg, rgba(var(--accent-rgb), .34), rgba(var(--button-bg-rgb), .98));
  color: var(--text);
  display: grid;
  place-items: center;
  font-weight: 1000;
  font-size: clamp(1.05rem, 1.18vw, 1.55rem);
  letter-spacing: .08em;
  text-transform: uppercase;
  cursor: pointer;
}

.mj-drawer-tab span,
.journal-drawer-tab span,
.scene-notes-drawer-tab span,
.combatant-drawer-tab span {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  line-height: 1.05;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .32);
}

.mj-drawer-tab:hover,
.mj-drawer-tab:focus-visible,
.journal-drawer-tab:hover,
.journal-drawer-tab:focus-visible,
.scene-notes-drawer-tab:hover,
.scene-notes-drawer-tab:focus-visible,
.combatant-drawer-tab:hover,
.combatant-drawer-tab:focus-visible {
  background:
    radial-gradient(circle at 50% 18%, rgba(var(--accent-rgb), .38), transparent 12rem),
    linear-gradient(180deg, rgba(var(--accent-rgb), .48), rgba(var(--button-bg-rgb), 1));
}

.mj-drawer-body,
.journal-drawer-body,
.scene-notes-drawer-body,
.combatant-drawer-body {
  min-width: 0;
  overflow: auto;
  padding: 1rem;
  display: grid;
  gap: 1rem;
}

.mj-drawer-panel.collapsed .mj-drawer-body,
.journal-drawer-panel.collapsed .journal-drawer-body,
.scene-notes-drawer-panel.collapsed .scene-notes-drawer-body,
.combatant-drawer-panel.collapsed .combatant-drawer-body {
  padding: 0;
  overflow: hidden;
}

.mj-drawer-head,
.journal-drawer-head,
.scene-notes-drawer-head,
.combatant-drawer-head {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 1rem;
  padding-bottom: .7rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .18);
}

.mj-drawer-head h2,
.journal-drawer-head h2,
.scene-notes-drawer-head h2,
.combatant-drawer-head h2 {
  margin: .12rem 0 0;
  font-size: clamp(1.55rem, 1.55vw, 2.1rem);
}

.mj-drawer-close,
.journal-drawer-close,
.scene-notes-drawer-close,
.combatant-drawer-close {
  min-width: 2.35rem;
  min-height: 2.35rem;
  padding: .3rem .55rem;
  font-size: 1.1rem;
}

html.mj-add-combatant-open .combatant-drawer-panel,
html.mj-scene-notes-open .scene-notes-drawer-panel,
html.mj-roll-journal-open .journal-drawer-panel {
  max-width: none;
  border-color: rgba(var(--accent-rgb), .54);
  box-shadow: 0 16px 40px rgba(0, 0, 0, .36), 0 0 0 1px rgba(var(--accent-rgb), .12) inset;
}

html.mj-add-combatant-open .combatant-drawer-body,
html.mj-scene-notes-open .scene-notes-drawer-body,
html.mj-roll-journal-open .journal-drawer-body {
  padding: 1.1rem 1.15rem 1.15rem;
}

html.mj-roll-journal-open .roll-form-structured {
  grid-template-columns: minmax(13rem, 1.3fr) minmax(7rem, .65fr) minmax(8.5rem, .75fr) minmax(8rem, .7fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open .log-form-structured {
  grid-template-columns: minmax(22rem, 1.6fr) minmax(9rem, .75fr) minmax(8rem, .7fr) auto;
  gap: .75rem;
}

html.mj-roll-journal-open #log.log {
  max-height: min(52vh, 700px);
  min-height: 17rem;
}

.scene-notes-drawer-body textarea {
  min-height: 7.5rem;
}

.combatant-drawer-body .grid-form {
  grid-template-columns: 1fr 1fr;
}

.combatant-drawer-body .grid-form .full,
.combatant-drawer-body .grid-form button.full {
  grid-column: 1 / -1;
}

@media (max-width: 1680px) {
  html.mj-add-combatant-open body.mode-combat .layout-mj,
  html.mj-add-combatant-open body.mode-combat.compact-ui .layout-mj {
    grid-template-columns: minmax(22rem, 380px) minmax(0, 1fr) 4.25rem 4.25rem;
  }

  html.mj-roll-journal-open body.mode-combat .layout-mj,
  html.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj,
  html.mj-roll-journal-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: 4.25rem minmax(0, 1fr) 4.25rem minmax(33rem, .95fr);
  }

  html.mj-roll-journal-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: minmax(0, 1fr) 4.25rem minmax(33rem, .95fr);
  }

  html.mj-roll-journal-open .roll-form-structured,
  html.mj-roll-journal-open .log-form-structured {
    grid-template-columns: 1fr 1fr;
  }

  html.mj-roll-journal-open .roll-form-structured button,
  html.mj-roll-journal-open .log-form-structured button,
  html.mj-roll-journal-open .journal-note-field {
    grid-column: 1 / -1;
  }
}

@media (max-width: 1240px) {
  .layout-mj,
  body.compact-ui .layout-mj,
  body.mode-exploration .layout-mj,
  body.mode-exploration.compact-ui .layout-mj,
  html.mj-add-combatant-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-roll-journal-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration .layout-mj {
    grid-template-columns: 1fr;
  }

  .combatant-drawer-panel,
  .encounter-panel,
  .scene-notes-drawer-panel,
  .journal-drawer-panel,
  body.mode-exploration .encounter-panel,
  body.mode-exploration .scene-notes-drawer-panel,
  body.mode-exploration .journal-drawer-panel {
    grid-column: 1;
  }

  .mj-drawer-panel,
  .mj-drawer-panel.collapsed,
  .journal-drawer-panel,
  .journal-drawer-panel.collapsed,
  .scene-notes-drawer-panel,
  .scene-notes-drawer-panel.collapsed,
  .combatant-drawer-panel,
  .combatant-drawer-panel.collapsed {
    position: static;
    min-height: auto;
    max-height: none;
    max-width: none;
    grid-template-columns: 1fr;
  }

  .mj-drawer-tab,
  .journal-drawer-tab,
  .scene-notes-drawer-tab,
  .combatant-drawer-tab {
    width: 100%;
    min-height: 3.25rem;
    height: 3.25rem;
    border-right: 0;
    border-bottom: 1px solid rgba(var(--accent-rgb), .28);
    font-size: 1.12rem;
  }

  .mj-drawer-tab span,
  .journal-drawer-tab span,
  .scene-notes-drawer-tab span,
  .combatant-drawer-tab span {
    writing-mode: horizontal-tb;
    transform: none;
  }

  html.mj-roll-journal-open .roll-form-structured,
  html.mj-roll-journal-open .log-form-structured,
  .roll-form-structured,
  .log-form-structured,
  .combatant-drawer-body .grid-form {
    grid-template-columns: 1fr;
  }

  html.mj-roll-journal-open #log.log {
    max-height: none;
  }
}

/* V0.69 — MJ : onglets droits plus discrets, empilés Notes / Journaux */
:root {
  --mj-drawer-tab-width-v69: 3.05rem;
}

.layout-mj,
body.compact-ui .layout-mj,
html.mj-combatants-2 body.compact-ui .layout-mj,
html.mj-combatants-2 .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  gap: .55rem;
}

body.mode-exploration .layout-mj,
body.mode-exploration.compact-ui .layout-mj,
html.mj-combatants-2 body.mode-exploration .layout-mj {
  grid-template-columns: minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
}

.combatant-drawer-panel { grid-column: 1; }
.encounter-panel { grid-column: 2; }
body.mode-exploration .encounter-panel { grid-column: 1; }

.mj-right-dock {
  grid-column: 3;
  align-self: start;
  position: sticky;
  top: 5.15rem;
  max-height: calc(100vh - 5.75rem);
  display: flex;
  flex-direction: column;
  gap: .42rem;
  min-width: var(--mj-drawer-tab-width-v69);
  width: 100%;
  overflow: visible;
}
body.mode-exploration .mj-right-dock { grid-column: 2; }

html.mj-add-combatant-open body.mode-combat .layout-mj,
html.mj-add-combatant-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(32rem, 560px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
}

html.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(23rem, 400px);
}

html.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(36rem, .95fr);
}

html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(23rem, 390px) minmax(0, 1fr) minmax(22rem, 390px);
}

html.mj-add-combatant-open.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-add-combatant-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(23rem, 390px) minmax(0, 1fr) minmax(33rem, .9fr);
}

html.mj-scene-notes-open body.mode-exploration .layout-mj,
html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(23rem, 400px);
}

html.mj-roll-journal-open body.mode-exploration .layout-mj,
html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(36rem, .95fr);
}

.mj-right-dock .scene-notes-drawer-panel,
.mj-right-dock .journal-drawer-panel {
  grid-column: auto;
  position: static;
  top: auto;
  min-height: auto;
  max-height: none;
  width: 100%;
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr);
  border-radius: .8rem;
  border-color: rgba(var(--accent-rgb), .18);
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .78), rgba(var(--panel-2-rgb), .76));
  box-shadow: 0 8px 18px rgba(0, 0, 0, .20);
}

.mj-right-dock .scene-notes-drawer-panel.collapsed,
.mj-right-dock .journal-drawer-panel.collapsed {
  grid-template-columns: var(--mj-drawer-tab-width-v69) 0;
  min-width: var(--mj-drawer-tab-width-v69);
  max-width: var(--mj-drawer-tab-width-v69);
  width: var(--mj-drawer-tab-width-v69);
}

.combatant-drawer-panel.collapsed {
  grid-template-columns: var(--mj-drawer-tab-width-v69) 0;
  min-width: var(--mj-drawer-tab-width-v69);
  max-width: var(--mj-drawer-tab-width-v69);
}

.mj-drawer-panel,
.combatant-drawer-panel {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr);
}

.mj-drawer-tab,
.journal-drawer-tab,
.scene-notes-drawer-tab,
.combatant-drawer-tab {
  width: var(--mj-drawer-tab-width-v69);
  padding: .65rem .18rem;
  border-right: 1px solid rgba(var(--accent-rgb), .16);
  background:
    linear-gradient(180deg, rgba(var(--accent-rgb), .16), rgba(var(--button-bg-rgb), .64));
  color: var(--muted);
  font-size: clamp(.74rem, .74vw, .92rem);
  letter-spacing: .045em;
  text-transform: none;
  opacity: .82;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.025);
}

.mj-right-dock .journal-drawer-tab,
.mj-right-dock .scene-notes-drawer-tab {
  min-height: 7.9rem;
  height: 7.9rem;
  border-radius: .8rem 0 0 .8rem;
}

.combatant-drawer-tab {
  min-height: min(46vh, 25rem);
  border-radius: .8rem 0 0 .8rem;
}

.mj-drawer-tab span,
.journal-drawer-tab span,
.scene-notes-drawer-tab span,
.combatant-drawer-tab span {
  text-shadow: none;
}

.mj-drawer-tab:hover,
.mj-drawer-tab:focus-visible,
.journal-drawer-tab:hover,
.journal-drawer-tab:focus-visible,
.scene-notes-drawer-tab:hover,
.scene-notes-drawer-tab:focus-visible,
.combatant-drawer-tab:hover,
.combatant-drawer-tab:focus-visible {
  opacity: 1;
  background:
    linear-gradient(180deg, rgba(var(--accent-rgb), .24), rgba(var(--button-bg-rgb), .82));
}

html.mj-scene-notes-open .scene-notes-drawer-tab,
html.mj-roll-journal-open .journal-drawer-tab,
html.mj-add-combatant-open .combatant-drawer-tab {
  opacity: 1;
  background:
    linear-gradient(180deg, rgba(var(--accent-rgb), .30), rgba(var(--button-bg-rgb), .88));
  color: var(--text);
}

html.mj-scene-notes-open .scene-notes-drawer-panel,
html.mj-roll-journal-open .journal-drawer-panel {
  max-width: none;
  width: 100%;
  border-color: rgba(var(--accent-rgb), .38);
  box-shadow: 0 14px 32px rgba(0, 0, 0, .30), 0 0 0 1px rgba(var(--accent-rgb), .08) inset;
}

html.mj-scene-notes-open .scene-notes-drawer-body,
html.mj-roll-journal-open .journal-drawer-body {
  max-height: calc(100vh - 6.2rem);
}

@media (max-width: 1680px) {
  html.mj-roll-journal-open body.mode-combat .layout-mj,
  html.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj,
  html.mj-roll-journal-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(32rem, .92fr);
  }

  html.mj-roll-journal-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: minmax(0, 1fr) minmax(32rem, .92fr);
  }
}

@media (max-width: 1240px) {
  .layout-mj,
  body.compact-ui .layout-mj,
  body.mode-exploration .layout-mj,
  body.mode-exploration.compact-ui .layout-mj,
  html.mj-add-combatant-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-roll-journal-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration .layout-mj {
    grid-template-columns: 1fr;
  }

  .mj-right-dock,
  body.mode-exploration .mj-right-dock {
    grid-column: 1;
    position: static;
    max-height: none;
    gap: .5rem;
  }

  .mj-right-dock .scene-notes-drawer-panel,
  .mj-right-dock .scene-notes-drawer-panel.collapsed,
  .mj-right-dock .journal-drawer-panel,
  .mj-right-dock .journal-drawer-panel.collapsed,
  .combatant-drawer-panel,
  .combatant-drawer-panel.collapsed {
    width: 100%;
    max-width: none;
    grid-template-columns: 1fr;
  }

  .mj-right-dock .journal-drawer-tab,
  .mj-right-dock .scene-notes-drawer-tab,
  .combatant-drawer-tab,
  .mj-drawer-tab,
  .journal-drawer-tab,
  .scene-notes-drawer-tab {
    width: 100%;
    min-height: 3rem;
    height: 3rem;
    border-radius: .75rem .75rem 0 0;
    font-size: 1rem;
  }
}

/* V0.70 — MJ : un panneau droit ouvert prend toute la hauteur disponible */
html.mj-scene-notes-open .mj-right-dock,
html.mj-roll-journal-open .mj-right-dock {
  height: calc(100vh - 5.75rem);
  max-height: calc(100vh - 5.75rem);
  min-height: min(38rem, calc(100vh - 5.75rem));
}

html.mj-scene-notes-open .mj-right-dock .journal-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .scene-notes-drawer-panel {
  display: none;
}

html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .journal-drawer-panel {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-self: stretch;
}

html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-tab,
html.mj-roll-journal-open .mj-right-dock .journal-drawer-tab {
  height: 100%;
  min-height: 100%;
}

html.mj-scene-notes-open .scene-notes-drawer-body,
html.mj-roll-journal-open .journal-drawer-body {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: auto;
}

html.mj-roll-journal-open .journal-drawer-body {
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
}

html.mj-roll-journal-open #log.log {
  max-height: none;
  min-height: 0;
  height: 100%;
  overflow: auto;
}

@media (max-width: 1240px) {
  html.mj-scene-notes-open .mj-right-dock,
  html.mj-roll-journal-open .mj-right-dock {
    height: auto;
    min-height: 0;
    max-height: none;
  }

  html.mj-scene-notes-open .mj-right-dock .journal-drawer-panel,
  html.mj-roll-journal-open .mj-right-dock .scene-notes-drawer-panel {
    display: grid;
  }

  html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-tab,
  html.mj-roll-journal-open .mj-right-dock .journal-drawer-tab {
    height: 3rem;
    min-height: 3rem;
  }
}

/* V0.75 — MJ : tiroir Dés plus large + affichage du dernier résultat */
.mj-left-dock {
  grid-column: 1;
  align-self: start;
  position: sticky;
  top: 5.15rem;
  max-height: calc(100vh - 5.75rem);
  display: flex;
  flex-direction: column;
  gap: .42rem;
  min-width: var(--mj-drawer-tab-width-v69);
  width: 100%;
  overflow: visible;
}

body.mode-exploration .mj-left-dock {
  display: flex;
}

.mj-left-dock .combatant-drawer-panel,
.mj-left-dock .dice-drawer-panel,
.mj-left-dock .encounter-generator-panel {
  position: static;
  top: auto;
  min-height: auto;
  max-height: none;
  width: 100%;
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr);
  border-radius: .8rem;
  border-color: rgba(var(--accent-rgb), .18);
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .78), rgba(var(--panel-2-rgb), .76));
  box-shadow: 0 8px 18px rgba(0, 0, 0, .20);
}

.mj-left-dock .combatant-drawer-panel.collapsed,
.mj-left-dock .dice-drawer-panel.collapsed,
.mj-left-dock .encounter-generator-panel.collapsed {
  grid-template-columns: var(--mj-drawer-tab-width-v69) 0;
  min-width: var(--mj-drawer-tab-width-v69);
  max-width: var(--mj-drawer-tab-width-v69);
  width: var(--mj-drawer-tab-width-v69);
}

.mj-left-dock .combatant-drawer-tab {
  min-height: min(34vh, 18rem);
}

.mj-left-dock .dice-drawer-tab {
  min-height: 7.2rem;
  border-radius: .8rem 0 0 .8rem;
}

.dice-drawer-tab span {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  line-height: 1;
}

html.mj-roll-dice-open body.mode-combat .layout-mj,
html.mj-roll-dice-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(22rem, 370px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
}

html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(21rem, 350px) minmax(0, 1fr) minmax(33rem, .9fr);
}

html.mj-add-combatant-open .mj-left-dock,
html.mj-roll-dice-open .mj-left-dock {
  height: calc(100vh - 5.75rem);
  max-height: calc(100vh - 5.75rem);
  min-height: min(30rem, calc(100vh - 5.75rem));
}

html.mj-add-combatant-open .mj-left-dock .dice-drawer-panel,
html.mj-roll-dice-open .mj-left-dock .combatant-drawer-panel {
  display: none;
}

html.mj-add-combatant-open .mj-left-dock .combatant-drawer-panel,
html.mj-roll-dice-open .mj-left-dock .dice-drawer-panel {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-self: stretch;
  max-width: none;
  width: 100%;
  border-color: rgba(var(--accent-rgb), .54);
  box-shadow: 0 16px 40px rgba(0, 0, 0, .36), 0 0 0 1px rgba(var(--accent-rgb), .12) inset;
}

html.mj-add-combatant-open .mj-left-dock .combatant-drawer-tab,
html.mj-roll-dice-open .mj-left-dock .dice-drawer-tab {
  height: 100%;
  min-height: 100%;
}

html.mj-roll-dice-open .dice-drawer-body {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: auto;
  padding: 1.1rem 1.15rem 1.15rem;
}

html.mj-roll-dice-open .dice-form-structured {
  display: grid;
  grid-template-columns: 1fr;
  gap: .8rem;
  align-items: stretch;
}

html.mj-roll-dice-open .dice-form-structured button {
  width: 100%;
}

html.mj-roll-journal-open .journal-drawer-body {
  grid-template-rows: auto auto auto minmax(0, 1fr);
}

html.mj-roll-journal-open .journal-view-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: .75rem;
}

html.mj-roll-journal-open .journal-view-toolbar label {
  min-width: 11rem;
}

.log-entry-managed {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .75rem;
  align-items: center;
}

.log-kind-icon {
  width: 2.1rem;
  height: 2.1rem;
  border-radius: .7rem;
  display: grid;
  place-items: center;
  background: rgba(var(--accent-rgb), .12);
  border: 1px solid rgba(var(--accent-rgb), .24);
  font-size: 1.1rem;
}

.log-entry-content {
  min-width: 0;
}

.log-entry-actions {
  display: flex;
  flex-wrap: nowrap;
  gap: .35rem;
  justify-content: end;
}

.log-entry-actions button {
  min-width: 2.2rem;
  min-height: 2.05rem;
  padding: .25rem .45rem;
  border-radius: .55rem;
  font-size: .95rem;
}

.log-entry-kind-roll .log-kind-icon {
  background: rgba(var(--button-bg-rgb), .44);
}

.log-entry-kind-creature .log-kind-icon {
  background: rgba(var(--danger-rgb), .12);
  border-color: rgba(var(--danger-rgb), .28);
}

.log-entry-empty {
  opacity: .75;
}

@media (max-width: 1240px) {
  .mj-left-dock,
  body.mode-exploration .mj-left-dock {
    grid-column: 1;
    position: static;
    display: flex;
    max-height: none;
    gap: .5rem;
  }

  html.mj-add-combatant-open .mj-left-dock,
  html.mj-roll-dice-open .mj-left-dock {
    height: auto;
    min-height: 0;
    max-height: none;
  }

  html.mj-add-combatant-open .mj-left-dock .dice-drawer-panel,
  html.mj-roll-dice-open .mj-left-dock .combatant-drawer-panel {
    display: grid;
  }

  .mj-left-dock .combatant-drawer-panel,
  .mj-left-dock .combatant-drawer-panel.collapsed,
  .mj-left-dock .dice-drawer-panel,
  .mj-left-dock .dice-drawer-panel.collapsed {
    width: 100%;
    max-width: none;
    grid-template-columns: 1fr;
  }

  .mj-left-dock .combatant-drawer-tab,
  .mj-left-dock .dice-drawer-tab,
  html.mj-add-combatant-open .mj-left-dock .combatant-drawer-tab,
  html.mj-roll-dice-open .mj-left-dock .dice-drawer-tab {
    width: 100%;
    min-height: 3rem;
    height: 3rem;
    border-radius: .75rem .75rem 0 0;
  }

  .dice-drawer-tab span {
    writing-mode: horizontal-tb;
    transform: none;
  }

  .log-entry-managed {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .log-entry-actions {
    grid-column: 1 / -1;
    justify-content: start;
  }
}

/* V0.75 — MJ : interface Dés rapide plus large, bonus/malus et avantage */
html.mj-roll-dice-open body.mode-combat .layout-mj,
html.mj-roll-dice-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(32rem, 560px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
}

html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(30rem, 520px) minmax(0, 1fr) minmax(33rem, .9fr);
}

html.mj-roll-dice-open .dice-fast-form {
  display: flex;
  flex-direction: column;
  gap: .95rem;
}

.dice-top-row {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(8rem, .8fr);
  gap: .75rem;
}

.dice-quantity-row {
  display: grid;
  grid-template-columns: auto 5.5rem minmax(0, 1fr);
  gap: .7rem;
  align-items: center;
  padding: .7rem .75rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .8rem;
  background: rgba(0, 0, 0, .14);
}

.dice-count-label,
.dice-count-hint {
  color: var(--muted);
  font-size: .84rem;
}

.dice-count-input {
  text-align: center;
  font-size: 1.35rem;
  font-weight: 900;
  padding: .45rem .55rem;
}

.dice-button-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .7rem;
}

.dice-image-button {
  min-height: 5.4rem;
  padding: .55rem .35rem .62rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: .95rem;
  background: linear-gradient(180deg, rgba(var(--panel-2-rgb), .94), rgba(0, 0, 0, .18));
  color: var(--text);
  box-shadow: 0 10px 22px rgba(0, 0, 0, .23), inset 0 1px 0 rgba(255, 255, 255, .05);
  cursor: pointer;
}

.dice-image-button:hover,
.dice-image-button:focus-visible,
.dice-image-button.selected {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .72);
  box-shadow: 0 14px 28px rgba(0, 0, 0, .30), 0 0 0 2px rgba(var(--accent-rgb), .20);
}

.dice-image-button strong {
  font-size: .95rem;
  letter-spacing: .02em;
}

.dice-poly {
  width: 3.2rem;
  height: 3.2rem;
  display: grid;
  place-items: center;
  font-weight: 950;
  font-size: .9rem;
  color: rgba(255, 255, 255, .94);
  text-shadow: 0 1px 2px rgba(0, 0, 0, .55);
  background: radial-gradient(circle at 35% 22%, rgba(255,255,255,.26), rgba(var(--accent-rgb), .78) 42%, rgba(0,0,0,.28));
  border: 1px solid rgba(255, 255, 255, .15);
  box-shadow: inset 0 0 18px rgba(255, 255, 255, .08), 0 7px 14px rgba(0, 0, 0, .35);
}

.die-d4 .dice-poly { clip-path: polygon(50% 4%, 96% 92%, 4% 92%); }
.die-d6 .dice-poly { border-radius: .72rem; }
.die-d8 .dice-poly { clip-path: polygon(50% 0, 96% 50%, 50% 100%, 4% 50%); }
.die-d10 .dice-poly { clip-path: polygon(50% 0, 94% 33%, 78% 100%, 22% 100%, 6% 33%); }
.die-d12 .dice-poly { clip-path: polygon(50% 0, 90% 18%, 100% 62%, 72% 100%, 28% 100%, 0 62%, 10% 18%); }
.die-d20 .dice-poly { clip-path: polygon(50% 0, 87% 12%, 100% 50%, 87% 88%, 50% 100%, 13% 88%, 0 50%, 13% 12%); }
.die-d100 .dice-poly { width: 3.55rem; border-radius: 999px; }

.dice-advantage-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .7rem;
}

.dice-mode-toggle {
  min-height: 3rem;
  border-radius: .85rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  background: rgba(0, 0, 0, .16);
  color: var(--text);
  font-weight: 900;
}

.dice-mode-toggle.active {
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .50), rgba(var(--accent-rgb), .25));
  border-color: rgba(var(--accent-rgb), .82);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .20);
}

.dice-modifier-panel {
  padding: .75rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .9rem;
  background: rgba(0, 0, 0, .14);
}

.dice-modifier-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: .7rem;
  align-items: center;
  margin-bottom: .6rem;
  color: var(--muted);
  font-size: .84rem;
}

#rollModifierLabel {
  min-width: 3rem;
  text-align: center;
  color: var(--text);
  font-size: 1.2rem;
}

.dice-modifier-clear {
  padding: .38rem .62rem;
  font-size: .82rem;
}

.dice-modifier-row {
  display: grid;
  grid-template-columns: 1.8rem repeat(10, minmax(0, 1fr));
  gap: .36rem;
  align-items: center;
}

.dice-modifier-row + .dice-modifier-row {
  margin-top: .5rem;
}

.dice-modifier-row-label {
  text-align: center;
  font-size: 1.25rem;
  font-weight: 950;
}

.dice-modifier-row button {
  min-height: 2.25rem;
  padding: .25rem .1rem;
  border-radius: .55rem;
  font-weight: 900;
  color: white;
}

.bonus-row .dice-modifier-row-label { color: #85efac; }
.bonus-row button {
  background: linear-gradient(180deg, rgba(34, 197, 94, .86), rgba(22, 101, 52, .86));
  border-color: rgba(134, 239, 172, .40);
}

.malus-row .dice-modifier-row-label { color: #fca5a5; }
.malus-row button {
  background: linear-gradient(180deg, rgba(239, 68, 68, .86), rgba(127, 29, 29, .88));
  border-color: rgba(252, 165, 165, .42);
}

.dice-modifier-row button.selected {
  outline: 2px solid rgba(255, 255, 255, .85);
  outline-offset: 2px;
  transform: translateY(-1px);
}

@media (max-width: 900px) {
  .dice-top-row,
  .dice-quantity-row,
  .dice-advantage-row,
  .dice-modifier-head {
    grid-template-columns: 1fr;
  }
  .dice-button-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .dice-modifier-row {
    grid-template-columns: 1.6rem repeat(5, minmax(0, 1fr));
  }
}

/* V0.74 — MJ : le dé se sélectionne, le jet part seulement avec Lancer */
.dice-launch-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .85rem;
  align-items: center;
  padding: .78rem .85rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .95rem;
  background: rgba(0, 0, 0, .18);
}

.dice-selection-summary {
  color: var(--muted);
  font-size: .95rem;
}

.dice-selection-summary strong {
  display: inline-block;
  margin-left: .3rem;
  color: var(--text);
  font-size: 1.18rem;
  letter-spacing: .02em;
}

.dice-launch-button {
  min-width: 8.5rem;
  min-height: 3rem;
  font-size: 1.02rem;
  font-weight: 950;
}

@media (max-width: 900px) {
  .dice-launch-row {
    grid-template-columns: 1fr;
  }
  .dice-launch-button {
    width: 100%;
  }
}

/* V0.75 — MJ : affichage du dernier résultat en haut du panneau Dés */
.dice-current-display {
  display: grid;
  gap: .22rem;
  padding: .82rem .95rem;
  border: 1px solid rgba(var(--accent-rgb), .30);
  border-radius: 1rem;
  background:
    radial-gradient(circle at 18% 18%, rgba(var(--accent-rgb), .24), transparent 42%),
    linear-gradient(180deg, rgba(0, 0, 0, .26), rgba(0, 0, 0, .13));
  box-shadow: 0 12px 28px rgba(0, 0, 0, .24), inset 0 1px 0 rgba(255, 255, 255, .06);
  text-align: center;
}

.dice-current-label {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}

#rollSelectionDisplay {
  color: var(--text);
  font-size: clamp(1.65rem, 3.6vw, 3.15rem);
  line-height: 1.05;
  font-weight: 900;
  letter-spacing: .02em;
  text-shadow: 0 3px 16px rgba(0, 0, 0, .42);
}

#rollSelectionMeta {
  color: var(--muted);
  font-size: .84rem;
  font-weight: 650;
}

html.mj-roll-dice-open .dice-drawer-body {
  padding-top: .95rem;
}


/* V0.75 — Ajustements finaux Dés : fenêtre plus large et résultat moins énorme */
html.mj-roll-dice-open body.mode-combat .layout-mj,
html.mj-roll-dice-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(32rem, 560px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
}

html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat .layout-mj,
html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(30rem, 520px) minmax(0, 1fr) minmax(33rem, .9fr);
}

html.mj-roll-dice-open .dice-drawer-body {
  padding: 1rem 1.05rem 1.1rem;
}

#rollSelectionDisplay {
  font-size: clamp(1.65rem, 3.6vw, 3.15rem);
  line-height: 1.05;
  font-weight: 900;
}

#rollSelectionMeta {
  font-size: .84rem;
  line-height: 1.35;
}

@media (max-width: 1240px) {
  html.mj-roll-dice-open body.mode-combat .layout-mj,
  html.mj-roll-dice-open body.mode-combat.compact-ui .layout-mj,
  html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat .layout-mj,
  html.mj-roll-dice-open.mj-roll-journal-open body.mode-combat.compact-ui .layout-mj {
    grid-template-columns: 1fr;
  }
}

/* V0.76 — fenêtres de confirmation intégrées à l'interface */
body[data-settings-scope="mj"] .app-confirm-dialog {
  width: min(620px, calc(100vw - 2rem));
}

.app-confirm-card {
  gap: 1.1rem;
  padding: 1.1rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}

.app-confirm-head {
  align-items: flex-start;
}

.app-confirm-title-wrap {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: .9rem;
  align-items: start;
}

.app-confirm-icon {
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  border-radius: 1rem;
  border: 1px solid rgba(var(--danger-rgb), .35);
  background: radial-gradient(circle at 35% 20%, rgba(var(--danger-rgb), .32), rgba(var(--danger-rgb), .10));
  font-size: 1.45rem;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08);
}

.app-confirm-details {
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .9rem;
  background: rgba(var(--input-rgb), .32);
  color: var(--text);
  padding: .8rem .9rem;
  line-height: 1.35;
  max-height: 10rem;
  overflow: auto;
}

.app-confirm-actions {
  border-top: 1px solid rgba(var(--accent-rgb), .15);
  padding-top: .85rem;
}

.app-confirm-actions .danger {
  min-width: 9.5rem;
  font-weight: 800;
}

@media (max-width: 640px) {
  .app-confirm-title-wrap {
    grid-template-columns: 1fr;
  }
  .app-confirm-icon {
    width: 2.6rem;
    height: 2.6rem;
  }
}

/* V0.79 — panneau Notes géré comme un vrai outil de travail */
html.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-scene-notes-open body.mode-exploration .layout-mj,
html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj,
html.mj-roll-dice-open.mj-scene-notes-open body.mode-combat .layout-mj,
html.mj-roll-dice-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: minmax(28rem, 500px) minmax(0, 1fr) minmax(32rem, .85fr);
}

html.mj-scene-notes-open .scene-notes-drawer-body {
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
}

.scene-visible-card,
.scene-note-form {
  display: grid;
  gap: .8rem;
  padding: .9rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: 1rem;
  background: rgba(0, 0, 0, .14);
}

.scene-visible-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: start;
}

.scene-visible-head h3 {
  margin: .1rem 0 0;
  font-size: 1.25rem;
}

.scene-visible-badge {
  padding: .28rem .55rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .25);
  background: rgba(var(--accent-rgb), .12);
  color: var(--muted);
  font-size: .76rem;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.scene-note-form {
  grid-template-columns: minmax(0, 1.3fr) minmax(10rem, .7fr);
  align-items: end;
}

.scene-note-text-field {
  grid-column: 1 / -1;
}

.scene-note-form-actions {
  grid-column: 1 / -1;
  display: flex;
  gap: .65rem;
  justify-content: flex-end;
  align-items: center;
}

.scene-notes-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  align-items: end;
}

.scene-notes-list {
  display: grid;
  align-content: start;
  gap: .7rem;
  min-height: 0;
  height: 100%;
  overflow: auto;
  padding-right: .15rem;
}

.scene-note-entry {
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .9rem;
  background: rgba(var(--panel-2-rgb), .62);
  padding: .75rem;
}

.scene-note-managed {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: .75rem;
  align-items: start;
}

.scene-note-managed.private {
  border-color: rgba(var(--accent-rgb), .14);
  background: rgba(0, 0, 0, .16);
}

.scene-note-icon {
  width: 2.15rem;
  height: 2.15rem;
  border-radius: .72rem;
  display: grid;
  place-items: center;
  background: rgba(var(--accent-rgb), .12);
  border: 1px solid rgba(var(--accent-rgb), .24);
  font-size: 1.1rem;
}

.scene-note-content {
  min-width: 0;
  display: grid;
  gap: .25rem;
}

.scene-note-meta {
  color: var(--muted);
  font-size: .78rem;
  font-weight: 700;
}

.scene-note-content h3 {
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.2;
}

.scene-note-text {
  white-space: pre-wrap;
  line-height: 1.38;
  color: var(--text);
}

.scene-note-actions {
  display: flex;
  flex-wrap: nowrap;
  gap: .35rem;
  justify-content: end;
}

.scene-note-actions button {
  min-width: 2.2rem;
  min-height: 2.05rem;
  padding: .25rem .45rem;
  border-radius: .55rem;
  font-size: .95rem;
}

.scene-note-empty {
  color: var(--muted);
  opacity: .82;
}

.legacy-dm-notes[hidden] {
  display: none !important;
}

@media (max-width: 1680px) {
  html.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj,
  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(31rem, .92fr);
  }

  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: minmax(0, 1fr) minmax(31rem, .92fr);
  }
}

@media (max-width: 1240px) {
  html.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj,
  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj,
  html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-add-combatant-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj,
  html.mj-roll-dice-open.mj-scene-notes-open body.mode-combat .layout-mj,
  html.mj-roll-dice-open.mj-scene-notes-open body.mode-combat.compact-ui .layout-mj {
    grid-template-columns: 1fr;
  }

  .scene-note-form,
  .scene-note-managed {
    grid-template-columns: 1fr;
  }

  .scene-note-actions {
    justify-content: start;
  }
}

/* V0.79 — MJ : phrase de scène dans la banderole + formulaires Notes repliables */
.topbar-mj {
  display: grid;
  grid-template-columns: minmax(15rem, auto) minmax(18rem, 1fr) auto;
  align-items: center;
  gap: 1rem;
}

.mj-title-block {
  justify-self: start;
}

.mj-top-actions {
  justify-self: end;
}

.mj-scene-banner {
  justify-self: stretch;
  min-height: 3.05rem;
  padding: .55rem 1.15rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 50% 50%, rgba(var(--accent-rgb), .18), transparent 70%),
    linear-gradient(90deg, rgba(0, 0, 0, .18), rgba(var(--panel-2-rgb), .68), rgba(0, 0, 0, .18));
  box-shadow: 0 10px 26px rgba(0, 0, 0, .18), inset 0 0 0 1px rgba(255,255,255,.025);
  min-width: 0;
}

.mj-scene-banner[hidden] {
  display: none !important;
}

.mj-scene-banner span {
  max-width: 100%;
  color: var(--text);
  font-weight: 900;
  font-size: clamp(1rem, 1.08vw, 1.45rem);
  line-height: 1.18;
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.scene-visible-details,
.scene-note-form-shell {
  display: grid;
  gap: 0;
  padding: 0;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: 1rem;
  background: rgba(0, 0, 0, .14);
  overflow: hidden;
}

.scene-details-summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: .82rem .95rem;
  user-select: none;
  border-radius: inherit;
}

.scene-details-summary::-webkit-details-marker {
  display: none;
}

.scene-details-summary::after {
  content: '▾';
  color: var(--muted);
  font-weight: 900;
  transition: transform .18s ease;
}

.scene-visible-details[open] > .scene-details-summary::after,
.scene-note-form-shell[open] > .scene-details-summary::after {
  transform: rotate(180deg);
}

.scene-details-title {
  min-width: 0;
  display: grid;
  gap: .08rem;
}

.scene-details-title .eyebrow {
  margin: 0;
}

.scene-details-title strong {
  color: var(--text);
  font-size: 1.08rem;
  line-height: 1.15;
}

.scene-visible-editor {
  display: grid;
  gap: .78rem;
  padding: 0 .95rem .95rem;
}

.scene-note-form-shell .scene-note-form {
  border: 0;
  border-top: 1px solid rgba(var(--accent-rgb), .13);
  border-radius: 0;
  background: transparent;
  padding: .9rem .95rem .95rem;
}

.scene-note-form-shell:not([open]) .scene-note-form,
.scene-visible-details:not([open]) .scene-visible-editor {
  display: none;
}

html.mj-scene-notes-open .scene-notes-drawer-body {
  grid-template-rows: auto auto auto auto minmax(0, 1fr);
  align-content: start;
}

@media (max-width: 1180px) {
  .topbar-mj {
    grid-template-columns: 1fr auto;
  }

  .mj-scene-banner {
    grid-column: 1 / -1;
    grid-row: 2;
  }
}

.mj-dragon-button {
  position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 1200;
  width: 4.25rem; height: 4.25rem; border-radius: 50%; font-size: 2.25rem;
  display: grid; place-items: center; border: 2px solid #d8b560;
  background: radial-gradient(circle at 35% 28%, #6f9945, #244322 55%, #142515);
  box-shadow: 0 0 0 .3rem rgba(216,181,96,.16), 0 .7rem 1.8rem rgba(0,0,0,.5);
}
.mj-dragon-button:hover { transform: translateY(-2px) scale(1.04); }
.mj-dragon-dialog { width: min(46rem, calc(100vw - 2rem)); }
.mj-dragon-card { min-height: min(42rem, calc(100vh - 4rem)); display: flex; flex-direction: column; }
.mj-dragon-title { display: flex; align-items: center; gap: .85rem; }
.mj-dragon-avatar { width: 3.5rem; height: 3.5rem; display: grid; place-items: center; border-radius: 50%; font-size: 2rem; background: #203b22; border: 1px solid #d8b560; }
.mj-dragon-messages { flex: 1; min-height: 18rem; max-height: 52vh; overflow: auto; padding: .75rem; border: 1px solid rgba(216,181,96,.45); border-radius: .85rem; background: rgba(13,19,13,.72); }
.mj-dragon-messages article { max-width: 88%; margin: .5rem 0; padding: .7rem .85rem; border-radius: .8rem; }
.mj-dragon-messages article p { margin: .25rem 0 0; white-space: normal; }
.mj-dragon-messages .dragon { background: rgba(52,91,54,.65); border: 1px solid rgba(123,175,102,.5); }
.mj-dragon-messages .mj { margin-left: auto; background: rgba(103,78,35,.72); border: 1px solid rgba(216,181,96,.45); }
.mj-dragon-quick-actions { display: flex; flex-wrap: wrap; gap: .45rem; margin-top: .7rem; }
.mj-dragon-compose { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .6rem; align-items: stretch; margin-top: .7rem; }
.mj-dragon-compose textarea { resize: vertical; min-height: 4rem; }
@media (max-width: 700px) { .mj-dragon-button { right: .7rem; bottom: .7rem; } .mj-dragon-compose { grid-template-columns: 1fr; } }

.combatant-voice-button { width: 3rem; height: 3rem; border-radius: .75rem; font-size: 1.3rem; border: 1px solid #7eb6d8; background: linear-gradient(180deg,#183b52,#102635); }
.melodielle-voice-dialog { width: min(78rem, calc(100vw - 1rem)); height: calc(100vh - 1rem); max-height: none; }
.melodielle-voice-card { height: 100%; display: grid; grid-template-rows: auto auto minmax(0,1fr); overflow: hidden; }
.melodielle-voice-compose { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .75rem; align-items: end; }
.melodielle-voice-compose label { grid-column: 1; }
.melodielle-voice-compose .settings-actions { grid-column: 2; margin: 0; }
.melodielle-voice-compose .settings-hint { grid-column: 1 / -1; }
.melodielle-voice-history-section { min-height: 0; display: flex; flex-direction: column; }
.melodielle-voice-history { overflow: auto; display: grid; gap: .6rem; padding-right: .25rem; }
.character-voice-history-row { display: grid; grid-template-columns: auto minmax(0,1fr) auto auto; gap: .75rem; align-items: center; padding: .7rem; border: 1px solid rgba(216,181,96,.35); border-radius: .75rem; background: rgba(20,16,10,.62); }
.character-voice-download { min-width:2.8rem; min-height:2.8rem; display:grid; place-items:center; padding:.45rem; text-decoration:none; }
.character-voice-history-row div { display: grid; gap: .25rem; }
.character-voice-history-row small { color: #cfbd91; }
.character-voice-history-play { width: 2.8rem; height: 2.8rem; border-radius: 50%; }
#characterVoiceStatus.is-busy::before { content:''; display:inline-block; width:.8rem; height:.8rem; margin-right:.5rem; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:voice-spin .7s linear infinite; }
@keyframes voice-spin { to { transform:rotate(360deg); } }
@media (max-width:700px) { .melodielle-voice-compose { grid-template-columns:1fr; } .melodielle-voice-compose label,.melodielle-voice-compose .settings-actions { grid-column:1; } }
.ai-voice-picker-dialog { width:min(54rem,calc(100vw - 1rem)); max-height:calc(100vh - 1rem); }
.ai-voice-picker-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(18rem,1fr)); gap:.65rem; overflow:auto; max-height:65vh; padding:.15rem; }
.ai-voice-choice { display:flex; justify-content:space-between; gap:.7rem; align-items:center; padding:.75rem; border:1px solid rgba(216,181,96,.35); border-radius:.75rem; background:rgba(20,16,10,.62); }
.ai-voice-choice.selected { border-color:#7fca85; box-shadow:inset 0 0 0 1px rgba(127,202,133,.4); }
.ai-voice-choice > div:first-child { display:grid; gap:.2rem; min-width:0; }
.ai-voice-choice strong { overflow-wrap:anywhere; }
.summary-voice-dialog { width:min(78rem,calc(100vw - 1rem)); height:calc(100vh - 1rem); max-height:none; }
.summary-voice-card { height:100%; display:grid; grid-template-rows:auto auto auto auto minmax(0,1fr); overflow:hidden; }
.summary-voice-recordings-panel { border:1px solid rgba(216,181,96,.28); border-radius:.75rem; padding:.7rem; }
.summary-voice-recordings-panel h3 { margin:0 0 .5rem; }
.summary-voice-recordings { display:grid; gap:.45rem; max-height:10rem; overflow:auto; }
.summary-voice-recording { display:grid; grid-template-columns:auto minmax(0,1fr) auto auto; gap:.55rem; align-items:center; }
.summary-voice-recording p { margin:0; }
.summary-voice-segments { overflow:auto; display:grid; gap:.65rem; }
.summary-voice-segment { display:grid; grid-template-columns:minmax(12rem,18rem) minmax(0,1fr) auto; gap:.75rem; align-items:center; padding:.75rem; border:1px solid rgba(216,181,96,.35); border-radius:.75rem; background:rgba(20,16,10,.62); }
.summary-voice-text { width:100%; min-height:5rem; resize:vertical; line-height:1.45; }
.summary-voice-segment-actions { display:flex; gap:.4rem; align-items:center; }
.ai-combat-validation { display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; margin-top:.55rem; padding:.55rem; border:1px solid rgba(216,181,96,.32); border-radius:.65rem; }
.ai-combat-validation select { min-width:13rem; flex:1; }
.ai-combat-validation.is-validated { border-color:#66cf7a; color:#8ee89d; }
.ai-combat-validation.is-incomplete { border-color:#d79a4d; color:#ffd28a; }
.summary-voice-segment.is-prepared { border-color:#66cf7a; box-shadow:0 0 0 2px rgba(102,207,122,.32),inset 0 0 1.5rem rgba(45,126,62,.14); }
.summary-voice-segment.is-prepared::before { content:'✓ WAV prêt'; color:#8ee89d; font-weight:800; grid-column:1/-1; }
@media(max-width:700px){.summary-voice-segment{grid-template-columns:1fr auto}.summary-voice-text{grid-column:1/-1;grid-row:2}}

@media (max-width: 760px) {
  .topbar-mj {
    grid-template-columns: 1fr;
  }

  .mj-title-block,
  .mj-top-actions,
  .mj-scene-banner {
    justify-self: stretch;
  }
}

.topbar-mj .mj-title-block { grid-column: 1; }
.topbar-mj .mj-scene-banner { grid-column: 2; }
.topbar-mj .mj-top-actions { grid-column: 3; }

@media (max-width: 1180px) {
  .topbar-mj .mj-title-block { grid-column: 1; }
  .topbar-mj .mj-top-actions { grid-column: 2; }
  .topbar-mj .mj-scene-banner { grid-column: 1 / -1; }
}

@media (max-width: 760px) {
  .topbar-mj .mj-title-block,
  .topbar-mj .mj-top-actions,
  .topbar-mj .mj-scene-banner { grid-column: 1; }
}

/* V0.79 — les notes commencent en haut de la zone de liste au lieu d’être poussées au bas du panneau. */

/* V0.80 — notes visibles intégrées au journal public côté joueurs */
.player-log .player-visible-note-entry {
  border-left-color: rgba(193, 136, 255, 0.95);
  background: rgba(122, 74, 164, 0.18);
}

.player-log .player-visible-note-entry strong {
  display: block;
  margin-bottom: 0.2rem;
}

.player-log .player-visible-note-entry p {
  margin: 0;
}

.player-log .player-log-kind {
  display: block;
  margin-top: 0.25rem;
  font-size: 1.1rem;
}

.player-log-empty {
  opacity: 0.72;
}

/* V0.81 — ordre manuel des notes MJ */
.scene-note-actions button:disabled {
  opacity: .35;
  cursor: not-allowed;
  filter: grayscale(.35);
}

/* V0.82 — comptes applicatifs sortis des paramètres d’affichage */
.app-accounts-dialog {
  width: min(980px, calc(100vw - 2rem));
}
.app-accounts-card {
  gap: 1.1rem;
}
.app-accounts-manager {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}
.app-accounts-manager h3 {
  margin-top: 0;
}
.app-accounts-manager .session-code-settings {
  margin-top: .75rem;
}

/* V0.83 — MJ : panneau Images + affichage plein écran côté joueurs */
.mj-right-dock .player-images-drawer-panel {
  grid-column: auto;
  position: static;
  top: auto;
  min-height: auto;
  max-height: none;
  width: 100%;
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr);
  border-radius: .8rem;
  border-color: rgba(var(--accent-rgb), .18);
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .78), rgba(var(--panel-2-rgb), .76));
  box-shadow: 0 8px 18px rgba(0, 0, 0, .20);
}

.mj-right-dock .player-images-drawer-panel.collapsed {
  grid-template-columns: var(--mj-drawer-tab-width-v69) 0;
  min-width: var(--mj-drawer-tab-width-v69);
  max-width: var(--mj-drawer-tab-width-v69);
  width: var(--mj-drawer-tab-width-v69);
}

.mj-right-dock .player-images-drawer-tab {
  min-height: 7.9rem;
  height: 7.9rem;
  border-radius: .8rem 0 0 .8rem;
}

html.mj-player-images-open body.mode-combat .layout-mj,
html.mj-player-images-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-player-images-open body.mode-exploration .layout-mj,
html.mj-player-images-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-player-images-open .mj-right-dock,
html.mj-scene-notes-open .mj-right-dock,
html.mj-roll-journal-open .mj-right-dock {
  height: calc(100vh - 5.75rem);
  max-height: calc(100vh - 5.75rem);
  min-height: min(38rem, calc(100vh - 5.75rem));
}

html.mj-player-images-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-player-images-open .mj-right-dock .journal-drawer-panel,
html.mj-scene-notes-open .mj-right-dock .player-images-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .player-images-drawer-panel {
  display: none;
}

html.mj-player-images-open .mj-right-dock .player-images-drawer-panel {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-self: stretch;
  max-width: none;
  width: 100%;
  border-color: rgba(var(--accent-rgb), .38);
  box-shadow: 0 14px 32px rgba(0, 0, 0, .30), 0 0 0 1px rgba(var(--accent-rgb), .08) inset;
}

html.mj-player-images-open .mj-right-dock .player-images-drawer-tab {
  height: 100%;
  min-height: 100%;
  opacity: 1;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .30), rgba(var(--button-bg-rgb), .88));
  color: var(--text);
}

html.mj-player-images-open .player-images-drawer-body {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: auto;
  padding: 1.1rem 1.15rem 1.15rem;
  display: flex;
  flex-direction: column;
  gap: .85rem;
}

.player-image-current-card {
  padding: .8rem .9rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .8rem;
  background: rgba(0,0,0,.14);
  color: var(--muted);
}

.player-image-current-card.active {
  border-color: rgba(var(--accent-rgb), .38);
  color: var(--text);
  background: rgba(var(--accent-rgb), .12);
}

.player-image-current-card strong,
.player-image-current-card span {
  display: block;
}

.player-image-current-card span {
  margin-top: .18rem;
  font-size: .92rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.player-image-source-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .65rem;
}

.player-image-source-button {
  min-height: 3.1rem;
  font-weight: 800;
}

.player-image-url-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .5rem;
}

.player-image-paste-zone {
  padding: .85rem;
  border: 1px dashed rgba(var(--accent-rgb), .34);
  border-radius: .85rem;
  color: var(--muted);
  background: rgba(0, 0, 0, .12);
  text-align: center;
}

.player-image-paste-zone:focus {
  outline: 2px solid rgba(var(--accent-rgb), .58);
  outline-offset: 2px;
  color: var(--text);
}

.player-image-preview-card {
  min-height: 15rem;
  display: grid;
}

.player-image-preview-frame {
  display: grid;
  place-items: center;
  min-height: 15rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .95rem;
  background: radial-gradient(circle at 50% 20%, rgba(var(--accent-rgb), .12), rgba(0,0,0,.18));
  overflow: hidden;
}

.player-image-preview-frame img {
  width: 100%;
  max-height: min(44vh, 26rem);
  object-fit: contain;
  display: block;
}

.player-image-preview-frame span {
  color: var(--muted);
}

.player-image-form {
  display: grid;
  gap: .75rem;
}

.player-image-form textarea {
  min-height: 5.5rem;
}

.player-image-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  justify-content: flex-end;
}

.player-image-actions .primary {
  min-width: 12rem;
}

.player-image-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: clamp(1rem, 3vw, 3rem);
}

.player-image-overlay[hidden] {
  display: none !important;
}

.player-image-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .84);
  backdrop-filter: blur(3px);
}

.player-image-stage {
  position: relative;
  z-index: 1;
  width: min(96vw, 150rem);
  height: min(92vh, 88rem);
  margin: 0;
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto;
  gap: .9rem;
  align-items: center;
  justify-items: center;
}

.player-image-stage img {
  max-width: 100%;
  max-height: 100%;
  width: 100%;
  height: 100%;
  object-fit: contain;
  border-radius: 1rem;
  box-shadow: 0 24px 70px rgba(0, 0, 0, .58);
  background: rgba(0,0,0,.28);
}

.player-image-stage img.fit-cover {
  object-fit: cover;
}

.player-image-overlay-caption {
  max-width: min(92vw, 80rem);
  padding: .85rem 1.15rem;
  border-radius: 999px;
  background: rgba(0, 0, 0, .64);
  color: #fff;
  text-align: center;
  box-shadow: 0 14px 36px rgba(0,0,0,.42);
}

.player-image-overlay-caption strong {
  display: block;
  font-size: clamp(1.35rem, 2.1vw, 2.6rem);
  line-height: 1.1;
}

.player-image-overlay-caption span {
  display: block;
  margin-top: .25rem;
  font-size: clamp(1rem, 1.35vw, 1.55rem);
}

.player-image-minimize {
  position: absolute;
  z-index: 3;
  top: max(1rem, env(safe-area-inset-top));
  right: max(1rem, env(safe-area-inset-right));
  min-height: 48px;
  padding: .65rem 1rem;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 999px;
  background: rgba(20,16,12,.9);
  color: #fff;
  font-weight: 900;
  box-shadow: 0 8px 24px rgba(0,0,0,.42);
  cursor: pointer;
}

.player-image-overlay.is-minimized {
  place-items: end;
  padding: 0 max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) 0;
  pointer-events: none;
}
.player-image-overlay.is-minimized .player-image-backdrop {
  display: none;
}
.player-image-overlay.is-minimized .player-image-stage {
  width: clamp(150px, 24vw, 260px);
  height: clamp(105px, 18vw, 180px);
  display: block;
  pointer-events: auto;
  cursor: pointer;
}
.player-image-overlay.is-minimized .player-image-stage img {
  width: 100%;
  height: 100%;
  border: 2px solid rgba(238,196,100,.85);
  border-radius: .8rem;
  background: rgba(10,8,6,.9);
  object-fit: contain;
}
.player-image-overlay.is-minimized .player-image-overlay-caption {
  display: none;
}
.player-image-overlay.is-minimized .player-image-minimize {
  position: fixed;
  top: auto;
  right: max(1rem, env(safe-area-inset-right));
  bottom: calc(max(1rem, env(safe-area-inset-bottom)) + clamp(112px, 18vw, 187px));
  min-height: 42px;
  padding: .45rem .75rem;
  pointer-events: auto;
}

@media (max-width: 1240px) {
  html.mj-player-images-open body.mode-combat .layout-mj,
  html.mj-player-images-open body.mode-exploration .layout-mj,
  html.mj-player-images-open body.mode-combat.compact-ui .layout-mj,
  html.mj-player-images-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: 1fr;
  }

  html.mj-player-images-open .mj-right-dock {
    height: auto;
    min-height: 0;
    max-height: none;
  }

  html.mj-player-images-open .mj-right-dock .scene-notes-drawer-panel,
  html.mj-player-images-open .mj-right-dock .journal-drawer-panel,
  html.mj-scene-notes-open .mj-right-dock .player-images-drawer-panel,
  html.mj-roll-journal-open .mj-right-dock .player-images-drawer-panel {
    display: grid;
  }

  .mj-right-dock .player-images-drawer-panel,
  .mj-right-dock .player-images-drawer-panel.collapsed {
    width: 100%;
    max-width: none;
    grid-template-columns: 1fr;
  }

  .mj-right-dock .player-images-drawer-tab,
  html.mj-player-images-open .mj-right-dock .player-images-drawer-tab {
    width: 100%;
    min-height: 3rem;
    height: 3rem;
    border-radius: .75rem .75rem 0 0;
    font-size: 1rem;
  }

  .player-images-drawer-tab span {
    writing-mode: horizontal-tb;
    transform: none;
  }

  .player-image-source-grid,
  .player-image-url-row {
    grid-template-columns: 1fr;
  }
}

/* V0.86 — MJ : onglets droits Notes / Journaux / Images de taille uniforme */
:root {
  --mj-right-drawer-tab-height-v85: 8.7rem;
}

.mj-right-dock .scene-notes-drawer-panel,
.mj-right-dock .journal-drawer-panel,
.mj-right-dock .player-images-drawer-panel {
  flex: 0 0 var(--mj-right-drawer-tab-height-v85);
  height: var(--mj-right-drawer-tab-height-v85);
  min-height: var(--mj-right-drawer-tab-height-v85);
  max-height: var(--mj-right-drawer-tab-height-v85);
}

.mj-right-dock .scene-notes-drawer-panel.collapsed,
.mj-right-dock .journal-drawer-panel.collapsed,
.mj-right-dock .player-images-drawer-panel.collapsed {
  height: var(--mj-right-drawer-tab-height-v85);
  min-height: var(--mj-right-drawer-tab-height-v85);
  max-height: var(--mj-right-drawer-tab-height-v85);
}

.mj-right-dock .scene-notes-drawer-tab,
.mj-right-dock .journal-drawer-tab,
.mj-right-dock .player-images-drawer-tab {
  height: 100%;
  min-height: 100%;
  max-height: 100%;
}

html.mj-scene-notes-open .mj-right-dock .journal-drawer-panel,
html.mj-scene-notes-open .mj-right-dock .player-images-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .player-images-drawer-panel,
html.mj-player-images-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-player-images-open .mj-right-dock .journal-drawer-panel {
  display: none !important;
}

html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .journal-drawer-panel,
html.mj-player-images-open .mj-right-dock .player-images-drawer-panel {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-self: stretch;
}

html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-tab,
html.mj-roll-journal-open .mj-right-dock .journal-drawer-tab,
html.mj-player-images-open .mj-right-dock .player-images-drawer-tab {
  height: 100%;
  min-height: 100%;
  max-height: 100%;
}

@media (max-width: 1240px) {
  .mj-right-dock .scene-notes-drawer-panel,
  .mj-right-dock .journal-drawer-panel,
  .mj-right-dock .player-images-drawer-panel,
  .mj-right-dock .scene-notes-drawer-panel.collapsed,
  .mj-right-dock .journal-drawer-panel.collapsed,
  .mj-right-dock .player-images-drawer-panel.collapsed {
    flex: 0 0 auto;
    height: auto;
    min-height: 0;
    max-height: none;
  }

  .mj-right-dock .scene-notes-drawer-tab,
  .mj-right-dock .journal-drawer-tab,
  .mj-right-dock .player-images-drawer-tab,
  html.mj-scene-notes-open .mj-right-dock .scene-notes-drawer-tab,
  html.mj-roll-journal-open .mj-right-dock .journal-drawer-tab,
  html.mj-player-images-open .mj-right-dock .player-images-drawer-tab {
    height: 3rem;
    min-height: 3rem;
    max-height: none;
  }
}


/* V0.87 — Images joueurs : vidage propre et conservation optionnelle */
.player-image-preview-frame img[hidden] {
  display: none !important;
}

.player-image-keep-field {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .65rem .75rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .75rem;
  background: rgba(0, 0, 0, .10);
  color: var(--muted);
  font-size: .92rem;
}

.player-image-keep-field input {
  width: 1.05rem;
  height: 1.05rem;
  accent-color: rgb(var(--accent-rgb));
}

/* V0.92 — boutons image presse-papier / fichier PC */
.add-combatant-image {
  display: grid;
  grid-template-columns: 7rem minmax(0, 1fr);
  gap: .85rem;
  align-items: stretch;
  padding: .7rem;
  border: 1px solid color-mix(in srgb, var(--line), var(--accent) 20%);
  border-radius: 1rem;
  background: color-mix(in srgb, var(--panel-2), transparent 20%);
}

.add-combatant-image-preview {
  min-height: 7rem;
  border-radius: .85rem;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--line), var(--accent) 18%);
  background: color-mix(in srgb, var(--bg), transparent 18%);
  display: grid;
  place-items: center;
}

.add-combatant-image-preview img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.add-combatant-image-empty {
  width: 100%;
  height: 100%;
  min-height: 7rem;
  display: grid;
  place-items: center;
  padding: .5rem;
  text-align: center;
  color: var(--muted);
  font-weight: 900;
  letter-spacing: .04em;
  background: radial-gradient(circle at top, rgba(var(--accent-rgb), .22), transparent 62%);
}

.add-combatant-image-actions {
  min-width: 0;
  display: grid;
  align-content: center;
  gap: .45rem;
}

.add-combatant-image-actions strong {
  font-size: 1.02rem;
}

.add-combatant-image-actions span {
  color: var(--muted);
  font-size: .92rem;
}

.button-row.compact {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.button-row.compact button {
  min-height: 2.15rem;
  padding-inline: .75rem;
}

@media (max-width: 760px) {
  .add-combatant-image {
    grid-template-columns: 1fr;
  }
  .add-combatant-image-preview {
    min-height: 10rem;
  }
}

/* V0.92 — boutons icônes pour l’image à l’ajout d’un combattant */
.add-combatant-image:focus-within,
.add-combatant-image:focus {
  outline: 2px solid color-mix(in srgb, var(--accent), white 12%);
  outline-offset: 2px;
}

.add-combatant-image-buttons .icon-action {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  font-weight: 900;
}

.add-combatant-image-buttons .icon-action span[aria-hidden="true"] {
  font-size: 1.15rem;
  line-height: 1;
}

.add-combatant-image-help {
  margin: 0;
  color: var(--muted);
  font-size: .84rem;
  line-height: 1.3;
}

/* v0.202-v0.202 — déverrouillage audio iPad/Safari */
.table-sound-toggle {
  border: 1px solid rgba(148, 163, 184, 0.32);
  background: rgba(15, 23, 42, 0.42);
  color: inherit;
  white-space: nowrap;
}
.table-sound-toggle.sound-off {
  opacity: 0.72;
  filter: grayscale(0.35);
}
.mj-sound-toggle {
  min-height: 34px;
  padding: 0.35rem 0.65rem;
}
.player-sound-toggle {
  min-height: 36px;
  padding: 0.35rem 0.75rem;
  font-size: 0.9rem;
}
@media (max-width: 760px) {
  .player-sound-toggle {
    width: 100%;
    justify-content: center;
  }
}

/* v0.202 — contrôles audio iPad + statut */
.player-sound-controls {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  flex-wrap: wrap;
}
.table-sound-test {
  min-height: 2.1rem;
  padding: 0.35rem 0.7rem;
  font-size: 0.82rem;
}
.player-sound-status {
  min-height: 1.2rem;
  font-size: 0.78rem;
  opacity: 0.78;
}
.player-sound-status.is-ok {
  opacity: 0.95;
}
.player-sound-status.is-error {
  opacity: 1;
  font-weight: 700;
}
@media (max-width: 760px) {
  .player-sound-controls {
    width: 100%;
    justify-content: center;
  }
  .player-sound-status {
    width: 100%;
    text-align: center;
  }
}

/* v0.202 — paramètres joueurs depuis l'écran joueurs */
.player-settings-gear {
  min-width: 2.35rem;
  min-height: 2.35rem;
  padding: 0.35rem 0.55rem;
  border-radius: 999px;
  font-size: 1.15rem;
  line-height: 1;
}
.settings-section-title {
  margin: 0.35rem 0 -0.15rem;
  font-size: 1rem;
  letter-spacing: 0.02em;
}
.player-sound-settings {
  display: grid;
  gap: 0.55rem;
}
.player-settings-sound-row {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  flex-wrap: wrap;
}
.player-settings-sound-row .table-sound-toggle,
.player-settings-sound-row .table-sound-test {
  min-height: 2.3rem;
}
.player-sound-settings .player-sound-status {
  display: block;
  min-height: 1.15rem;
  margin: 0;
}
@media (max-width: 760px) {
  .player-settings-sound-row {
    align-items: stretch;
  }
  .player-settings-sound-row .table-sound-toggle,
  .player-settings-sound-row .table-sound-test {
    flex: 1 1 100%;
    justify-content: center;
  }
}


/* v0.202 — gestion et affichage des QR depuis le menu MJ */
.qr-display-card {
  max-width: min(1080px, calc(100vw - 3rem));
}
.qr-display-options {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
  margin-top: 1rem;
}
.qr-choice-card {
  display: grid;
  grid-template-columns: auto 90px 1fr;
  align-items: center;
  gap: 0.85rem;
  padding: 0.9rem;
  border-radius: 18px;
  border: 1px solid rgba(200, 160, 255, 0.25);
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
}
.qr-choice-card:hover {
  border-color: rgba(210, 175, 255, 0.55);
  background: rgba(255, 255, 255, 0.07);
}
.qr-choice-card input[type="checkbox"] {
  inline-size: 1.15rem;
  block-size: 1.15rem;
  margin: 0;
}
.qr-choice-thumb {
  display: flex;
  justify-content: center;
  align-items: center;
  inline-size: 90px;
  block-size: 120px;
  padding: 0.25rem;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.92);
  overflow: hidden;
}
.qr-choice-thumb img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.qr-choice-meta {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.qr-choice-meta strong {
  font-size: 1rem;
}
.qr-choice-meta small {
  color: var(--muted, rgba(255,255,255,0.75));
}
.qr-display-actions {
  margin-top: 1.2rem;
}
.qr-viewer-page {
  min-height: 100vh;
  margin: 0;
  background: #1f1630;
  color: #f7f2ff;
}
.qr-viewer-wrap {
  min-height: 100vh;
  padding: 1.5rem;
  box-sizing: border-box;
}
.qr-viewer-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.5rem;
  align-items: start;
}
.qr-viewer-card {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: center;
  gap: 0.85rem;
  padding: 0.9rem;
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.06);
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
}
.qr-viewer-card img {
  width: 100%;
  height: auto;
  max-height: calc(100vh - 7rem);
  object-fit: contain;
  border-radius: 18px;
  background: #fff;
}
.qr-viewer-caption {
  text-align: center;
  font-size: clamp(1rem, 2vw, 1.4rem);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #f7f2ff;
}
.qr-viewer-empty {
  min-height: calc(100vh - 3rem);
  display: grid;
  place-items: center;
  text-align: center;
  color: rgba(255, 255, 255, 0.82);
  font-size: 1.2rem;
}
@media (max-width: 720px) {
  .qr-display-card {
    max-width: calc(100vw - 1.25rem);
  }
  .qr-choice-card {
    grid-template-columns: auto 74px 1fr;
    gap: 0.7rem;
  }
  .qr-choice-thumb {
    inline-size: 74px;
    block-size: 100px;
  }
  .qr-viewer-wrap {
    padding: 0.75rem;
  }
  .qr-viewer-grid {
    gap: 0.85rem;
  }
}


/* v0.202 — affichage des QR directement sur l'écran joueurs */
.player-qr-overlay {
  position: relative;
  z-index: 2;
  width: min(96vw, 1800px);
  max-height: 92vh;
  overflow: auto;
  padding: 1rem;
  box-sizing: border-box;
}
.player-qr-overlay-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 1.25rem;
  align-items: start;
}
.player-qr-item {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0.75rem;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.06);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28);
}
.player-qr-item img {
  display: block;
  width: 100%;
  height: auto;
  max-height: calc(100vh - 6rem);
  object-fit: contain;
  border-radius: 14px;
  background: #fff;
}
@media (max-width: 720px) {
  .player-qr-overlay {
    width: 100vw;
    max-height: 100vh;
    padding: 0.75rem;
  }
  .player-qr-overlay-grid {
    grid-template-columns: 1fr;
    gap: 0.85rem;
  }
  .player-qr-item img {
    max-height: none;
  }
}


/* v0.202 — corrections affichage QR */
.player-image-overlay.qr-mode {
  place-items: start center;
  padding-top: 1rem;
  padding-bottom: 1rem;
}
.player-image-overlay.qr-mode .player-image-backdrop {
  position: fixed;
}
.player-qr-overlay {
  align-self: start;
  width: min(96vw, 1680px);
  max-height: calc(100vh - 2rem);
  overflow: auto;
  margin: 0 auto;
}
.player-qr-overlay-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 520px));
  justify-content: center;
  gap: 1.25rem;
}
.player-qr-item {
  padding: 0.9rem;
}
.player-qr-item img {
  width: auto;
  max-width: 100%;
  max-height: min(86vh, 1200px);
  height: auto;
}
.qr-display-actions {
  gap: 0.75rem;
  flex-wrap: wrap;
}
@media (max-width: 720px) {
  .player-image-overlay.qr-mode {
    place-items: start stretch;
    padding-top: 0.5rem;
    padding-left: 0.4rem;
    padding-right: 0.4rem;
  }
  .player-qr-overlay {
    width: 100%;
    max-height: calc(100vh - 1rem);
    padding: 0.25rem;
  }
  .player-qr-overlay-grid {
    grid-template-columns: 1fr;
    justify-content: stretch;
  }
  .player-qr-item img {
    max-height: none;
    width: 100%;
  }
}


/* v0.202 — QR affichés en haut de l'écran joueurs, sans demi-affichage */
.player-image-overlay.qr-mode {
  display: block !important;
  place-items: unset !important;
  align-items: unset !important;
  justify-items: unset !important;
  overflow: hidden !important;
  padding: 0 !important;
}
.player-image-overlay.qr-mode #playerImageOverlayFigure,
.player-image-overlay.qr-mode .player-image-stage,
.player-image-overlay.qr-mode #playerImageOverlayImg {
  display: none !important;
}
.player-image-overlay.qr-mode .player-image-backdrop {
  position: fixed !important;
  inset: 0 !important;
}
.player-image-overlay.qr-mode .player-qr-overlay {
  position: fixed !important;
  z-index: 2 !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100vw !important;
  height: 100vh !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 12px !important;
  overflow: auto !important;
  box-sizing: border-box !important;
}
.player-image-overlay.qr-mode .player-qr-overlay-grid {
  width: 100% !important;
  min-height: 0 !important;
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(260px, min(92vw, 520px))) !important;
  justify-content: center !important;
  align-content: start !important;
  align-items: start !important;
  gap: 16px !important;
  margin: 0 auto !important;
  padding: 0 !important;
}
.player-image-overlay.qr-mode .player-qr-item {
  display: flex !important;
  justify-content: center !important;
  align-items: flex-start !important;
  padding: 10px !important;
  margin: 0 !important;
  border-radius: 18px !important;
}
.player-image-overlay.qr-mode .player-qr-item img {
  display: block !important;
  width: auto !important;
  max-width: 100% !important;
  height: auto !important;
  max-height: calc(100vh - 32px) !important;
  object-fit: contain !important;
  object-position: top center !important;
}
@media (max-width: 720px) {
  .player-image-overlay.qr-mode .player-qr-overlay {
    padding: 8px !important;
  }
  .player-image-overlay.qr-mode .player-qr-overlay-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .player-image-overlay.qr-mode .player-qr-item {
    padding: 8px !important;
  }
  .player-image-overlay.qr-mode .player-qr-item img {
    width: auto !important;
    max-width: 100% !important;
    max-height: calc(100vh - 24px) !important;
  }
}


/* v0.202 — améliorations QR */
.qr-display-bulk-actions {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0.5rem 0 1rem;
}
.player-image-overlay.qr-mode .player-qr-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.65rem;
}
.player-image-overlay.qr-mode .player-qr-label {
  font-size: clamp(1rem, 1.5vw, 1.35rem);
  line-height: 1.2;
  font-weight: 700;
  text-align: center;
  color: #ffffff;
  letter-spacing: 0.02em;
}


/* v0.202 — QR : boutons réellement branchés + libellés visibles sous l'image */
.player-image-overlay.qr-mode .player-qr-overlay-grid {
  align-content: start !important;
  align-items: start !important;
  padding-top: 0 !important;
}
.player-image-overlay.qr-mode .player-qr-item {
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  align-items: center !important;
  gap: 0.35rem !important;
  overflow: visible !important;
}
.player-image-overlay.qr-mode .player-qr-item img {
  width: min(460px, 92vw, calc(100vh - 86px)) !important;
  max-width: 100% !important;
  height: auto !important;
  max-height: calc(100vh - 86px) !important;
  object-fit: contain !important;
  object-position: top center !important;
  flex: 0 0 auto !important;
}
.player-image-overlay.qr-mode .player-qr-label {
  display: block !important;
  width: fit-content !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0.3rem 0.75rem !important;
  border-radius: 999px !important;
  background: rgba(0, 0, 0, 0.68) !important;
  border: 1px solid rgba(255, 255, 255, 0.22) !important;
  color: #ffffff !important;
  font-size: clamp(1rem, 1.6vw, 1.35rem) !important;
  line-height: 1.15 !important;
  font-weight: 800 !important;
  text-align: center !important;
  letter-spacing: 0.02em !important;
  flex: 0 0 auto !important;
}
@media (max-width: 720px) {
  .player-image-overlay.qr-mode .player-qr-item img {
    width: min(92vw, calc(100vh - 76px)) !important;
    max-height: calc(100vh - 76px) !important;
  }
}


/* v0.202 — QR joueurs: vrai panneau plein écran indépendant */
.player-qr-fullscreen[hidden] {
  display: none !important;
}
.player-qr-fullscreen {
  position: fixed !important;
  inset: 0 !important;
  z-index: 1200 !important;
  display: block !important;
  overflow: auto !important;
  background: rgba(0, 0, 0, 0.84) !important;
  padding: 0 !important;
  box-sizing: border-box !important;
}
.player-qr-fullscreen-backdrop {
  position: fixed !important;
  inset: 0 !important;
  background: rgba(0, 0, 0, 0.84) !important;
  backdrop-filter: blur(3px) !important;
  z-index: 0 !important;
}
.player-qr-fullscreen-panel {
  position: relative !important;
  z-index: 1 !important;
  width: 100vw !important;
  min-height: 100vh !important;
  padding: 12px !important;
  box-sizing: border-box !important;
}
.player-qr-fullscreen-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(240px, min(92vw, 430px))) !important;
  justify-content: center !important;
  align-content: start !important;
  align-items: start !important;
  gap: 14px !important;
  width: 100% !important;
  margin: 0 auto !important;
  padding: 0 !important;
}
.player-qr-fullscreen-item {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 8px !important;
  margin: 0 !important;
  padding: 10px !important;
  border-radius: 18px !important;
  background: rgba(255, 255, 255, 0.08) !important;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.35) !important;
  overflow: visible !important;
}
.player-qr-fullscreen-item img {
  display: block !important;
  width: min(390px, 88vw, calc(100vh - 92px)) !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: calc(100vh - 92px) !important;
  object-fit: contain !important;
  object-position: top center !important;
  flex: 0 0 auto !important;
  border-radius: 12px !important;
  background: #fff !important;
}
.player-qr-fullscreen-item strong {
  display: block !important;
  width: fit-content !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0.35rem 0.8rem !important;
  border-radius: 999px !important;
  background: rgba(0, 0, 0, 0.75) !important;
  border: 1px solid rgba(255, 255, 255, 0.25) !important;
  color: #fff !important;
  font-size: clamp(1rem, 1.6vw, 1.35rem) !important;
  line-height: 1.15 !important;
  font-weight: 900 !important;
  text-align: center !important;
  letter-spacing: 0.02em !important;
  flex: 0 0 auto !important;
}
@media (max-width: 720px) {
  .player-qr-fullscreen-panel {
    padding: 8px !important;
  }
  .player-qr-fullscreen-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .player-qr-fullscreen-item {
    padding: 8px !important;
  }
  .player-qr-fullscreen-item img {
    width: min(92vw, calc(100vh - 84px)) !important;
    max-height: calc(100vh - 84px) !important;
  }
}

/* v0.202 — recherche créatures et banque d'images */
.add-image-bank-card {
  width: min(1100px, calc(100vw - 2rem));
  max-height: calc(100vh - 2rem);
  overflow: auto;
}
.add-image-bank-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 0.85rem;
  margin-top: 1rem;
}
.add-image-bank-item {
  display: grid;
  grid-template-rows: 110px auto;
  gap: 0.55rem;
  align-items: center;
  justify-items: center;
  padding: 0.7rem;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,0.18);
  background: rgba(255,255,255,0.06);
  color: inherit;
  cursor: pointer;
  min-width: 0;
}
.add-image-bank-item:hover,
.add-image-bank-item:focus-visible {
  border-color: rgba(255, 214, 127, 0.75);
  background: rgba(255,255,255,0.1);
  outline: none;
}
.add-image-bank-item img {
  max-width: 100%;
  max-height: 110px;
  object-fit: contain;
  border-radius: 12px;
  background: rgba(0,0,0,0.2);
}
.add-image-bank-item span {
  width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: center;
  font-size: 0.85rem;
}


/* v0.202 — import rapide de fiches D&D Beyond */
.character-import-entry {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  flex-wrap: wrap;
  margin: 0.35rem 0 0.85rem;
}
.character-import-card {
  width: min(1160px, 96vw);
  max-height: 92vh;
  overflow: auto;
}
.character-import-modes {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 0.75rem 0 1rem;
}
.character-import-mode {
  align-items: flex-start;
  min-height: 5.2rem;
}
.character-import-mode.disabled {
  opacity: 0.58;
}
.character-import-mode span {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.character-import-upload,
.character-import-target-row {
  display: flex;
  align-items: end;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0.8rem 0;
}
.character-import-target-row label {
  min-width: min(460px, 100%);
}
.character-import-table-wrap {
  overflow: auto;
  max-height: 46vh;
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 14px;
}
.character-import-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 920px;
}
.character-import-table th,
.character-import-table td {
  padding: 0.55rem 0.65rem;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  vertical-align: top;
}
.character-import-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: rgba(39, 27, 56, 0.97);
  text-align: left;
}
.character-import-table input[type="text"],
.character-import-table input[type="number"],
.character-import-table textarea {
  width: 100%;
  min-width: 12rem;
}
.character-import-table textarea {
  resize: vertical;
}
.character-import-table .import-existing,
.character-import-table .import-detected {
  color: rgba(255,255,255,0.78);
  white-space: pre-wrap;
}
.character-import-actions {
  position: sticky;
  bottom: 0;
  background: rgba(39, 27, 56, 0.98);
  border-top: 1px solid rgba(255,255,255,0.16);
  margin-top: 0.75rem;
  padding-top: 0.85rem;
}
@media (max-width: 820px) {
  .character-import-modes { grid-template-columns: 1fr; }
  .character-import-card { width: 98vw; }
}

/* v0.202 — import PDF plus clair */
#characterImportStatus {
  display: block;
  min-height: 1.4rem;
  margin-top: 0.35rem;
  font-weight: 650;
  color: var(--primary-text, #fff);
}
#characterImportAnalyze:disabled {
  opacity: 0.7;
  cursor: wait;
}


/* v0.202 — import PDF lisible et contrôlable */
.character-import-upload {
  align-items: center;
}
.character-import-status {
  flex: 1 1 420px;
  display: inline-block;
  padding: 0.55rem 0.75rem;
  border-radius: 12px;
  background: rgba(255,255,255,0.10);
  color: rgba(255,255,255,0.96) !important;
  border: 1px solid rgba(255,255,255,0.16);
}
.character-import-status.is-busy {
  background: rgba(224, 164, 54, 0.20);
  border-color: rgba(245, 190, 83, 0.46);
}
.character-import-status.is-error {
  background: rgba(163, 54, 54, 0.26);
  border-color: rgba(255, 120, 120, 0.45);
  color: #fff !important;
}
.character-import-status.is-success {
  background: rgba(70, 145, 92, 0.24);
  border-color: rgba(125, 215, 151, 0.42);
  color: #fff !important;
}
#characterImportCloseBottom {
  min-width: 6.5rem;
}


/* v0.202 — fenêtre import PDF moins large et analyse plus claire */
.character-import-card {
  width: min(980px, 94vw) !important;
}
.character-import-upload {
  align-items: center;
  gap: 0.65rem;
}
.character-import-status {
  flex: 0 1 680px !important;
  max-width: min(680px, 100%) !important;
  padding: 0.5rem 0.7rem !important;
}
.character-import-modes {
  gap: 0.6rem;
}
.character-import-mode {
  min-height: 4.5rem;
}

/* v0.202 — fenêtre import PDF propre, sans panneau dans le panneau */
body[data-settings-scope="mj"] .character-import-dialog,
.character-import-dialog {
  width: min(980px, calc(100vw - 2rem)) !important;
  max-width: calc(100vw - 2rem) !important;
  overflow: hidden;
}
.character-import-card {
  width: 100% !important;
  max-width: none !important;
  box-sizing: border-box;
}
.character-import-dialog .settings-card {
  border-radius: 1.2rem;
}
.character-import-upload {
  display: grid !important;
  grid-template-columns: minmax(260px, 1fr) auto auto;
  align-items: center !important;
  gap: 0.75rem !important;
}
.character-import-status {
  grid-column: 1 / -1;
  width: min(720px, 100%) !important;
  max-width: 100% !important;
  flex: none !important;
  box-sizing: border-box;
}
@media (max-width: 860px) {
  .character-import-modes { grid-template-columns: 1fr !important; }
  .character-import-upload { grid-template-columns: 1fr !important; }
  .character-import-upload > * { width: 100%; }
}


/* v0.202 — import personnage: saisie assistée fiable */
.character-import-card {
  width: min(1120px, calc(100vw - 2rem)) !important;
  max-width: min(1120px, calc(100vw - 2rem)) !important;
  padding: 1.15rem 1.35rem 1.2rem !important;
}
.character-import-dialog::backdrop {
  background: rgba(0, 0, 0, 0.68);
}
.character-import-modes {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 0.8rem !important;
  margin-top: 1rem !important;
}
.character-import-mode {
  min-height: 5.25rem !important;
  padding: 0.85rem 1rem !important;
}
.character-import-upload {
  display: grid !important;
  grid-template-columns: minmax(260px, 1fr) auto auto auto !important;
  align-items: center !important;
  gap: 0.8rem !important;
  margin-top: 1.25rem !important;
}
.character-import-upload input[type="file"] {
  max-width: 100%;
}
.character-import-status {
  grid-column: 1 / -1;
  max-width: min(760px, 100%) !important;
  margin-top: 0.15rem;
}
.character-import-review {
  margin-top: 1rem;
}
.character-import-table-wrap {
  max-height: min(45vh, 460px);
}
@media (max-width: 980px) {
  .character-import-modes,
  .character-import-upload {
    grid-template-columns: 1fr !important;
  }
  .character-import-upload > button,
  .character-import-upload input[type="file"] {
    width: 100%;
  }
}

/* v0.202 — Gestion ajout/retrait joueurs */
.player-roster-card {
  width: min(1180px, calc(100vw - 2rem));
  max-height: calc(100vh - 2rem);
  overflow: auto;
}
.player-roster-switch {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
  margin: 0.75rem 0 1rem;
}
.player-roster-panel {
  border: 1px solid rgba(245, 190, 91, 0.22);
  border-radius: 1rem;
  padding: 1rem;
  background: rgba(20, 14, 12, 0.22);
  margin-bottom: 1rem;
}
.player-roster-subgroup {
  border: 1px solid rgba(245, 190, 91, 0.2);
  border-radius: 0.9rem;
  padding: 0.75rem 1rem;
  margin: 0.75rem 0;
  background: rgba(255,255,255,0.035);
}
.player-roster-subgroup > summary {
  cursor: pointer;
  font-weight: 800;
  font-size: 1.05rem;
  color: var(--accent, #f5be5b);
}
.player-roster-form {
  margin-top: 1rem;
}
.player-roster-reintegrate {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto;
  gap: 0.85rem;
  align-items: end;
  margin-top: 1rem;
}
.player-roster-reintegrate .player-roster-preview {
  grid-column: 1 / -1;
}
.player-roster-preview {
  border: 1px solid rgba(245, 190, 91, 0.18);
  border-radius: 0.8rem;
  padding: 0.65rem 0.8rem;
  background: rgba(0,0,0,0.18);
  color: rgba(255,255,255,0.78);
}
.player-roster-permanent {
  display: flex;
  gap: 0.5rem;
  align-items: center;
  margin: 0.8rem 0;
}
.player-roster-status {
  display: block;
  border-radius: 0.8rem;
  padding: 0.75rem 0.9rem;
  background: rgba(255,255,255,0.05);
  color: rgba(255,255,255,0.78);
}
.player-roster-status.is-error {
  border: 1px solid rgba(255, 100, 100, 0.45);
  background: rgba(120, 32, 32, 0.35);
  color: #ffe6e6;
}
.player-roster-status.is-success {
  border: 1px solid rgba(127, 210, 160, 0.45);
  background: rgba(32, 100, 60, 0.32);
  color: #eaffef;
}
button.danger {
  border-color: rgba(255, 110, 110, 0.55);
  background: rgba(140, 40, 40, 0.35);
  color: #ffe9e9;
}
@media (max-width: 760px) {
  .player-roster-reintegrate {
    grid-template-columns: 1fr;
  }
}

/* v0.202 — fenêtre Ajout/retrait joueurs & PNJ redimensionnable */
body[data-settings-scope="mj"] .player-roster-dialog,
.player-roster-dialog {
  width: min(1180px, calc(100vw - 2rem)) !important;
  height: min(820px, calc(100vh - 2rem));
  min-width: min(560px, calc(100vw - 2rem));
  min-height: min(480px, calc(100vh - 2rem));
  max-width: calc(100vw - 2rem) !important;
  max-height: calc(100vh - 2rem);
  overflow: hidden;
  resize: both;
  box-sizing: border-box;
}
.player-roster-dialog .player-roster-card {
  width: 100% !important;
  max-width: none !important;
  height: 100%;
  max-height: none;
  overflow: auto;
  box-sizing: border-box;
}
.player-roster-dialog .settings-head {
  align-items: flex-start;
}
.player-roster-form {
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}
.player-roster-form select,
.player-roster-form input,
.player-roster-form textarea,
.player-roster-panel select {
  max-width: 100%;
  box-sizing: border-box;
}
.player-roster-form .full {
  grid-column: 1 / -1;
}
@media (max-width: 700px) {
  body[data-settings-scope="mj"] .player-roster-dialog,
  .player-roster-dialog {
    resize: vertical;
    width: calc(100vw - 1rem) !important;
    height: min(86vh, 760px);
    min-width: 0;
  }
}

/* v0.202 — nettoyage des archives de personnages */
.player-roster-purge-list,
#playerRosterPurgeSelect {
  width: 100%;
  min-height: 11rem;
}
#playerRosterPurgeSelect option {
  padding: .35rem .45rem;
}

/* v0.202 — XP et indicateur de niveau disponible */
.level-up-badge {
  position: absolute;
  top: 5px;
  right: 5px;
  z-index: 8;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  background: #ffd43b;
  color: #1f1600;
  border: 2px solid #fff3bf;
  box-shadow: 0 0 0 2px rgba(72, 42, 0, .38), 0 5px 14px rgba(0, 0, 0, .32);
  font-weight: 1000;
  font-size: 1.25rem;
  line-height: 1;
  text-shadow: none;
  box-sizing: border-box;
}
.level-up-badge-player { width: 30px; height: 30px; font-size: 1.35rem; }
.level-up-badge-tools {
  top: .85rem;
  right: .85rem;
  width: clamp(56px, 7vw, 72px);
  height: clamp(56px, 7vw, 72px);
  font-size: clamp(2.45rem, 4.8vw, 3.35rem);
  border-width: 4px;
  box-shadow: 0 0 0 3px rgba(72, 42, 0, .40), 0 8px 22px rgba(0, 0, 0, .38);
  cursor: pointer;
}
.level-up-badge-mj { top: 5px; right: 5px; }
.level-up-badge-clickable { cursor:pointer; pointer-events:auto; }
.level-up-badge-clickable:hover,.level-up-badge-clickable:focus-visible { transform:scale(1.12); box-shadow:0 0 0 3px rgba(255,255,255,.85),0 0 18px rgba(255,210,45,.95); outline:none; }
.portrait-button,
.player-card-portrait,
.active-portrait,
.tools-character-button,
.advanced-sheet-portrait {
  position: relative;
}
.level-up-chip {
  background: rgba(255, 212, 59, .18);
  border-color: rgba(255, 212, 59, .65);
  color: #ffe08a;
  font-weight: 900;
}
.level-up-chip .level-up-badge,
.xp-progress-hint .level-up-badge {
  position: static;
  width: 26px;
  height: 26px;
  font-size: 1.1rem;
  margin-right: .45rem;
  vertical-align: middle;
}
.xp-progress-hint {
  padding: .85rem 1rem;
  border-radius: 14px;
  border: 1px solid rgba(255, 212, 59, .35);
  background: rgba(255, 212, 59, .08);
  color: var(--text, #f5ead7);
}

/* V0.129 — panneau latéral MJ : vraie calculatrice XP */
.mj-right-dock .xp-award-drawer-panel {
  grid-column: auto;
  position: static;
  top: auto;
  min-height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
  max-height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
  height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
  width: 100%;
  padding: 0;
  overflow: hidden;
  display: grid;
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr);
  border-radius: .8rem;
  border-color: rgba(var(--accent-rgb), .18);
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .78), rgba(var(--panel-2-rgb), .76));
  box-shadow: 0 8px 18px rgba(0, 0, 0, .20);
  flex: 0 0 var(--mj-right-drawer-tab-height-v85, 8.7rem);
}

.mj-right-dock .xp-award-drawer-panel.collapsed {
  grid-template-columns: var(--mj-drawer-tab-width-v69) 0;
  min-width: var(--mj-drawer-tab-width-v69);
  max-width: var(--mj-drawer-tab-width-v69);
  width: var(--mj-drawer-tab-width-v69);
  height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
  min-height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
  max-height: var(--mj-right-drawer-tab-height-v85, 8.7rem);
}

.mj-right-dock .xp-award-drawer-tab {
  height: 100%;
  min-height: 100%;
  max-height: 100%;
  border-radius: .8rem 0 0 .8rem;
}

html.mj-xp-award-open body.mode-combat .layout-mj,
html.mj-xp-award-open body.mode-combat.compact-ui .layout-mj {
  grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-xp-award-open body.mode-exploration .layout-mj,
html.mj-xp-award-open body.mode-exploration.compact-ui .layout-mj {
  grid-template-columns: minmax(0, 1fr) minmax(34rem, .9fr);
}

html.mj-xp-award-open .mj-right-dock {
  height: calc(100vh - 5.75rem);
  max-height: calc(100vh - 5.75rem);
  min-height: min(38rem, calc(100vh - 5.75rem));
}

html.mj-xp-award-open .mj-right-dock .scene-notes-drawer-panel,
html.mj-xp-award-open .mj-right-dock .journal-drawer-panel,
html.mj-xp-award-open .mj-right-dock .player-images-drawer-panel,
html.mj-player-images-open .mj-right-dock .xp-award-drawer-panel,
html.mj-scene-notes-open .mj-right-dock .xp-award-drawer-panel,
html.mj-roll-journal-open .mj-right-dock .xp-award-drawer-panel {
  display: none !important;
}

html.mj-xp-award-open .mj-right-dock .xp-award-drawer-panel {
  flex: 1 1 auto;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-self: stretch;
  max-width: none;
  width: 100%;
  border-color: rgba(var(--accent-rgb), .38);
  box-shadow: 0 14px 32px rgba(0, 0, 0, .30), 0 0 0 1px rgba(var(--accent-rgb), .08) inset;
}

html.mj-xp-award-open .mj-right-dock .xp-award-drawer-tab {
  height: 100%;
  min-height: 100%;
  max-height: 100%;
  opacity: 1;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .30), rgba(var(--button-bg-rgb), .88));
  color: var(--text);
}

html.mj-xp-award-open .xp-award-drawer-body {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow: auto;
  padding: 1.1rem 1.15rem 1.15rem;
  display: flex;
  flex-direction: column;
  gap: .85rem;
}

.xp-award-mode-card,
.xp-award-preview,
.xp-award-targets-wrap {
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .85rem;
  background: rgba(0,0,0,.14);
  padding: .85rem .9rem;
}

.xp-award-mode-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

.xp-award-mode-card small,
.xp-award-preview span,
.xp-target-chip em {
  display: block;
  color: var(--muted);
  font-style: normal;
  margin-top: .2rem;
}

.xp-switch {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
}

.xp-switch input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.xp-switch-track {
  width: 3.25rem;
  height: 1.65rem;
  border-radius: 999px;
  background: rgba(0,0,0,.32);
  border: 1px solid rgba(var(--accent-rgb), .28);
  padding: .16rem;
  transition: background .18s ease, border-color .18s ease;
}

.xp-switch-knob {
  display: block;
  width: 1.22rem;
  height: 1.22rem;
  border-radius: 50%;
  background: var(--text);
  box-shadow: 0 2px 8px rgba(0,0,0,.35);
  transition: transform .18s ease;
}

.xp-switch input:checked + .xp-switch-track {
  background: rgba(var(--accent-rgb), .42);
  border-color: rgba(var(--accent-rgb), .62);
}

.xp-switch input:checked + .xp-switch-track .xp-switch-knob {
  transform: translateX(1.55rem);
}

.xp-switch em {
  min-width: 4.2rem;
  color: var(--muted);
  font-style: normal;
  font-weight: 800;
}

.xp-award-form {
  display: flex;
  flex-direction: column;
  gap: .85rem;
}

.xp-calculator {
  border: 1px solid rgba(var(--accent-rgb), .20);
  border-radius: .9rem;
  background: linear-gradient(180deg, rgba(0,0,0,.20), rgba(255,255,255,.035));
  padding: .85rem;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.045);
}

.xp-calculator-display-wrap {
  display: block;
  margin: 0;
  color: var(--muted);
}

.xp-calculator-display {
  width: 100%;
  margin-top: .35rem;
  min-height: 3.35rem;
  border-radius: .7rem;
  border: 1px solid rgba(var(--accent-rgb), .32);
  background: rgba(0,0,0,.34);
  color: var(--text);
  font-size: clamp(1.6rem, 4.2vw, 2.2rem);
  font-weight: 950;
  text-align: right;
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
  padding: .45rem .75rem;
  box-shadow: inset 0 2px 10px rgba(0,0,0,.30);
}

.xp-calculator-display:focus {
  outline: 2px solid rgba(var(--accent-rgb), .55);
  outline-offset: 2px;
}

.xp-calculator-hint {
  margin: .45rem 0 .65rem;
  color: var(--muted);
  font-size: .88rem;
  line-height: 1.25;
}

.xp-calculator-keys {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .48rem;
}

.xp-calculator-keys button,
.xp-award-actions button {
  min-height: 3.05rem;
}

.xp-calculator-keys button {
  font-size: 1.15rem;
  font-weight: 950;
}

.xp-calculator-enter {
  grid-column: span 2;
}

.xp-award-targets-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  margin-bottom: .65rem;
}

.xp-award-targets {
  display: grid;
  gap: .45rem;
}

.xp-target-chip {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: .55rem;
  padding: .62rem .68rem;
  border-radius: .7rem;
  border: 1px solid rgba(var(--accent-rgb), .14);
  background: rgba(255,255,255,.035);
}

.xp-target-chip input {
  margin-top: .25rem;
}

.xp-target-chip strong {
  display: block;
  line-height: 1.15;
}

.xp-award-preview strong {
  display: block;
}

.xp-award-actions {
  display: flex;
  justify-content: flex-end;
}

@media (max-width: 1240px) {
  html.mj-xp-award-open body.mode-combat .layout-mj,
  html.mj-xp-award-open body.mode-exploration .layout-mj,
  html.mj-xp-award-open body.mode-combat.compact-ui .layout-mj,
  html.mj-xp-award-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: 1fr;
  }

  html.mj-xp-award-open .mj-right-dock {
    height: auto;
    min-height: 0;
    max-height: none;
  }

  html.mj-xp-award-open .mj-right-dock .scene-notes-drawer-panel,
  html.mj-xp-award-open .mj-right-dock .journal-drawer-panel,
  html.mj-xp-award-open .mj-right-dock .player-images-drawer-panel,
  html.mj-player-images-open .mj-right-dock .xp-award-drawer-panel,
  html.mj-scene-notes-open .mj-right-dock .xp-award-drawer-panel,
  html.mj-roll-journal-open .mj-right-dock .xp-award-drawer-panel {
    display: grid !important;
  }

  .mj-right-dock .xp-award-drawer-panel,
  .mj-right-dock .xp-award-drawer-panel.collapsed {
    flex: 0 0 auto;
    width: 100%;
    max-width: none;
    height: auto;
    min-height: 0;
    max-height: none;
    grid-template-columns: 1fr;
  }

  .mj-right-dock .xp-award-drawer-tab,
  html.mj-xp-award-open .mj-right-dock .xp-award-drawer-tab {
    width: 100%;
    min-height: 3rem;
    height: 3rem;
    max-height: none;
    border-radius: .75rem .75rem 0 0;
    font-size: 1rem;
  }

  .xp-award-drawer-tab span {
    writing-mode: horizontal-tb;
    transform: none;
  }

  .xp-calculator-keys {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* v0.202 — bulles de stats contextuelles PJ/PNJ */
.roster-stat-chip,
.player-stat-chip {
  font-weight: 800;
  color: var(--text);
}
.roster-stat-chip strong,
.player-stat-chip strong {
  color: var(--accent);
  font-weight: 950;
}
.player-stat-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .32rem;
  margin-top: .18rem;
}
.player-stat-chips.active-turn-stats {
  margin-top: 0;
}
.player-stat-chip {
  padding: .2rem .5rem;
  font-size: .82rem;
  line-height: 1.05;
  border-color: rgba(var(--accent-rgb), .42);
  background: rgba(var(--accent-rgb), .11);
}
.player-card-topline + .player-stat-chips {
  margin-top: .12rem;
}
.player-mobile-body .player-stat-chips {
  margin-top: .35rem;
}
.player-mobile-body .player-stat-chip {
  font-size: .86rem;
  padding: .24rem .55rem;
}
.head-stats .roster-stat-chip {
  max-width: min(28rem, 100%);
  overflow-wrap: anywhere;
}


.passive-skills-open-btn {
  white-space: nowrap;
}

.passive-skills-dialog {
  width: fit-content;
  max-width: calc(100vw - 2rem);
  max-height: min(78vh, 720px);
  overflow: hidden;
}

.passive-skills-card {
  width: fit-content;
  min-width: 0;
  max-width: calc(100vw - 2rem);
  box-sizing: border-box;
  max-height: min(78vh, 720px);
  overflow: auto;
}

.passive-skills-table-wrap {
  display: grid;
  gap: .85rem;
  justify-content: start;
  overflow-x: auto;
}

.passive-skills-table {
  width: max-content;
  min-width: 34rem;
  max-width: 100%;
  border-collapse: collapse;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: .9rem;
  overflow: hidden;
  background: rgba(var(--panel-rgb), .36);
}

.passive-skills-table th,
.passive-skills-table td {
  padding: .65rem .8rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .18);
  text-align: left;
}

.passive-skills-table th {
  color: var(--muted);
  font-weight: 700;
  background: rgba(var(--panel-rgb), .58);
}

.passive-skills-table tbody tr:nth-child(even) {
  background: rgba(var(--panel-rgb), .22);
}

.passive-skills-table tbody tr:last-child td {
  border-bottom: none;
}

.passive-skills-table th:first-child,
.passive-skills-table td:first-child {
  width: 16rem;
}

.passive-skills-table td:nth-child(n + 2),
.passive-skills-table th:nth-child(n + 2) {
  text-align: center;
  width: 5rem;
}

.passive-skills-empty {
  margin: 0;
}


.passive-sort-btn {
  width: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  padding: .25rem .2rem;
  border: 0;
  border-radius: .45rem;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 800;
  box-shadow: none;
}

.passive-skills-table th:first-child .passive-sort-btn {
  justify-content: flex-start;
}

.passive-sort-btn:hover,
.passive-sort-btn.active {
  background: rgba(var(--accent-rgb), .16);
  filter: none;
}

.passive-sort-mark {
  min-width: .8rem;
  color: var(--accent);
  font-size: .8em;
}


/* v0.202 — engrenage joueurs toujours accessible */
.player-settings-gear-fixed {
  position: fixed;
  top: .85rem;
  right: .85rem;
  z-index: 900;
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  border-radius: 999px;
  font-size: 1.35rem;
  background: rgba(var(--panel-rgb), .86);
  border: 1px solid rgba(var(--accent-rgb), .42);
  box-shadow: 0 .75rem 2rem rgba(0,0,0,.32);
  backdrop-filter: blur(6px);
}

.player-settings-gear-fixed:hover,
.player-settings-gear-fixed:focus-visible {
  background: rgba(var(--panel-2-rgb), .96);
  border-color: rgba(var(--accent-rgb), .72);
  transform: translateY(-1px);
}

.player-locked .player-settings-gear-fixed {
  display: none;
}

/* v0.202 — exploration joueurs : météo compacte dans l'encadré date/heure */
.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chips {
  display: flex;
  flex-wrap: wrap;
  gap: .42rem;
  align-items: center;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chips[hidden] {
  display: none !important;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chip {
  display: inline-flex;
  align-items: center;
  gap: .34rem;
  max-width: 100%;
  padding: .34rem .58rem;
  border-radius: 999px;
  background: rgba(var(--input-rgb), .34);
  border: 1px solid rgba(var(--accent-rgb), .22);
  color: var(--text);
  font-size: .88rem;
  font-weight: 800;
  line-height: 1.12;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chip span {
  font-size: 1.05rem;
  line-height: 1;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
  min-height: auto;
}


/* V0.143 — exploration joueurs : panneau info en haut à gauche, groupe en 2 colonnes */
.player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
  grid-template-columns: minmax(18rem, 1fr) minmax(18rem, 1fr) minmax(34rem, 2fr);
  grid-template-rows: auto auto;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-info-panel {
  display: block;
  grid-column: 1 / span 2;
  grid-row: 1;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel {
  grid-column: 1 / span 2;
  grid-row: 2;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel {
  grid-column: 3;
  grid-row: 1;
}

.player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
  grid-column: 3;
  grid-row: 2;
  margin-top: 0;
}

.player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel > .eyebrow {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-group {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: .8rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(13rem, max-content) minmax(0, 1fr);
  align-items: center;
  column-gap: 1rem;
  row-gap: .55rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display {
  grid-column: 1;
  gap: .25rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display .clock-label {
  display: none;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-date-chip {
  font-size: .78rem;
  padding: .28rem .56rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-time-display strong {
  font-size: clamp(1.45rem, 2.35vw, 2.55rem);
  line-height: .95;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chips {
  grid-column: 2;
  align-self: center;
  justify-content: flex-start;
  align-content: center;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chip {
  font-size: .82rem;
  padding: .3rem .52rem;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-side-scene-text {
  grid-column: 1 / -1;
  font-size: clamp(.9rem, 1.05vw, 1.22rem);
  line-height: 1.15;
}

@media (max-width: 1300px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
    grid-template-columns: 1fr 1fr;
  }

  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-info-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-exploration-scene-panel,
  .player-body:not(.player-mobile-body).mode-exploration .player-log-panel {
    grid-column: 1 / -1;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-group {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 980px) {
  .player-body:not(.player-mobile-body).mode-exploration .player-layout.player-layout-side {
    grid-template-columns: 1fr;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-side-header {
    grid-template-columns: 1fr;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-weather-chips,
  .player-body:not(.player-mobile-body).mode-exploration .exploration-side-scene-text {
    grid-column: 1;
  }

  .player-body:not(.player-mobile-body).mode-exploration .exploration-group {
    grid-template-columns: 1fr !important;
  }
}

/* V0.143 — MJ : remettre le bouton météo à côté de la bannière */
.topbar-mj {
  display: grid;
  grid-template-columns: minmax(18rem, auto) minmax(0, 1fr) auto;
  gap: .75rem;
  align-items: center;
}

.topbar-mj .mj-title-block {
  grid-column: 1;
}

.topbar-mj .mj-banner-tools {
  grid-column: 2;
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .75rem;
  align-items: stretch;
  justify-self: stretch;
}

.topbar-mj .mj-top-actions {
  grid-column: 3;
}

.topbar-mj .mj-banner-tools .mj-scene-banner {
  grid-column: 1;
  align-self: stretch;
  margin: 0;
}

.weather-top-button {
  grid-column: 2;
  min-width: 13rem;
  max-width: 23rem;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: .55rem;
  padding: .48rem .72rem;
  border-radius: .9rem;
  background:
    radial-gradient(circle at 18% 30%, rgba(var(--accent-rgb), .20), transparent 48%),
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .90), rgba(var(--panel-rgb), .74));
  white-space: nowrap;
  align-self: stretch;
}

.weather-top-icon {
  font-size: 1.2rem;
  line-height: 1;
  flex: 0 0 auto;
}

.weather-top-copy {
  min-width: 0;
  display: grid;
  gap: .02rem;
  text-align: left;
}

.weather-top-copy .clock-label {
  font-size: .58rem;
  letter-spacing: .12em;
}

.weather-top-copy strong {
  max-width: 19rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: .82rem;
  line-height: 1.15;
}

@media (max-width: 1850px) {
  .topbar-mj {
    grid-template-columns: minmax(18rem, auto) minmax(0, 1fr);
  }

  .topbar-mj .mj-banner-tools {
    grid-column: 1 / -1;
    grid-row: 2;
  }

  .topbar-mj .mj-top-actions {
    grid-column: 2;
    grid-row: 1;
  }
}

@media (max-width: 860px) {
  .topbar-mj {
    grid-template-columns: 1fr;
  }

  .topbar-mj .mj-title-block,
  .topbar-mj .mj-banner-tools,
  .topbar-mj .mj-top-actions {
    grid-column: 1;
    grid-row: auto;
  }

  .topbar-mj .mj-banner-tools {
    grid-template-columns: 1fr;
  }

  .topbar-mj .mj-banner-tools .mj-scene-banner,
  .weather-top-button {
    grid-column: 1;
  }

  .weather-top-button {
    max-width: none;
  }
}


/* V0.202 — tableau de latitude climatique Faerûn */
.weather-latitude-head {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 1rem;
  padding-top: .85rem;
  border-top: 1px solid rgba(var(--accent-rgb), .18);
}

.weather-latitude-head h3 {
  margin: .1rem 0 0;
}

.weather-latitude-table {
  display: grid;
  gap: .42rem;
  margin-top: .65rem;
}

.weather-latitude-row {
  display: grid;
  grid-template-columns: auto minmax(13rem, 1.1fr) minmax(12rem, .9fr);
  gap: .7rem;
  align-items: center;
  padding: .55rem .65rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .24);
  cursor: pointer;
}

.weather-latitude-row:hover,
.weather-latitude-row.active {
  border-color: rgba(var(--accent-rgb), .62);
  background: rgba(var(--accent-rgb), .14);
}

.weather-latitude-row input {
  width: 1.05rem;
  height: 1.05rem;
  accent-color: var(--accent);
}

.weather-latitude-row span {
  min-width: 0;
}

.weather-latitude-row strong,
.weather-latitude-row small {
  display: block;
}

.weather-latitude-row strong {
  color: var(--text);
}

.weather-latitude-row small,
.weather-latitude-row span:last-child {
  color: var(--muted);
  font-size: .82rem;
  line-height: 1.25;
}

@media (max-width: 820px) {
  .weather-latitude-head {
    align-items: stretch;
    flex-direction: column;
  }

  .weather-latitude-row {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .weather-latitude-row span:last-child {
    grid-column: 2;
  }
}

/* V0.202 — écran joueurs : bulletin météo en texte naturel */
.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-report {
  grid-column: 2;
  align-self: center;
  display: grid;
  gap: .18rem;
  min-width: 0;
  padding: .45rem .65rem;
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .24);
  border: 1px solid rgba(var(--accent-rgb), .18);
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-report[hidden] {
  display: none !important;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-main,
.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-context {
  margin: 0;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-main {
  color: var(--text);
  font-size: clamp(.88rem, 1.02vw, 1.08rem);
  line-height: 1.22;
  font-weight: 820;
}

.player-body:not(.player-mobile-body).mode-exploration .exploration-weather-context {
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.15;
  font-weight: 760;
}

@media (max-width: 980px) {
  .player-body:not(.player-mobile-body).mode-exploration .exploration-weather-report {
    grid-column: 1;
  }
}


/* V0.202 — résumé météo MJ repliable dans la zone Rencontre */
.encounter-weather-impact-row {
  display: flex;
  justify-content: center;
  margin: -.2rem 0 .9rem;
}
.weather-impact-card {
  width: min(44rem, calc(100% - 22rem));
  min-width: min(24rem, 100%);
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(38,29,22,.72), rgba(24,18,14,.78));
  box-shadow: 0 10px 22px rgba(0,0,0,.16);
  overflow: hidden;
}
.weather-impact-card[hidden] { display: none !important; }
.weather-impact-card.is-ambiance { border-color: rgba(214,168,79,.24); }
.weather-impact-card.is-gene { border-color: rgba(214,168,79,.42); }
.weather-impact-card.is-danger { border-color: rgba(212,88,74,.55); }
.weather-impact-summary {
  list-style: none;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: .75rem;
  padding: .72rem .95rem;
  cursor: pointer;
}
.weather-impact-summary::-webkit-details-marker { display: none; }
.weather-impact-summary:hover {
  background: rgba(255,255,255,.03);
}
.weather-impact-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 6.6rem;
  padding: .34rem .7rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .28);
  font-size: .82rem;
  font-weight: 900;
  letter-spacing: .02em;
  color: var(--text);
  background: rgba(var(--input-rgb), .34);
}
.weather-impact-badge.is-ambiance {
  background: rgba(var(--accent-rgb), .18);
}
.weather-impact-badge.is-gene {
  background: rgba(214,168,79,.28);
}
.weather-impact-badge.is-danger {
  background: rgba(212,88,74,.26);
  border-color: rgba(212,88,74,.42);
}
.weather-impact-summary-text {
  min-width: 0;
  font-weight: 850;
  line-height: 1.22;
  color: var(--text);
}
.weather-impact-chevron {
  color: var(--muted);
  font-size: 1rem;
  transition: transform .18s ease;
}
.weather-impact-card[open] .weather-impact-chevron {
  transform: rotate(180deg);
}
.weather-impact-body {
  display: grid;
  gap: .65rem;
  padding: 0 .95rem .9rem;
  border-top: 1px solid rgba(var(--accent-rgb), .12);
}
.weather-impact-meta {
  padding-top: .7rem;
  color: var(--muted);
  font-size: .86rem;
  font-weight: 760;
}
.weather-impact-rows {
  display: grid;
  gap: .48rem;
}
.weather-impact-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .8rem;
  align-items: start;
  padding: .62rem .72rem;
  border-radius: .88rem;
  border: 1px solid rgba(var(--accent-rgb), .14);
  background: rgba(var(--input-rgb), .18);
}
.weather-impact-row strong {
  display: block;
  margin-bottom: .14rem;
}
.weather-impact-row p {
  margin: 0;
  color: var(--muted);
  line-height: 1.28;
  font-size: .88rem;
}
.weather-impact-state {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 10.5rem;
  padding: .28rem .58rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .2);
  background: rgba(var(--panel-rgb), .32);
  font-size: .78rem;
  font-weight: 850;
  color: var(--text);
  text-align: center;
}
@media (max-width: 1300px) {
  .weather-impact-card {
    width: min(44rem, 100%);
  }
}
@media (max-width: 820px) {
  .weather-impact-row,
  .weather-impact-summary {
    grid-template-columns: 1fr;
  }
  .weather-impact-state {
    min-width: 0;
    justify-self: start;
  }
}

/* V0.202 — vocabulaire D&D 2024 : états de règles plus longs */
.weather-impact-state { max-width: 16rem; white-space: normal; line-height: 1.15; }

/* V0.202 — page Aide SRD / règles maisons */
.help-body {
  min-height: 100vh;
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .18), transparent 34rem),
    linear-gradient(180deg, rgba(26,20,16,.98), rgba(18,14,12,.98));
  color: var(--text);
}
.help-topbar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  padding: .9rem 1rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .2);
  background: rgba(31,24,19,.94);
  backdrop-filter: blur(10px);
}
.help-topbar h1 { margin: .1rem 0 .2rem; }
.help-license-line {
  max-width: 78rem;
  margin: 0;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.25;
}
.help-top-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
  justify-content: flex-end;
}
.help-layout {
  display: grid;
  grid-template-columns: minmax(19rem, 24rem) minmax(0, 1fr);
  gap: 1rem;
  padding: 1rem;
}
.help-sidebar,
.help-content-panel {
  min-width: 0;
}
.help-sidebar {
  position: sticky;
  top: 5.7rem;
  align-self: start;
  display: grid;
  gap: .8rem;
  max-height: calc(100vh - 6.6rem);
}
.help-search-panel,
.help-article,
.help-toc-group {
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 1rem;
  background: rgba(var(--panel-rgb), .84);
  box-shadow: 0 10px 25px rgba(0,0,0,.18);
}
.help-search-panel {
  display: grid;
  gap: .7rem;
  padding: .85rem;
}
.help-search-panel label,
.help-article-edit label {
  display: grid;
  gap: .32rem;
  color: var(--muted);
  font-size: .84rem;
  font-weight: 800;
}
.help-search-panel input,
.help-search-panel select,
.help-article-edit input,
.help-article-edit textarea {
  width: 100%;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: .75rem;
  background: rgba(var(--input-rgb), .55);
  color: var(--text);
  padding: .58rem .68rem;
  font: inherit;
}
.help-search-panel details {
  display: grid;
  gap: .55rem;
}
.help-search-panel details[open] > *:not(summary) { margin-top: .55rem; }
.help-checkbox {
  display: flex !important;
  grid-template-columns: none !important;
  align-items: center;
  gap: .45rem !important;
}
.help-checkbox input { width: auto; }
.help-search-stats {
  color: var(--muted);
  font-size: .82rem;
  font-weight: 750;
}
.help-toc {
  overflow: auto;
  display: grid;
  gap: .75rem;
  padding-right: .25rem;
}
.help-toc-group {
  overflow: hidden;
}
.help-toc-group h3 {
  display: flex;
  justify-content: space-between;
  gap: .5rem;
  align-items: center;
  margin: 0;
  padding: .65rem .75rem;
  font-size: .92rem;
  background: rgba(var(--accent-rgb), .11);
}
.help-toc-group h3 span {
  color: var(--muted);
  font-size: .78rem;
}
.help-toc-item {
  width: 100%;
  display: grid;
  gap: .18rem;
  text-align: left;
  border: 0;
  border-top: 1px solid rgba(var(--accent-rgb), .10);
  border-radius: 0;
  background: transparent;
  color: var(--text);
  padding: .62rem .75rem;
  cursor: pointer;
}
.help-toc-item:hover,
.help-toc-item.active {
  background: rgba(var(--accent-rgb), .16);
}
.help-toc-item strong {
  font-size: .92rem;
}
.help-toc-item span {
  color: var(--muted);
  font-size: .76rem;
}
.help-empty {
  color: var(--muted);
  padding: 1rem;
}
.help-article {
  min-height: calc(100vh - 7.8rem);
  padding: 1rem;
}
.help-article.empty {
  display: grid;
  align-content: center;
  justify-items: center;
  text-align: center;
  color: var(--muted);
}
.help-article-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: start;
  border-bottom: 1px solid rgba(var(--accent-rgb), .16);
  padding-bottom: .9rem;
  margin-bottom: .9rem;
}
.help-article-head h2 {
  margin: .12rem 0 .45rem;
  font-size: clamp(1.55rem, 2.6vw, 2.5rem);
}
.help-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.help-badges span {
  display: inline-flex;
  padding: .24rem .52rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 999px;
  background: rgba(var(--input-rgb), .35);
  color: var(--muted);
  font-size: .76rem;
  font-weight: 850;
}
.help-article-actions,
.help-edit-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  justify-content: flex-end;
}
.help-rule-text {
  max-width: 82rem;
  font-size: 1rem;
  line-height: 1.55;
}
.help-rule-text p { margin: 0 0 .85rem; }
.help-house-note {
  margin-top: 1rem;
  padding: .85rem 1rem;
  border: 1px solid rgba(var(--accent-rgb), .26);
  border-radius: 1rem;
  background: rgba(var(--accent-rgb), .10);
}
.help-house-note strong { display: block; margin-bottom: .45rem; }
.help-article-edit {
  display: grid;
  gap: .8rem;
}
.help-article-edit[hidden] { display: none; }
.help-article-edit textarea {
  resize: vertical;
  min-height: 8rem;
  line-height: 1.35;
}
.help-pdf-panel {
  margin-top: 1rem;
  border: 1px solid rgba(var(--accent-rgb), .20);
  border-radius: 1rem;
  overflow: hidden;
  background: rgba(0,0,0,.20);
}
.help-pdf-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  padding: .65rem .85rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .14);
}
.help-pdf-panel iframe {
  width: 100%;
  height: min(72vh, 720px);
  border: 0;
  background: #111;
}
@media (max-width: 980px) {
  .help-topbar,
  .help-article-head {
    align-items: stretch;
    flex-direction: column;
  }
  .help-layout {
    grid-template-columns: 1fr;
  }
  .help-sidebar {
    position: static;
    max-height: none;
  }
}

/* V0.202 — page Aide : paramètres couleurs, palette Windows et contraste par défaut */
html.theme-windows {
  color-scheme: light dark;
  --bg: Canvas;
  --panel: Canvas;
  --panel-2: ButtonFace;
  --input: Field;
  --text: CanvasText;
  --muted: GrayText;
  --line: GrayText;
  --accent: AccentColor;
  --accent-2: Highlight;
  --danger: Mark;
  --bg-rgb: 32,32,32;
  --panel-rgb: 43,43,43;
  --panel-2-rgb: 58,58,58;
  --input-rgb: 24,24,24;
  --accent-rgb: 0,120,212;
  --accent-2-rgb: 0,99,177;
  --danger-rgb: 196,43,28;
  --button-bg: ButtonFace;
  --button-hover: Canvas;
  --primary-bg: AccentColor;
  --primary-bg-2: Highlight;
  --primary-text: Canvas;
  --primary-border: AccentColor;
}
.swatch-windows {
  background: linear-gradient(135deg, #f3f3f3, #0078d4 55%, #202020);
  color: #fff;
}
.swatch-custom {
  background: conic-gradient(from 90deg, #d6a84f, #90d26d, #8fb7ff, #c89cff, #ff7d62, #d6a84f);
  color: #fff;
}
.help-settings-gear {
  width: 2.6rem;
  min-width: 2.6rem;
  height: 2.6rem;
  display: inline-grid;
  place-items: center;
  padding: 0;
  border-radius: .85rem;
  font-size: 1.15rem;
}
.help-settings-dialog {
  width: min(920px, calc(100vw - 2rem));
}
.help-theme-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.help-color-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .65rem;
}
.help-color-grid label {
  display: grid;
  gap: .35rem;
  padding: .55rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .8rem;
  background: rgba(var(--input-rgb), .28);
}
.help-color-grid input[type="color"] {
  width: 100%;
  min-height: 2.25rem;
  padding: .15rem;
  cursor: pointer;
}
.help-settings-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
}
.help-settings-preview {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .6rem;
}
.help-settings-preview p {
  flex: 1 1 100%;
  margin: .15rem 0 .25rem;
  color: var(--muted);
}
.help-body {
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .16), transparent 34rem),
    radial-gradient(circle at bottom right, rgba(var(--accent-2-rgb), .10), transparent 32rem),
    linear-gradient(180deg, rgba(var(--bg-rgb), 1), rgba(var(--panel-rgb), .96));
}
.help-search-panel,
.help-article,
.help-toc-group {
  background:
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .94), rgba(var(--panel-rgb), .96));
}
.help-search-panel input,
.help-search-panel select,
.help-article-edit input,
.help-article-edit textarea {
  background: rgba(var(--input-rgb), .92);
  color: var(--text);
}
html.theme-windows .help-body {
  background: Canvas;
}
html.theme-windows .help-topbar,
html.theme-windows .help-search-panel,
html.theme-windows .help-article,
html.theme-windows .help-toc-group,
html.theme-windows .settings-dialog {
  background: Canvas;
  color: CanvasText;
}
html.theme-windows .help-search-panel input,
html.theme-windows .help-search-panel select,
html.theme-windows .help-article-edit input,
html.theme-windows .help-article-edit textarea {
  background: Field;
  color: FieldText;
}
@media (max-width: 980px) {
  .help-theme-grid,
  .help-color-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .help-settings-row {
    grid-template-columns: 1fr;
  }
}

/* V0.202 — page Aide : conteneur article complet */
.help-article-shell { display: block; }

/* V0.202 — Aide : bascule live français QC / USA */
.help-language-switch {
  display: inline-flex;
  align-items: center;
  gap: .25rem;
  padding: .18rem;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: .95rem;
  background: rgba(var(--input-rgb), .42);
}
.help-lang-button {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  min-height: 2.25rem;
  padding: .36rem .58rem;
  border-radius: .75rem;
  background: transparent;
  border-color: transparent;
  color: var(--muted);
  font-weight: 900;
  box-shadow: none;
}
.help-lang-button.active {
  background: rgba(var(--accent-rgb), .22);
  border-color: rgba(var(--accent-rgb), .58);
  color: var(--text);
}
.quebec-flag {
  display: inline-grid;
  place-items: center;
  width: 1.35rem;
  height: .95rem;
  border-radius: .18rem;
  color: #fff;
  background:
    linear-gradient(90deg, #0066cc 0 42%, #fff 42% 58%, #0066cc 58% 100%),
    linear-gradient(180deg, #0066cc 0 42%, #fff 42% 58%, #0066cc 58% 100%);
  border: 1px solid rgba(255,255,255,.72);
  font-size: .62rem;
  line-height: 1;
  text-shadow: 0 1px 1px rgba(0,0,0,.75);
}
.help-article-shell {
  display: block;
}
@media (max-width: 720px) {
  .help-language-switch {
    justify-content: stretch;
  }
  .help-lang-button {
    flex: 1 1 auto;
    justify-content: center;
  }
}

/* V0.202 — Aide : SRD complet par pages, PDF local */
.help-pdf-panel iframe[hidden] { display: none !important; }
.help-toc-item strong { line-height: 1.18; }

/* V0.202 — Aide : résultats de recherche utiles et extraits */
.help-search-result em {
  display: block;
  margin-top: .35rem;
  color: var(--muted);
  font-style: normal;
  font-size: .84rem;
  line-height: 1.25;
}
.help-search-results .help-toc-item strong {
  color: var(--text);
}
.help-search-results .help-toc-item.active em {
  color: color-mix(in srgb, var(--text), var(--muted) 35%);
}

/* V0.202 — Aide : le texte SRD occupe toute la largeur utile */
.help-article-read,
.help-rule-text,
.help-rule-text p,
.help-house-note {
  width: 100%;
  max-width: none;
}
.help-rule-text {
  max-width: none;
  font-size: 1.04rem;
  line-height: 1.58;
}
.help-rule-text p {
  max-width: none;
}
.help-article-shell {
  width: 100%;
}

/* V0.202 — Aide : références de pages SRD cliquables */
.help-page-ref {
  display: inline-flex;
  align-items: center;
  padding: .04rem .28rem;
  border-radius: .42rem;
  border: 1px solid rgba(var(--accent-rgb), .38);
  background: rgba(var(--accent-rgb), .14);
  color: var(--accent);
  font-weight: 900;
  text-decoration: none;
}
.help-page-ref:hover,
.help-page-ref:focus-visible {
  background: rgba(var(--accent-rgb), .24);
  color: var(--text);
  outline: none;
}
.help-pdf-panel.open iframe,
.help-pdf-panel iframe:not([hidden]) {
  display: block;
  width: 100%;
  min-height: min(72vh, 820px);
  border: 0;
  background: var(--panel);
}
.help-pdf-panel iframe[hidden] {
  display: none !important;
}

/* V0.202 — Aide : références de pages sans chargement automatique du PDF */
.help-page-ref::after {
  content: " ↗";
  font-size: .78em;
  opacity: .8;
}
.help-pdf-panel iframe {
  display: none !important;
}

/* V0.202 — Aide : grands concepts, D&D Beyond et SRD replié */
.help-concept-panel {
  display: grid;
  gap: .75rem;
  margin-bottom: .9rem;
}
.help-concept-panel h3 {
  margin: 0;
  padding: .75rem .85rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--accent-rgb), .10);
  color: var(--text);
}
.help-concept-card {
  display: grid;
  gap: .7rem;
  padding: .9rem;
  border: 1px solid rgba(var(--accent-rgb), .20);
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(var(--panel-2-rgb), .92), rgba(var(--panel-rgb), .94));
  box-shadow: 0 8px 20px rgba(0,0,0,.16);
}
.help-concept-card h4 {
  margin: .05rem 0 .35rem;
  font-size: 1.06rem;
}
.help-concept-card p {
  margin: 0 0 .55rem;
  line-height: 1.34;
}
.help-concept-card ul {
  margin: .25rem 0 0;
  padding-left: 1.2rem;
  color: var(--muted);
  line-height: 1.32;
}
.help-ddb-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: .42rem;
}
.help-ddb-button {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  padding: .44rem .58rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .30);
  background: rgba(var(--input-rgb), .42);
  color: var(--text);
  text-decoration: none;
  font-weight: 850;
  font-size: .82rem;
}
.help-ddb-button:hover,
.help-ddb-button:focus-visible {
  background: rgba(var(--accent-rgb), .18);
  outline: none;
}
.help-full-srd-results {
  overflow: hidden;
}
.help-full-srd-results summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  cursor: pointer;
  padding: .9rem;
  color: var(--text);
  background: rgba(var(--input-rgb), .22);
}
.help-full-srd-results summary strong {
  font-size: 1rem;
}
.help-full-srd-results summary span {
  color: var(--muted);
  font-weight: 850;
}
.help-full-srd-results .help-toc-item {
  border-radius: 0;
}

/* V0.202 — Aide : réponse rapide à droite, SRD complet à gauche */
.help-concept-article {
  min-height: calc(100vh - 10.5rem);
}
.help-concept-article .help-article-head {
  align-items: flex-start;
}
.help-concept-article .help-article-actions {
  max-width: 44rem;
}
.help-concept-main {
  display: grid;
  gap: .9rem;
  margin-top: 1rem;
}
.help-concept-card.primary-concept {
  border-color: rgba(var(--accent-rgb), .42);
  background:
    radial-gradient(circle at top left, rgba(var(--accent-rgb), .14), transparent 22rem),
    linear-gradient(180deg, rgba(var(--panel-2-rgb), .96), rgba(var(--panel-rgb), .96));
}
.help-inline-srd-tip {
  margin-top: 1rem;
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .22);
  padding: .75rem .9rem;
}
.help-inline-srd-tip summary {
  cursor: pointer;
  font-weight: 900;
}
.help-inline-srd-tip p {
  margin: .55rem 0 0;
  color: var(--muted);
}
.help-search-panel details:not([open]) {
  padding-bottom: 0;
}
.help-search-panel details:not([open]) > :not(summary) {
  display: none !important;
}

/* V0.202 — Aide : blocs de réponses rapides éditables */
.help-concept-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .45rem;
  margin-top: .65rem;
}
.help-concept-edit-btn,
.help-concept-reset-btn {
  min-height: 2.05rem;
  padding: .34rem .58rem;
  border-radius: 999px;
  font-size: .82rem;
}
.help-concept-edit-dialog {
  width: min(880px, calc(100vw - 2rem));
}
.help-concept-edit-form .settings-group {
  display: grid;
  gap: .75rem;
}
.help-concept-edit-form label {
  display: grid;
  gap: .35rem;
  color: var(--muted);
  font-weight: 850;
}
.help-concept-edit-form input,
.help-concept-edit-form textarea {
  width: 100%;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: .75rem;
  background: rgba(var(--input-rgb), .72);
  color: var(--text);
  padding: .58rem .7rem;
  font: inherit;
}
.help-concept-edit-form textarea {
  resize: vertical;
  line-height: 1.35;
}

/* V0.202 — Outils joueurs : carnet partagé */
.tools-notebook-launch-card {
  padding: .8rem;
}
.tools-notebook-open {
  width: 100%;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .8rem;
  text-align: left;
  border-radius: 1rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .22), rgba(var(--input-rgb), .42));
  border-color: rgba(var(--accent-rgb), .36);
}
.tools-notebook-open .tools-notebook-icon {
  font-size: 2rem;
}
.tools-notebook-open strong {
  display: block;
  font-size: 1.15rem;
}
.tools-notebook-open em {
  display: block;
  color: var(--muted);
  font-style: normal;
  font-size: .9rem;
  margin-top: .15rem;
}
.tools-notebook-dialog {
  width: min(1120px, calc(100vw - 1.5rem));
}
.tools-notebook-card {
  max-height: min(92vh, 980px);
  overflow: auto;
}
.tools-notebook-editor {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(11rem, .6fr) minmax(13rem, .7fr);
  gap: .75rem;
  align-items: end;
}
.tools-notebook-editor .full {
  grid-column: 1 / -1;
}
.tools-notebook-visibility {
  align-self: end;
}
.visibility-toggle {
  width: 100%;
  min-height: 3rem;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas: "knob strong" "knob em";
  align-items: center;
  column-gap: .65rem;
  text-align: left;
  border-radius: 999px;
  padding: .45rem .75rem;
}
.visibility-toggle .visibility-knob {
  grid-area: knob;
  width: 1.8rem;
  height: 1.8rem;
  border-radius: 999px;
  background: rgba(255,255,255,.82);
  box-shadow: inset 0 0 0 2px rgba(0,0,0,.18);
}
.visibility-toggle strong {
  grid-area: strong;
}
.visibility-toggle em {
  grid-area: em;
  color: var(--muted);
  font-size: .78rem;
  font-style: normal;
}
.visibility-toggle.public {
  background: rgba(var(--accent-2-rgb), .20);
  border-color: rgba(var(--accent-2-rgb), .44);
}
.visibility-toggle.private {
  background: rgba(var(--danger-rgb), .18);
  border-color: rgba(var(--danger-rgb), .36);
}
.tools-notebook-filters {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(10rem, .6fr) minmax(10rem, .6fr);
  gap: .75rem;
  margin-top: .9rem;
}
.tools-notebook-list {
  display: grid;
  gap: .55rem;
  margin-top: .75rem;
}
.notebook-note {
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: .95rem;
  background: rgba(var(--input-rgb), .28);
  overflow: hidden;
}
.notebook-note.public {
  border-color: rgba(var(--accent-2-rgb), .24);
}
.notebook-note.private {
  border-color: rgba(var(--danger-rgb), .24);
}
.notebook-note summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: .65rem;
  align-items: center;
  cursor: pointer;
  padding: .72rem .85rem;
}
.notebook-note-main strong {
  display: block;
  color: var(--text);
}
.notebook-note-main em,
.notebook-note-date {
  color: var(--muted);
  font-style: normal;
  font-size: .82rem;
}
.notebook-note-body {
  padding: 0 .85rem .85rem;
  border-top: 1px solid rgba(var(--accent-rgb), .12);
}
.notebook-note-body p {
  margin: .75rem 0;
  line-height: 1.35;
}
.notebook-note-actions {
  display: flex;
  justify-content: flex-end;
}
@media (max-width: 760px) {
  .tools-notebook-editor,
  .tools-notebook-filters,
  .notebook-note summary {
    grid-template-columns: 1fr;
  }
}

/* V0.202 — Outils joueurs : bouton carnet en haut et carnet en groupes */
.tools-top-icon {
  position: absolute;
  top: .8rem;
  z-index: 22000;
  width: 2.75rem;
  height: 2.75rem;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  font-size: 1.25rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .24), rgba(var(--panel-rgb), .86));
  border: 1px solid rgba(var(--accent-rgb), .55);
  box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.32);
}
.tools-notebook-top-btn {
  right: 4rem;
}
.tools-notebook-top-btn:hover,
.tools-notebook-top-btn:focus-visible {
  background: linear-gradient(180deg, rgba(var(--accent-2-rgb), .28), rgba(var(--panel-rgb), .90));
}
.tools-notebook-card {
  display: grid;
  gap: .8rem;
}
.tools-notebook-group {
  border: 1px solid rgba(var(--accent-rgb), .18);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .18);
  overflow: hidden;
}
.tools-notebook-group > summary {
  list-style: none;
  cursor: pointer;
  padding: .85rem 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  background: rgba(var(--panel-2-rgb), .78);
}
.tools-notebook-group > summary::-webkit-details-marker {
  display: none;
}
.tools-notebook-group > summary strong {
  display: block;
  color: var(--text);
  font-size: 1.05rem;
}
.tools-notebook-group > summary em {
  display: block;
  color: var(--muted);
  font-style: normal;
  font-size: .84rem;
  margin-top: .12rem;
}
.tools-notebook-group-body {
  padding: .85rem;
}
.tools-notebook-consult-actions {
  justify-content: flex-start;
  margin: .75rem 0 .25rem;
}
.tools-notebook-similar {
  border: 1px dashed rgba(var(--accent-rgb), .34);
  border-radius: 1rem;
  padding: .75rem;
  background: rgba(var(--accent-rgb), .07);
}
.tools-notebook-similar h3 {
  margin: 0 0 .6rem;
  font-size: 1rem;
}
.tools-notebook-similar[hidden] {
  display: none !important;
}
.notebook-similar-note {
  margin-top: .45rem;
}
@media (max-width: 760px) {
  .tools-notebook-top-btn {
    right: 3.8rem;
  }
}

/* V0.202 — Carnet MJ/joueurs et conditions sur portrait Outils */
.player-settings-hidden[hidden] {
  display: none !important;
}
.player-menu-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  z-index: 25000;
}
.player-menu-button {
  min-width: 2.75rem;
  min-height: 2.75rem;
  display: inline-grid;
  place-items: center;
  border-radius: 999px;
  font-size: 1.35rem;
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .24), rgba(var(--panel-rgb), .88));
  border: 1px solid rgba(var(--accent-rgb), .55);
  box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.32);
}
.player-menu {
  position: absolute;
  right: 0;
  top: calc(100% + .45rem);
  min-width: 14rem;
  display: grid;
  gap: .25rem;
  padding: .45rem;
  border: 1px solid rgba(var(--accent-rgb), .32);
  border-radius: 1rem;
  background: rgba(var(--panel-rgb), .98);
  box-shadow: 0 1rem 2.5rem rgba(0,0,0,.38);
  z-index: 50000;
}
.player-menu[hidden] {
  display: none !important;
}
.player-menu-item {
  width: 100%;
  display: flex;
  align-items: center;
  gap: .55rem;
  justify-content: flex-start;
  text-align: left;
  background: rgba(var(--input-rgb), .35);
  border-radius: .75rem;
}
.player-menu-item span {
  font-weight: 850;
}
.tools-character-button {
  position: relative;
}
.tools-character-conditions {
  position: absolute;
  left: .55rem;
  right: .55rem;
  bottom: .55rem;
  display: flex;
  flex-wrap: wrap;
  gap: .28rem;
  justify-content: center;
  pointer-events: none;
  z-index: 6;
}
.tools-condition-chip {
  display: inline-flex;
  align-items: center;
  max-width: 10rem;
  padding: .24rem .45rem;
  border-radius: 999px;
  background: rgba(var(--input-rgb), .82);
  border: 1px solid rgba(var(--accent-rgb), .38);
  color: var(--text);
  font-size: .72rem;
  font-weight: 900;
  line-height: 1.1;
  box-shadow: 0 .35rem .8rem rgba(0,0,0,.28);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tools-condition-chip.more {
  background: rgba(var(--accent-rgb), .30);
}
.mj-notebook-dialog .tools-notebook-card,
.player-notebook-dialog .tools-notebook-card {
  max-height: min(92vh, 980px);
  overflow: auto;
}

/* V0.202 — Rôles de comptes et mode Admin */
.player-access-row-with-role {
  grid-template-columns: minmax(9rem, 1fr) minmax(9rem, 1fr) minmax(8rem, .75fr) auto;
}
.tools-admin-character-choice {
  position: absolute;
  top: .8rem;
  right: 7.25rem;
  z-index: 22000;
  min-height: 2.75rem;
  padding: .45rem .85rem;
  border-radius: 999px;
  font-weight: 900;
  background: linear-gradient(180deg, rgba(var(--accent-2-rgb), .24), rgba(var(--panel-rgb), .88));
  border: 1px solid rgba(var(--accent-2-rgb), .50);
  box-shadow: 0 .45rem 1.2rem rgba(0,0,0,.32);
}
.tools-admin-character-choice[hidden] {
  display: none !important;
}
.tools-admin-character-dialog {
  width: min(760px, calc(100vw - 1.5rem));
}
.tools-admin-character-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
  gap: .75rem;
}
.admin-character-choice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas: "portrait name" "portrait meta";
  gap: .15rem .65rem;
  align-items: center;
  text-align: left;
  padding: .75rem;
  border-radius: 1rem;
}
.admin-character-choice.selected {
  outline: 3px solid rgba(var(--accent-rgb), .45);
  background: rgba(var(--accent-rgb), .18);
}
.admin-character-choice span {
  grid-area: portrait;
  width: 3rem;
  height: 3rem;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .65);
  font-weight: 900;
}
.admin-character-choice img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.admin-character-choice strong {
  grid-area: name;
}
.admin-character-choice em {
  grid-area: meta;
  color: var(--muted);
  font-style: normal;
  font-size: .82rem;
}
.player-admin-view .player-menu-wrap,
.player-admin-view .player-settings-gear {
  display: none !important;
}
.tools-admin-mode .private-message-tool-card {
  opacity: .7;
}
@media (max-width: 760px) {
  .player-access-row-with-role {
    grid-template-columns: 1fr;
  }
  .tools-admin-character-choice {
    top: 4rem;
    right: .8rem;
  }
}

/* V0.202 — Écran joueurs : bouton menu/paramètres visible aux joueurs seulement */
.player-menu-button {
  font-size: 1.22rem;
}
.player-body:not(.player-admin-view) .player-menu-wrap {
  display: inline-flex !important;
}
.player-admin-view .player-menu-wrap,
.player-admin-view .player-settings-gear {
  display: none !important;
}
.tools-admin-character-choice {
  display: none !important;
}

/* V0.202 — bannière écran joueurs figée */
.exploration-scene-banner-static {
  cursor: default;
}
.exploration-scene-banner-static figcaption {
  position: absolute;
  left: 1rem;
  bottom: .8rem;
  right: 1rem;
  padding: .45rem .7rem;
  border-radius: .8rem;
  background: rgba(0,0,0,.30);
  border: 1px solid rgba(255,255,255,.16);
  color: white;
  text-align: center;
  font-weight: 850;
  backdrop-filter: blur(4px);
  opacity: .18;
  pointer-events: none;
}
.exploration-scene-banner-static.has-image figcaption {
  opacity: .18;
}

/* V0.202 — écran joueurs : engrenage flottant toujours visible aux joueurs */
.player-menu-wrap-floating {
  position: fixed !important;
  top: .85rem;
  right: .85rem;
  z-index: 90000 !important;
}
.player-menu-wrap-floating .player-menu {
  position: absolute;
  right: 0;
  top: calc(100% + .45rem);
}
.player-body:not(.player-admin-view) .player-menu-wrap-floating {
  display: inline-flex !important;
}
.player-admin-view .player-menu-wrap-floating {
  display: none !important;
}

/* V0.202 — écran joueurs : menu et initiative demandée */
.player-menu-button {
  font-size: 1.35rem;
}
.initiative-requested .player-initiative-right,
.initiative-requested .player-initiative-mobile {
  outline: 3px solid rgba(var(--accent-rgb), .58);
  box-shadow: 0 0 0 .35rem rgba(var(--accent-rgb), .15), var(--shadow-soft);
}

/* Une demande d'initiative doit rester accessible avant le passage en combat. */
.mode-exploration.initiative-requested .player-initiative-right {
  display: block;
}

/* V0.202 — écran joueurs : interface d’initiative joueur */
.player-initiative-submit-panel {
  margin: .6rem 0 1rem;
  padding: clamp(14px, 3vw, 22px);
}
.player-initiative-submit-panel[hidden] {
  display: none !important;
}
.player-initiative-submit-panel .initiative-tool-card-inner {
  display: grid;
  gap: .75rem;
}
.player-initiative-submit-panel.initiative-requested {
  outline: 3px solid rgba(var(--accent-rgb), .50);
  box-shadow: 0 0 0 .35rem rgba(var(--accent-rgb), .13), var(--shadow-soft);
}

/* V0.202 — maintenance BD et suppression de notes */
.database-reset-dialog {
  width: min(860px, calc(100vw - 1.5rem));
}
.database-reset-grid {
  display: grid;
  gap: .75rem;
}
.database-reset-choice {
  align-items: flex-start;
  padding: .8rem .9rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--panel-2-rgb), .45);
}
.database-reset-choice span {
  display: grid;
  gap: .15rem;
}
.database-reset-choice em {
  color: var(--muted);
  font-style: normal;
  font-size: .86rem;
}
.log-delete-btn,
.notebook-delete-x {
  background: rgba(190, 44, 44, .22) !important;
  border-color: rgba(255, 102, 102, .75) !important;
  color: #ffd8d8 !important;
  font-weight: 1000;
}
.log-delete-btn:hover,
.notebook-delete-x:hover {
  background: rgba(190, 44, 44, .44) !important;
}

/* V0.202 — sons de table */
.table-sound-quick {
  display: inline-flex;
  align-items: center;
  gap: 1mm;
}
.player-sound-icons {
  display: grid;
  gap: 1mm;
  margin-top: 1mm;
  justify-items: end;
}
.table-sound-icon {
  width: 2.55rem;
  height: 2.55rem;
  display: inline-grid;
  place-items: center;
  border-radius: .85rem;
  border: 1px solid rgba(var(--accent-rgb), .45);
  background: rgba(var(--panel-rgb), .86);
  box-shadow: 0 .35rem 1rem rgba(0,0,0,.22);
  font-size: 1.25rem;
  cursor: pointer;
}
.table-sound-icon.critical {
  border-color: rgba(255, 205, 92, .7);
}
.table-sound-icon.fumble {
  border-color: rgba(186, 142, 255, .7);
}
.table-sounds-dialog {
  width: min(980px, calc(100vw - 1.5rem));
}
.table-sounds-rows {
  display: grid;
  gap: .75rem;
}
.mj-sound-library-section { margin-top:1rem; padding-top:1rem; border-top:1px solid rgba(216,181,96,.28); }
.mj-sound-library-head { display:flex; justify-content:space-between; gap:1rem; align-items:center; }
.mj-sound-library-head h3,.mj-sound-library-head p { margin:.15rem 0; }
.sound-library-groups { display:grid; gap:.55rem; margin-top:.75rem; }
.sound-library-group { border:1px solid rgba(216,181,96,.25); border-radius:.75rem; background:rgba(20,16,10,.38); }
.sound-library-group summary { display:flex; justify-content:space-between; gap:1rem; padding:.7rem .85rem; cursor:pointer; font-weight:850; }
.sound-library-group summary small { color:var(--muted); }
.sound-library-group summary button { padding:.22rem .45rem; margin-left:.35rem; }
.sound-library-buttons { display:grid; grid-template-columns:repeat(auto-fit,minmax(16rem,1fr)); gap:.55rem; padding:0 .7rem .7rem; }
.sound-library-button { text-align:left; }
.sound-library-tile { display:grid; gap:.4rem; padding:.45rem; border:1px solid rgba(216,181,96,.18); border-radius:.7rem; background:rgba(8,7,5,.3); }
.sound-library-precontrols { display:grid; grid-template-columns:auto minmax(8rem,1fr); gap:.55rem; align-items:center; font-size:.82rem; }
.sound-library-precontrols > label { display:flex; gap:.3rem; align-items:center; }
.sound-library-prevolume input { min-width:5rem; width:100%; }
.sound-library-prevolume output { min-width:3rem; color:var(--muted); text-align:right; }
.mj-soundboard-dialog { width:min(1080px,calc(100vw - 1rem)); max-width:none; }
.mj-soundboard-card { width:100%; max-width:none !important; height:min(720px,calc(100vh - 2rem)); display:grid; grid-template-rows:auto auto auto auto minmax(0,1fr); overflow:hidden; }
.mj-soundboard-toolbar { display:grid; grid-template-columns:minmax(14rem,1fr) auto auto; gap:.65rem; align-items:center; }
.mj-soundboard-toolbar input[type="search"] { width:100%; }
.mj-soundboard-dialog .sound-library-groups { overflow:auto; padding-right:.25rem; }
.sound-mixer { border:1px solid rgba(216,181,96,.32); border-radius:.75rem; padding:.55rem .7rem; background:rgba(8,7,5,.45); }
.sound-mixer-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:.4rem; }
.sound-mixer-head span { min-width:1.8rem; text-align:center; border-radius:999px; background:rgba(216,181,96,.2); }
.sound-mixer-active { display:flex; flex-wrap:wrap; gap:.4rem; max-height:7rem; overflow:auto; }
.sound-mixer-active .settings-hint { margin:.2rem 0; }
.sound-mixer-item { display:flex; flex:1 1 28rem; gap:.5rem; align-items:center; padding:.35rem .4rem .35rem .65rem; border:1px solid rgba(216,181,96,.28); border-radius:.8rem; background:rgba(35,28,18,.85); }
.sound-mixer-item small { color:var(--muted); }
.sound-mixer-item button { min-width:2rem; padding:.22rem .45rem; border-radius:999px; }
.sound-mixer-loop { display:flex; gap:.3rem; align-items:center; white-space:nowrap; }
.sound-mixer-volume { display:grid; grid-template-columns:auto minmax(6rem,1fr) 3.2rem; gap:.35rem; align-items:center; margin-left:auto; min-width:12rem; }
.sound-mixer-volume input { width:100%; }
.sound-mixer-volume output { color:var(--muted); font-size:.78rem; text-align:right; }
@media(max-width:800px){.mj-soundboard-toolbar{grid-template-columns:1fr 1fr}.mj-soundboard-toolbar input[type="search"]{grid-column:1/-1}}
.table-sound-row {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) minmax(8rem, .6fr) auto auto auto auto;
  gap: .6rem;
  align-items: center;
  padding: .8rem;
  border: 1px solid rgba(var(--accent-rgb), .25);
  border-radius: 1rem;
  background: rgba(var(--panel-2-rgb), .46);
}
.table-sound-row > div:first-child {
  display: grid;
  gap: .15rem;
}
.table-sound-row em,
.table-sound-file {
  color: var(--muted);
  font-style: normal;
  font-size: .86rem;
}
.tools-menu-separator {
  height: 1px;
  margin: .25rem .2rem;
  background: rgba(var(--accent-rgb), .2);
}
@media (max-width: 860px) {
  .table-sound-row {
    grid-template-columns: 1fr 1fr;
  }
}

.player-menu-wrap-floating {
  display: grid !important;
  justify-items: end;
  gap: 1mm;
}
.player-body:not(.player-admin-view) .player-menu-wrap-floating {
  display: grid !important;
}

/* V0.202 — fin de session / résumés joueurs */
.session-summary-dialog,
.session-summary-mj-dialog {
  width: min(980px, calc(100vw - 1.5rem));
}
.session-summary-card textarea,
.session-summary-mj-card textarea {
  width: 100%;
  resize: vertical;
}
.session-summary-reminder {
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 1rem;
  padding: .75rem .9rem;
  background: rgba(var(--panel-2-rgb), .38);
}
.session-summary-reminder summary {
  cursor: pointer;
  font-weight: 900;
}
.session-summary-reminder ul {
  margin: .7rem 0 0 1.1rem;
  padding: 0;
}
.session-summary-mj-actions {
  display: flex;
  gap: .55rem;
  flex-wrap: wrap;
  align-items: center;
}
.session-summary-mj-section {
  display: grid;
  gap: .55rem;
  padding: .75rem 0;
}
.session-summary-ai-section {
  margin-top: .2rem;
  padding: 1rem;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 1rem;
  background: linear-gradient(145deg, rgba(var(--accent-rgb), .08), rgba(var(--panel-2-rgb), .38));
}
.session-summary-ai-section h3,
.session-summary-ai-section p {
  margin: 0;
}
.session-summary-ai-section textarea {
  min-height: 18rem;
  line-height: 1.5;
  background: rgba(var(--input-rgb), .7);
}
.session-summary-ai-section .settings-actions {
  justify-content: flex-end;
  margin-top: 0;
}
.session-summary-ai-section button[disabled] {
  opacity: .55;
  cursor: not-allowed;
}
.session-summary-players {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}
.session-summary-player {
  display: inline-flex;
  gap: .35rem;
  align-items: center;
  padding: .35rem .55rem;
  border-radius: 999px;
  border: 1px solid rgba(var(--accent-rgb), .24);
  background: rgba(var(--panel-2-rgb), .45);
}
.session-summary-player.received {
  border-color: rgba(90, 210, 120, .75);
  background: rgba(80, 190, 110, .14);
}
.session-summary-presence {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
}
.session-summary-presence .session-summary-player {
  border-radius: .8rem;
  padding: .7rem .8rem;
  cursor: pointer;
}
.session-summary-answer-state {
  margin-left: auto;
  color: var(--muted);
  font-size: .82rem;
}
.session-summary-section-head {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: end;
  margin-top: .4rem;
}
.session-summary-section-head h3,
.session-summary-section-head p {
  margin: 0;
}
.session-summary-facts {
  display: grid;
  gap: .5rem;
}
.session-summary-fact {
  display: grid;
  grid-template-columns: minmax(16rem, 1fr) auto auto auto;
  gap: .55rem;
  align-items: center;
  padding: .55rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: .8rem;
  background: rgba(var(--panel-2-rgb), .36);
}
.session-summary-fact > label {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  white-space: nowrap;
}
.session-summary-narrative-grid {
  display: grid;
  grid-template-columns: minmax(12rem, .4fr) minmax(22rem, 1fr);
  gap: .75rem;
}
.session-summary-directive-field { grid-column: 1 / -1; }
.session-summary-narrator-field small { display: block; margin-top: .35rem; color: var(--muted); }
.session-summary-player-questions {
  padding: .75rem .9rem;
  border-left: 4px solid rgba(var(--accent-rgb), .7);
  border-radius: .5rem;
  background: rgba(var(--accent-rgb), .08);
}
.session-summary-player-questions p { margin: .35rem 0 0; }
@media (max-width: 760px) {
  .session-summary-fact,
  .session-summary-narrative-grid { grid-template-columns: 1fr; }
  .session-summary-section-head { align-items: stretch; flex-direction: column; }
}
.session-summary-responses,
.session-summary-archive-list {
  display: grid;
  gap: .6rem;
}
.session-summary-manual-entry {
  margin-top: .35rem;
  padding: .7rem .85rem;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: .85rem;
  background: rgba(var(--panel-2-rgb), .3);
}
.session-summary-manual-entry > summary {
  color: var(--accent);
  cursor: pointer;
  font-weight: 850;
}
.session-summary-manual-form {
  display: grid;
  gap: .65rem;
  padding-top: .75rem;
}
.session-summary-manual-form textarea {
  min-height: 9rem;
}
.session-summary-manual-form .settings-actions,
.session-summary-manual-form .settings-hint {
  margin: 0;
}
.session-summary-response,
.session-summary-archive-item {
  border: 1px solid rgba(var(--accent-rgb), .2);
  border-radius: 1rem;
  padding: .75rem .9rem;
  background: rgba(var(--panel-2-rgb), .35);
}
.session-summary-response {
  display: grid;
  gap: .25rem;
}
.session-summary-response em {
  color: var(--muted);
  font-style: normal;
  font-size: .86rem;
}
.session-summary-response-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: .75rem;
}
.session-summary-response textarea {
  width: 100%;
  min-height: 8rem;
  resize: vertical;
  margin-top: .35rem;
}
.session-summary-response .settings-actions {
  margin: .35rem 0 0;
}
.session-summary-player-name {
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 850;
  text-align: left;
  cursor: pointer;
  text-decoration: underline;
  text-decoration-color: rgba(var(--accent-rgb), .65);
  text-underline-offset: .18em;
}
.session-summary-player-name:hover { color: var(--accent); }
.session-summary-archive-item summary {
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  align-items: center;
}
.session-summary-archive-item pre {
  white-space: pre-wrap;
  margin: .75rem 0 0;
  font-family: inherit;
}
.session-summary-device-setting .checkbox-line {
  display: flex;
  gap: .55rem;
  align-items: center;
}

/* V0.202 — consultation des résumés côté joueurs/outils */
.session-archive-dialog {
  width: min(920px, calc(100vw - 1.5rem));
}
.session-archive-card input[type="search"] {
  width: 100%;
}
.session-archive-card .session-summary-archive-list {
  max-height: min(62vh, 720px);
  overflow: auto;
  padding-right: .25rem;
}

/* V0.202 — sauvegardes / restauration */
.backup-dialog {
  width: min(980px, calc(100vw - 1.5rem));
}
.backup-settings-grid {
  display: grid;
  grid-template-columns: minmax(10rem, 1fr) minmax(8rem, .6fr);
  gap: .75rem;
}
.backup-list {
  display: grid;
  gap: .6rem;
  max-height: min(55vh, 620px);
  overflow: auto;
  padding-right: .25rem;
}
.backup-item {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  align-items: center;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 1rem;
  padding: .75rem .9rem;
  background: rgba(var(--panel-2-rgb), .38);
}
.backup-item > div {
  display: grid;
  gap: .15rem;
}
.backup-item span,
.backup-item em {
  color: var(--muted);
  font-style: normal;
  font-size: .88rem;
}
@media (max-width: 720px) {
  .backup-settings-grid,
  .backup-item {
    grid-template-columns: 1fr;
  }
  .backup-item {
    align-items: stretch;
    flex-direction: column;
  }
}


/* V0.202 — effets & conditions structurés */
.effect-reminder-panel {
  margin: 10px 0 14px;
  padding: 12px 14px;
  border-radius: 18px;
  border: 1px solid var(--line);
  background: rgba(20, 16, 14, 0.62);
  box-shadow: 0 10px 24px rgba(0,0,0,.18);
}
.effect-reminder-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: baseline;
  margin-bottom: 10px;
}
.effect-reminder-list {
  display: grid;
  gap: 8px;
}
.effect-reminder-item {
  display: grid;
  grid-template-columns: minmax(160px, 240px) 1fr;
  gap: 12px;
  align-items: center;
  padding: 10px 12px;
  border-radius: 14px;
  border: 1px solid rgba(212, 168, 92, .18);
  background: rgba(255,255,255,.03);
}
.effect-reminder-item.expired {
  border-color: rgba(214, 86, 86, .38);
  background: rgba(160, 30, 30, .14);
}
.effect-dialog-grid {
  display: grid;
  grid-template-columns: 340px minmax(420px, 1fr);
  gap: 18px;
}
.effect-dialog-column {
  display: grid;
  align-content: start;
  gap: 12px;
}
.effect-dialog-section-title {
  font-weight: 800;
  letter-spacing: .02em;
  text-transform: uppercase;
  opacity: .9;
}
.effect-existing-list {
  display: grid;
  gap: 10px;
  max-height: 260px;
  overflow: auto;
  padding-right: 4px;
}
.effect-existing-item {
  text-align: left;
  border-radius: 14px;
  border: 1px solid rgba(212, 168, 92, .22);
  background: rgba(255,255,255,.03);
  color: inherit;
  padding: 10px 12px;
  display: grid;
  gap: 3px;
}
.effect-existing-item.selected {
  border-color: rgba(212, 168, 92, .75);
  background: rgba(212, 168, 92, .12);
}
.effect-existing-item strong { font-size: 1rem; }
.effect-existing-item span, .effect-existing-item small { opacity: .86; }
.effect-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(180px, 1fr));
  gap: 12px 14px;
}
.effect-form-grid .full-row { grid-column: 1 / -1; }
.checkbox-line {
  display: flex;
  align-items: center;
  gap: 10px;
}
.checkbox-line input { width: 18px; height: 18px; }
.effect-dialog-actions { justify-content: flex-end; }
@media (max-width: 1100px) {
  .effect-dialog-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .effect-form-grid { grid-template-columns: 1fr; }
  .effect-reminder-item { grid-template-columns: 1fr; }
}


/* V0.202 — finition fenêtre effets */
.effect-dialog .condition-grid {
  grid-template-columns: repeat(auto-fit, minmax(8.4rem, 1fr));
  gap: .55rem;
}
.effect-dialog .condition-choice {
  min-width: 0;
  width: 100%;
  padding-inline: .65rem;
  font-size: clamp(.86rem, .78rem + .25vw, 1rem);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.effect-dialog #conditionDurationValueWrap[hidden] {
  display: none !important;
}

/* V0.202 — bannière joueurs robuste, même sans assets */
.exploration-scene-banner-static figcaption {
  opacity: .82;
}
.exploration-scene-banner-static.has-image figcaption {
  opacity: .16;
}
.exploration-scene-banner-static.using-default-banner figcaption {
  opacity: .0;
}
.player-banner-preview-card {
  display: grid;
  gap: .75rem;
  padding: .85rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--panel-2-rgb), .36);
  margin: .85rem 0;
}
.player-banner-preview-card > div {
  display: grid;
  gap: .18rem;
}
.player-banner-preview-card span {
  color: var(--muted);
}
.mj-player-banner-preview {
  min-height: 8rem;
  margin: 0;
}
.mj-player-banner-preview img {
  min-height: 8rem;
}

/* V0.202 — sons de table : fichier choisi avant sauvegarde */
.table-sound-file.pending-file {
  color: var(--accent-strong, var(--accent));
  font-weight: 850;
}

/* V0.202 — MJ : alignement de la ligne Rencontre */
.encounter-title-row {
  align-items: flex-start;
  margin-bottom: .35rem;
}
.encounter-toolbar {
  justify-content: space-between;
  align-items: center;
  gap: .8rem 1rem;
  margin-bottom: .85rem;
}
.encounter-toolbar-left {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .6rem;
  min-width: 0;
}
.encounter-toolbar .encounter-mode-actions {
  margin-left: auto;
  flex: 0 0 auto;
}
.encounter-toolbar .round-pill {
  white-space: nowrap;
}
@media (max-width: 900px) {
  .encounter-toolbar,
  .encounter-toolbar-left,
  .encounter-toolbar .encounter-mode-actions {
    align-items: stretch;
    flex-direction: column;
    width: 100%;
  }
  .encounter-toolbar .encounter-mode-actions {
    margin-left: 0;
  }
  .encounter-toolbar .mode-toggle-main,
  .encounter-toolbar .round-pill {
    width: 100%;
  }
}

/* V0.202 — MJ plus compact + bannière joueurs configurable */
.encounter-panel {
  padding-top: .65rem;
}
.encounter-panel::before {
  height: 9.4rem;
}
.encounter-title-row {
  margin-bottom: .15rem;
}
.encounter-title-row h2 {
  margin-bottom: .1rem;
}
.encounter-toolbar {
  align-items: center;
  margin-top: .1rem;
  margin-bottom: .4rem;
}
.encounter-toolbar-left {
  align-items: center;
}
.encounter-toolbar .sort-control select {
  min-height: 2.15rem;
}
.encounter-toolbar .passive-skills-open-btn {
  min-height: 2.15rem;
}
.encounter-toolbar .mode-toggle-main {
  min-width: 10.8rem;
  padding: .42rem .74rem;
}
.encounter-toolbar .mode-toggle-main strong {
  font-size: 1.02rem;
}
.encounter-toolbar .mode-toggle-main em {
  font-size: .64rem;
  margin-top: .04rem;
}
.encounter-toolbar .round-pill {
  padding: .35rem .55rem;
}
.encounter-weather-impact-row {
  margin: -.2rem 0 .55rem;
}
.weather-impact-summary {
  padding: .55rem .78rem;
}
.weather-impact-badge {
  min-width: 5.6rem;
  padding: .28rem .58rem;
}
.active-box {
  margin-top: .05rem;
}
.exploration-scene-banner-static figcaption,
.exploration-scene-banner-static.has-image figcaption,
.exploration-scene-banner-static.using-default-banner figcaption {
  display: none !important;
}
.player-banner-controls {
  display: grid;
  gap: .65rem;
}
.player-banner-controls label {
  display: grid;
  gap: .3rem;
  color: var(--muted);
  font-weight: 800;
}
.player-banner-controls select {
  min-height: 2.3rem;
}
.player-banner-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .55rem;
}
.mj-player-banner-preview img,
.exploration-scene-banner img {
  object-position: center center;
}
@media (max-width: 900px) {
  .encounter-panel::before {
    height: 12rem;
  }
  .encounter-toolbar .mode-toggle-main,
  .encounter-toolbar .round-pill {
    width: auto;
  }
}

/* V0.202 — cadrage réel de la bannière joueurs */
.exploration-scene-banner {
  isolation: isolate;
}
.exploration-scene-banner img {
  transform-origin: center center;
  will-change: transform;
  transition: transform .16s ease, object-position .16s ease;
}
.exploration-scene-banner-static figcaption {
  display: none !important;
}
.player-banner-framing {
  display: grid;
  gap: .7rem;
  padding: .7rem;
  border: 1px solid rgba(var(--accent-rgb), .20);
  border-radius: .85rem;
  background: rgba(var(--input-rgb), .24);
}
.player-banner-nudge-grid {
  width: max-content;
  display: grid;
  grid-template-columns: repeat(3, 2.6rem);
  grid-auto-rows: 2.3rem;
  gap: .3rem;
  align-items: center;
}
.player-banner-nudge-grid button,
.player-banner-zoom-row button {
  min-height: 2.2rem;
  padding: .25rem .5rem;
}
.player-banner-zoom-row {
  display: flex;
  align-items: center;
  gap: .55rem;
  flex-wrap: wrap;
}
.player-banner-zoom-row label {
  display: flex;
  align-items: center;
  gap: .5rem;
  min-width: min(100%, 18rem);
}
.player-banner-zoom-row input[type="range"] {
  min-width: min(100%, 12rem);
}
#playerBannerScaleValue {
  min-width: 3.25rem;
  color: var(--accent-strong, var(--accent));
}


/* V0.202 — Rencontre : contrôles alignés au haut de la bannière */
.encounter-panel {
  padding-top: .48rem;
}
.encounter-panel::before {
  height: 7.4rem;
}
.encounter-title-row {
  display: grid !important;
  grid-template-columns: minmax(14rem, auto) minmax(16rem, 1fr) auto;
  align-items: start !important;
  gap: .65rem 1rem;
  margin: 0 0 .25rem !important;
}
.encounter-title-copy {
  min-width: 0;
}
.encounter-title-copy h2 {
  margin: 0 0 .14rem;
}
.encounter-title-copy .panel-subtitle {
  margin: 0;
}
.encounter-title-row .encounter-toolbar-left {
  align-self: start;
  padding-top: .35rem;
}
.encounter-title-row .encounter-mode-actions {
  align-self: start;
  justify-self: end;
  margin-left: 0 !important;
  padding-top: .05rem;
}
.encounter-weather-impact-row {
  margin: .1rem 0 .45rem !important;
}
.weather-impact-card {
  width: min(44rem, calc(100% - 34rem));
}
@media (max-width: 1120px) {
  .encounter-title-row {
    grid-template-columns: 1fr;
  }
  .encounter-title-row .encounter-toolbar-left,
  .encounter-title-row .encounter-mode-actions {
    padding-top: 0;
    justify-self: stretch;
  }
  .encounter-title-row .encounter-mode-actions {
    justify-content: flex-start;
  }
  .weather-impact-card {
    width: 100%;
  }
}

/* V0.202 — réglages de bannière déplacés dans Paramètres Écran joueurs */
.player-banner-settings-group {
  margin-top: 1rem;
  padding: 0;
  overflow: hidden;
}
.player-banner-settings-group > summary {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .75rem;
  cursor: pointer;
  padding: .8rem .9rem;
  list-style: none;
  border-radius: .85rem;
}
.player-banner-settings-group > summary::-webkit-details-marker {
  display: none;
}
.player-banner-settings-group > summary span {
  font-weight: 950;
  color: var(--text);
}
.player-banner-settings-group > summary small {
  color: var(--muted);
  font-weight: 750;
  text-align: right;
}
.player-banner-settings-group > summary::after {
  content: "▾";
  color: var(--accent-strong, var(--accent));
  transition: transform .16s ease;
}
.player-banner-settings-group[open] > summary::after {
  transform: rotate(180deg);
}
.player-banner-settings-card {
  margin: 0 .75rem .8rem;
}
.player-screen-settings-card .mj-player-banner-preview {
  min-height: 7.5rem;
}
.player-screen-settings-card .mj-player-banner-preview img {
  min-height: 7.5rem;
}

/* v0.202 — bouton explicite pour valider le contexte météo */
.weather-context-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .75rem;
  margin-top: 1rem;
  padding: .85rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .25);
}
.weather-context-actions .settings-hint {
  margin: 0;
  flex: 1 1 18rem;
}
.weather-context-actions button {
  flex: 0 0 auto;
}

/* V0.202 — météo : zone climatique repliable et moins envahissante */
.weather-latitude-details {
  margin-top: 1rem;
  padding-top: .75rem;
  border-top: 1px solid rgba(var(--accent-rgb), .18);
}

.weather-latitude-summary {
  display: grid;
  grid-template-columns: minmax(12rem, auto) minmax(0, 1fr);
  gap: .75rem;
  align-items: center;
  padding: .62rem .75rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: .9rem;
  background: rgba(var(--input-rgb), .24);
  cursor: pointer;
  list-style: none;
}

.weather-latitude-summary::-webkit-details-marker {
  display: none;
}

.weather-latitude-summary::after {
  content: "▸";
  justify-self: end;
  color: var(--accent);
  font-weight: 900;
}

.weather-latitude-details[open] .weather-latitude-summary::after {
  content: "▾";
}

.weather-latitude-summary > span {
  display: grid;
  gap: .12rem;
  min-width: 0;
}

.weather-latitude-summary strong {
  color: var(--text);
}

.weather-latitude-summary small {
  color: var(--muted);
  line-height: 1.25;
  padding-right: 1.25rem;
}

.weather-latitude-details .weather-latitude-table {
  margin-top: .65rem;
}

@media (max-width: 820px) {
  .weather-latitude-summary {
    grid-template-columns: 1fr;
  }

  .weather-latitude-summary::after {
    justify-self: start;
  }
}

/* V0.202 — Exploration : cacher le round et recoller le tri au titre Rencontre */
.mode-exploration .encounter-mode-actions .round-pill {
  display: none !important;
}
.encounter-title-row {
  grid-template-columns: minmax(20rem, 1fr) auto !important;
  align-items: start !important;
}
.encounter-title-copy {
  display: grid;
  gap: .34rem;
  align-content: start;
}
.encounter-title-copy .encounter-toolbar-left {
  align-self: start;
  padding-top: 0 !important;
  margin-top: .1rem;
}
.encounter-title-row > .encounter-mode-actions {
  grid-column: 2;
}
@media (max-width: 1120px) {
  .encounter-title-row {
    grid-template-columns: 1fr !important;
  }
  .encounter-title-row > .encounter-mode-actions {
    grid-column: 1;
  }
}


/* V0.206 — impacts météo replacés dans la bannière Rencontre (centre), sans bande vide dessous */
.encounter-panel {
  padding-top: .4rem;
}
.encounter-panel::before {
  height: 7.15rem;
}
.encounter-title-row {
  display: grid !important;
  grid-template-columns: minmax(20rem, 1fr) minmax(18rem, 42rem) auto !important;
  align-items: start !important;
  gap: .5rem 1rem;
  margin: 0 0 .1rem !important;
}
.encounter-title-copy {
  display: grid;
  gap: .3rem;
  align-content: start;
  min-width: 0;
}
.encounter-title-copy .encounter-toolbar-left {
  padding-top: 0 !important;
  margin-top: .08rem;
}
.encounter-weather-impact-row {
  grid-column: 2;
  align-self: start;
  justify-self: stretch;
  margin: 0 !important;
  padding-top: .2rem;
}
.encounter-weather-impact-row .weather-impact-card {
  width: 100%;
  max-width: none;
}
.encounter-title-row > .encounter-mode-actions {
  grid-column: 3;
  align-self: start;
  justify-self: end;
  margin-left: 0 !important;
  padding-top: .02rem;
}
.weather-impact-summary {
  min-height: 3rem;
}
@media (max-width: 1180px) {
  .encounter-title-row {
    grid-template-columns: 1fr !important;
  }
  .encounter-weather-impact-row,
  .encounter-title-row > .encounter-mode-actions {
    grid-column: 1;
  }
  .encounter-title-row > .encounter-mode-actions {
    justify-self: stretch;
  }
  .encounter-weather-impact-row {
    padding-top: 0;
  }
}

/* v0.210 — fenêtre de fin de combat et attribution automatique des XP */
.end-combat-dialog {
  width: min(980px, calc(100vw - 2rem));
}

.end-combat-card {
  width: min(940px, calc(100vw - 3rem));
  max-height: min(88vh, 900px);
  overflow: auto;
}

.end-combat-section {
  display: grid;
  gap: .7rem;
  padding: .85rem;
  border: 1px solid rgba(214, 165, 74, .24);
  border-radius: 14px;
  background: rgba(18, 15, 14, .5);
}

.end-combat-section-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
}

.end-combat-section-head > div {
  display: grid;
  gap: .18rem;
}

.end-combat-section-head small,
.end-combat-creature-main small,
.end-combat-recipient small {
  color: var(--muted);
}

.end-combat-creature-list,
.end-combat-recipient-list {
  display: grid;
  gap: .5rem;
}

.end-combat-creature-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) minmax(6rem, 8rem);
  align-items: center;
  gap: .75rem;
  min-height: 4rem;
  padding: .62rem .72rem;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 12px;
  background: rgba(255, 255, 255, .035);
  transition: opacity .16s ease, border-color .16s ease, background .16s ease;
}

.end-combat-creature-row.status-defeated {
  border-color: rgba(95, 184, 113, .32);
}

.end-combat-creature-row.status-removed {
  border-color: rgba(210, 161, 67, .34);
}

.end-combat-creature-row.status-active {
  border-color: rgba(210, 97, 76, .32);
}

.end-combat-creature-row.is-excluded {
  opacity: .48;
}

.end-combat-creature-row.is-missing-xp:not(.is-excluded) {
  border-color: rgba(232, 90, 74, .7);
  background: rgba(115, 35, 28, .16);
}

.end-combat-creature-main {
  display: grid;
  gap: .12rem;
  min-width: 0;
}

.end-combat-creature-main strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.end-combat-creature-xp {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: .45rem;
  margin: 0;
  font-size: .82rem;
}

.end-combat-creature-xp input {
  width: 100%;
  min-width: 0;
  text-align: right;
}

.end-combat-recipient {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .55rem .65rem;
  border: 1px solid rgba(255, 255, 255, .09);
  border-radius: 11px;
  background: rgba(255, 255, 255, .025);
}

.end-combat-recipient > span {
  display: grid;
  gap: .12rem;
}

.end-combat-recipient.is-locked {
  border-color: rgba(95, 184, 113, .2);
}

.end-combat-total-card {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: center;
  gap: .15rem 1rem;
  padding: .9rem 1rem;
  border: 1px solid rgba(214, 165, 74, .38);
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(108, 77, 28, .25), rgba(24, 21, 18, .72));
}

.end-combat-total-card > span {
  color: var(--muted);
  font-weight: 700;
}

.end-combat-total-card > strong {
  justify-self: end;
  font-size: 1.5rem;
  color: #f1c66d;
}

.end-combat-total-card > small {
  grid-column: 1 / -1;
  color: var(--muted);
}

.end-combat-actions {
  flex-wrap: wrap;
}

@media (max-width: 700px) {
  .end-combat-creature-row {
    grid-template-columns: auto minmax(0, 1fr);
  }
  .end-combat-creature-xp {
    grid-column: 2;
    width: min(11rem, 100%);
  }
  .end-combat-section-head {
    align-items: stretch;
    flex-direction: column;
  }
}

.end-combat-card {
  resize: both;
  min-width: min(520px, calc(100vw - 3rem));
  min-height: min(420px, calc(100vh - 3rem));
}


/* v0.211 — consultation directe des résumés de session */
.session-archive-card {
  width: min(980px, calc(100vw - 3rem));
  height: min(760px, calc(100vh - 3rem));
  min-width: min(560px, calc(100vw - 3rem));
  min-height: min(440px, calc(100vh - 3rem));
  resize: both;
  overflow: auto;
}
.session-archive-controls {
  display: grid;
  grid-template-columns: minmax(16rem, 1fr) minmax(16rem, 1fr);
  gap: 1rem;
}
.session-archive-controls label { min-width: 0; }
.session-archive-controls select { width: 100%; }
.session-archive-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.session-archive-toolbar .settings-hint { margin: 0; }
.session-archive-viewer {
  min-height: 18rem;
  padding: 1.1rem 1.2rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .28);
  overflow: auto;
}
.session-archive-viewer header {
  padding-bottom: .8rem;
  margin-bottom: .85rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .18);
}
.session-archive-viewer h3 { margin: .15rem 0 0; }
.session-archive-viewer pre {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font: inherit;
  line-height: 1.58;
  color: var(--text);
}
@media (max-width: 720px) {
  .session-archive-card {
    min-width: calc(100vw - 1.5rem);
    width: calc(100vw - 1.5rem);
    min-height: calc(100vh - 1.5rem);
    height: calc(100vh - 1.5rem);
    resize: none;
  }
  .session-archive-controls { grid-template-columns: 1fr; }
}


/* v0.212 — saisie directe du résumé de groupe dans les archives */
.session-archive-group-editor {
  display: grid;
  gap: .85rem;
}
.session-archive-group-editor[hidden] { display: none !important; }
.session-archive-group-editor label {
  display: grid;
  gap: .45rem;
  font-weight: 850;
}
.session-archive-group-editor textarea {
  width: 100%;
  min-height: 18rem;
  resize: vertical;
  line-height: 1.55;
}
.session-archive-save-actions {
  justify-content: flex-end;
  margin-top: 0;
}
.session-summary-return-section {
  border-top: 1px solid rgba(var(--accent-rgb), .18);
  padding-top: 1rem;
}


/* v0.213 — archives historiques, attribution des résumés et prompt ChatGPT */
.session-archive-create-panel,
.session-archive-player-owner,
.session-archive-prompt-panel {
  padding: 1rem 1.1rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .22);
}
.session-archive-create-panel[hidden],
.session-archive-player-owner[hidden],
.session-archive-prompt-panel[hidden] { display: none !important; }
.session-archive-create-head,
.session-archive-prompt-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1rem;
}
.session-archive-create-head h3,
.session-archive-prompt-head h3 { margin: .15rem 0 .25rem; }
.session-archive-create-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .85rem 1rem;
  margin-top: .9rem;
}
.session-archive-create-grid label,
.session-archive-player-owner label {
  display: grid;
  gap: .42rem;
  font-weight: 850;
}
.session-archive-create-grid .full { grid-column: 1 / -1; }
.session-archive-create-grid textarea { min-height: 9rem; resize: vertical; }
.session-archive-create-actions { justify-content: flex-end; }
.session-archive-player-owner {
  display: grid;
  grid-template-columns: minmax(14rem, 1fr) minmax(20rem, 1.15fr);
  align-items: end;
  gap: 1rem;
  margin-bottom: 1rem;
}
.session-archive-player-owner p { margin: .3rem 0 0; }
.session-archive-owner-controls {
  display: grid;
  grid-template-columns: minmax(12rem, 1fr) auto;
  gap: .65rem;
  align-items: end;
}
.session-archive-owner-controls input { grid-column: 1 / -1; }
.session-archive-prompt-panel { margin-top: 1rem; }
.session-archive-prompt-panel textarea {
  width: 100%;
  min-height: 20rem;
  margin-top: .8rem;
  resize: vertical;
  line-height: 1.5;
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
}
@media (max-width: 760px) {
  .session-archive-create-grid,
  .session-archive-player-owner { grid-template-columns: 1fr; }
  .session-archive-create-grid .full { grid-column: 1; }
  .session-archive-owner-controls { grid-template-columns: 1fr; }
}


/* v0.215 — messages intégrés et statut des archives */
.app-notice-dialog {
  width: min(34rem, calc(100vw - 2rem));
}
.app-notice-card {
  min-width: min(30rem, calc(100vw - 3rem));
}
#sessionArchiveStatus.is-error {
  color: var(--danger);
  font-weight: 800;
}
#sessionArchiveStatus.is-success {
  color: #82d99b;
  font-weight: 800;
}


/* v0.216 — fenêtres MJ souples, déplaçables, redimensionnables et minimisables */
body[data-settings-scope="mj"] dialog.settings-dialog.managed-window,
dialog.settings-dialog.managed-window {
  box-sizing: border-box !important;
  max-width: calc(100vw - 16px) !important;
  max-height: calc(100vh - 16px) !important;
  overflow: hidden !important;
  resize: both !important;
  overscroll-behavior: contain;
}

body[data-settings-scope="mj"] dialog.settings-dialog.managed-window.managed-window-positioned,
dialog.settings-dialog.managed-window.managed-window-positioned {
  position: fixed !important;
  inset: auto !important;
  margin: 0 !important;
}

dialog.settings-dialog.managed-window > .settings-card,
dialog.settings-dialog.managed-window > form.settings-card {
  width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  max-height: none !important;
  min-width: 0 !important;
  min-height: 0 !important;
  overflow: auto !important;
  box-sizing: border-box !important;
}

dialog.settings-dialog.managed-window .managed-window-handle {
  cursor: move;
  touch-action: none;
  user-select: none;
}

dialog.settings-dialog.managed-window .managed-window-handle :is(button, input, select, textarea, a, label, summary, details) {
  user-select: auto;
}

.managed-window-minimize {
  flex: 0 0 auto;
  min-width: 2.55rem;
  min-height: 2.35rem;
  padding: .3rem .7rem;
  font-size: 1.35rem;
  line-height: 1;
  font-weight: 900;
}

.managed-window-resize-grip {
  position: absolute;
  z-index: 12;
  right: 2px;
  bottom: 2px;
  width: 1.35rem;
  height: 1.35rem;
  border-right: 3px solid rgba(var(--accent-rgb), .78);
  border-bottom: 3px solid rgba(var(--accent-rgb), .78);
  border-radius: 0 0 .75rem 0;
  cursor: nwse-resize;
  touch-action: none;
  opacity: .8;
}

.managed-window-resize-grip::before,
.managed-window-resize-grip::after {
  content: '';
  position: absolute;
  right: 3px;
  bottom: 3px;
  border-right: 2px solid rgba(var(--accent-rgb), .52);
  border-bottom: 2px solid rgba(var(--accent-rgb), .52);
}
.managed-window-resize-grip::before { width: .72rem; height: .72rem; }
.managed-window-resize-grip::after { width: .38rem; height: .38rem; }
.managed-window-resize-grip:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

/* Carte de combat intégrée à l'écran MJ, sans remplacer ses adresses autonomes. */
.combat-map-window {
  min-width: min(44rem, calc(100vw - 16px));
  min-height: min(32rem, calc(100vh - 16px));
}
.combat-map-window-card {
  display: grid !important;
  grid-template-rows: auto minmax(0, 1fr);
  padding: 0 !important;
  overflow: hidden !important;
}
.combat-map-window-head {
  margin: 0;
  padding: .65rem .8rem;
  border-bottom: 1px solid rgba(var(--accent-rgb), .32);
  background: rgba(var(--panel-rgb), .98);
}
.combat-map-window-head .eyebrow { margin-bottom: .05rem; }
.combat-map-window-head h2 { margin: 0; }
.combat-map-window-frame {
  display: block;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  border: 0;
  background: #090806;
}
.combat-map-window-button { white-space: nowrap; }
.button-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
}
@media (max-width: 760px) {
  .combat-map-window {
    min-width: calc(100vw - 16px);
    min-height: min(28rem, calc(100vh - 16px));
  }
  .combat-map-window-head .dialog-head-actions { display: none; }
}

.managed-window-tray {
  position: fixed;
  z-index: 2400;
  right: 1rem;
  bottom: 1rem;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: .45rem;
  max-width: min(28rem, calc(100vw - 2rem));
  pointer-events: auto;
}
.managed-window-tray[hidden] { display: none !important; }
.managed-window-tray-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: stretch;
  min-width: min(20rem, calc(100vw - 2rem));
  border: 1px solid rgba(var(--accent-rgb), .48);
  border-radius: .75rem;
  overflow: hidden;
  background: linear-gradient(180deg, rgba(var(--panel-2-rgb), .98), rgba(var(--panel-rgb), .98));
  box-shadow: 0 12px 34px rgba(0, 0, 0, .46);
}
.managed-window-tray-restore,
.managed-window-tray-close {
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--text);
}
.managed-window-tray-restore {
  min-width: 0;
  justify-content: flex-start;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
  font-weight: 850;
}
.managed-window-tray-close {
  min-width: 2.65rem;
  border-left: 1px solid rgba(var(--accent-rgb), .28);
  color: var(--muted);
}
.managed-window-tray-restore:hover,
.managed-window-tray-close:hover {
  background: rgba(var(--accent-rgb), .16);
  color: var(--text);
}

body.managed-window-dragging,
body.managed-window-resizing,
body.managed-window-dragging *,
body.managed-window-resizing * {
  user-select: none !important;
}
body.managed-window-dragging { cursor: move !important; }
body.managed-window-resizing { cursor: nwse-resize !important; }

@media (max-width: 700px) {
  body[data-settings-scope="mj"] dialog.settings-dialog.managed-window,
  dialog.settings-dialog.managed-window {
    min-width: min(320px, calc(100vw - 16px)) !important;
    min-height: min(170px, calc(100vh - 16px)) !important;
    resize: both !important;
  }
  .managed-window-tray {
    right: .5rem;
    bottom: .5rem;
    max-width: calc(100vw - 1rem);
  }
  .managed-window-tray-item {
    min-width: min(18rem, calc(100vw - 1rem));
  }
}

/* v0.217 — flux de mort, outils intégrés tablette, actif compact et galerie joueurs */
.dead-creature-dialog {
  width: min(94vw, 620px);
}
.dead-creature-card {
  width: 100%;
  max-width: 620px;
}
.dead-creature-summary {
  display: grid;
  gap: .3rem;
  padding: 1rem;
  border: 1px solid rgba(var(--danger-rgb), .45);
  border-radius: .9rem;
  background: rgba(var(--danger-rgb), .10);
}
.dead-creature-summary strong {
  font-size: 1.2rem;
}
.dead-creature-summary span {
  color: var(--muted);
}
.dead-creature-actions {
  justify-content: flex-end;
}

.active-turn-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
}
.active-turn-heading .eyebrow {
  margin: 0;
}
.active-panel-toggle {
  padding: .35rem .65rem;
  font-size: .82rem;
}
.player-body:not(.player-mobile-body) .active-portrait {
  width: min(100%, 220px);
  margin: .25rem auto .55rem;
}
.player-mobile-body .active-portrait {
  max-width: 190px;
  margin: .25rem auto .55rem;
}
.active-turn-panel.active-panel-collapsed .active-portrait {
  display: none;
}
.active-turn-panel.active-panel-collapsed h2 {
  font-size: clamp(1.45rem, 3vw, 2.2rem);
}
.active-turn-panel.active-panel-collapsed .active-details {
  gap: .35rem;
}
.next-turn-preview {
  margin-top: .85rem;
  padding-top: .75rem;
  border-top: 1px solid rgba(var(--accent-rgb), .28);
}
.next-turn-label {
  margin-bottom: .4rem;
  color: var(--accent);
  font-size: .76rem;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.next-turn-card {
  display: grid;
  grid-template-columns: 3.35rem minmax(0, 1fr);
  gap: .6rem;
  align-items: center;
  padding: .55rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  background: rgba(var(--input-rgb), .48);
}
.next-turn-portrait {
  width: 3.35rem;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  border-radius: .7rem;
  border: 1px solid var(--line);
  display: grid;
  place-items: center;
  position: relative;
}
.next-turn-portrait .creature-token-number { font-size:1.45rem; }
.next-turn-portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.next-turn-copy {
  min-width: 0;
}
.next-turn-copy h3,
.next-turn-copy .player-name-text {
  margin: 0;
  font-size: 1rem;
}
.next-turn-copy > span {
  color: var(--muted);
  font-size: .82rem;
}

.player-tools-dialog {
  width: min(98vw, 1080px);
  height: min(94vh, 920px);
  max-width: none;
  max-height: none;
  padding: 0;
  overflow: hidden;
}
.player-tools-card {
  height: 100%;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  background: var(--panel);
}
.player-tools-head {
  padding: .8rem 1rem;
  border-bottom: 1px solid var(--line);
}
.player-tools-head h2,
.player-tools-head p {
  margin-top: 0;
  margin-bottom: .15rem;
}
#playerToolsFrame {
  width: 100%;
  height: 100%;
  border: 0;
  background: var(--bg);
}
.tools-body.tools-embedded {
  min-height: 100%;
}
.tools-body.tools-embedded .tools-hero {
  padding: .7rem .9rem;
  min-height: 0;
}
.tools-body.tools-embedded .tools-hero > div:first-of-type p,
.tools-body.tools-embedded .tools-hero > div:first-of-type h1 {
  margin: 0;
}
.tools-body.tools-embedded .tools-hero > div:first-of-type h1 {
  font-size: clamp(1.25rem, 3vw, 2rem);
}
.tools-body.tools-embedded .tools-layout {
  padding: .75rem;
  gap: .75rem;
}

.player-image-library-dialog {
  width: min(96vw, 1120px);
  height: min(92vh, 860px);
  max-width: none;
  max-height: none;
}
.player-image-library-card {
  width: 100%;
  height: 100%;
  max-width: none;
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr);
  overflow: hidden;
}
.player-image-library-viewer {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(240px, .75fr);
  gap: 1rem;
  min-height: 250px;
  max-height: 48vh;
  padding: .75rem;
  border: 1px solid var(--line);
  border-radius: 1rem;
  background: rgba(var(--input-rgb), .5);
}
.player-image-library-viewer[hidden] {
  display: none;
}
.player-image-library-viewer img {
  width: 100%;
  height: 100%;
  min-height: 230px;
  max-height: 44vh;
  border-radius: .8rem;
  background: rgba(0,0,0,.25);
}
.player-image-library-viewer-copy {
  display: grid;
  align-content: start;
  gap: .7rem;
  min-width: 0;
}
.player-image-library-viewer-copy strong {
  font-size: 1.2rem;
}
.player-image-library-viewer-copy p {
  margin: 0;
  white-space: pre-wrap;
  color: var(--muted);
}
.player-image-library-grid {
  min-height: 0;
  overflow: auto;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: .75rem;
  padding: .25rem .1rem .8rem;
}
.player-image-library-item {
  display: grid;
  grid-template-rows: 125px auto;
  gap: .5rem;
  padding: .5rem;
  text-align: left;
  border-radius: .9rem;
  background: rgba(var(--input-rgb), .55);
}
.player-image-library-thumb {
  overflow: hidden;
  border-radius: .65rem;
  background: rgba(0,0,0,.28);
}
.player-image-library-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.player-image-library-copy {
  display: grid;
  gap: .2rem;
  min-width: 0;
}
.player-image-library-copy strong,
.player-image-library-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.player-image-library-copy small {
  color: var(--muted);
}

@media (max-width: 760px) {
  .player-tools-dialog,
  .player-image-library-dialog {
    width: 100vw;
    height: 100dvh;
    max-width: none;
    max-height: none;
    border-radius: 0;
  }
  .player-image-library-viewer {
    grid-template-columns: 1fr;
    max-height: none;
  }
  .player-image-library-viewer img {
    min-height: 210px;
    max-height: 42vh;
  }
  .player-image-library-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* v0.218 — bloc du tour actif réellement réduit + galerie en plein écran */
.active-panel-toggle[hidden] {
  display: none !important;
}

/* En affichage complet, le portrait retrouve sa grandeur d'origine. */
.player-body:not(.player-mobile-body) .active-portrait {
  width: min(100%, 360px);
  margin: .4rem auto 1rem;
}
.player-mobile-body .active-portrait {
  width: min(100%, 260px);
  max-width: 260px;
  margin: .4rem auto 1rem;
}

/* Le mode réduit replie tout le détail du combattant actif, pas seulement son image. */
.active-turn-panel.active-panel-collapsed {
  min-height: 0 !important;
  padding-bottom: .8rem;
}
.active-turn-panel.active-panel-collapsed .active-details {
  display: none !important;
}
.active-turn-panel.active-panel-collapsed h2 {
  margin: .15rem 0 .25rem;
  font-size: clamp(1.25rem, 2.4vw, 1.85rem);
}
.active-turn-panel.active-panel-collapsed .next-turn-preview {
  margin-top: .45rem;
  padding-top: .55rem;
}
.active-turn-panel.active-panel-collapsed .next-turn-card {
  grid-template-columns: 2.8rem minmax(0, 1fr);
  padding: .45rem;
}
.active-turn-panel.active-panel-collapsed .next-turn-portrait {
  width: 2.8rem;
}

/* Sur le grand écran joueurs, la colonne entière du tour actif devient plus étroite. */
.player-body:not(.player-mobile-body).active-panel-layout-compact .player-layout.player-layout-side {
  grid-template-columns: minmax(210px, 18rem) minmax(0, 1fr);
}
.player-body:not(.player-mobile-body).active-panel-layout-compact .player-active-left {
  width: 100%;
}

.active-panel-setting .checkbox-line {
  align-items: flex-start;
}

/* La galerie elle-même occupe tout l'écran. */
dialog.player-image-library-dialog {
  inset: 0;
  width: 100vw;
  height: 100dvh;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border-radius: 0;
}
.player-image-library-card {
  width: 100%;
  height: 100%;
  max-width: none;
  border-radius: 0;
  grid-template-rows: auto auto minmax(0, 1fr);
  padding: clamp(.65rem, 1.5vw, 1.25rem);
}
.player-image-library-card > .settings-head {
  margin-bottom: .7rem;
}
.player-image-library-grid {
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  align-content: start;
  padding: .25rem .15rem 1rem;
}
.player-image-library-item {
  grid-template-rows: minmax(140px, 20vh) auto;
}

/* Un clic sur une vignette ouvre une visionneuse couvrant tout le viewport. */
.player-image-library-viewer {
  position: fixed;
  inset: 0;
  z-index: 100000;
  width: 100vw;
  height: 100dvh;
  max-width: none;
  max-height: none;
  min-height: 0;
  margin: 0;
  padding: clamp(.65rem, 1.5vw, 1.25rem);
  border: 0;
  border-radius: 0;
  background: rgba(5, 7, 10, .97);
  grid-template-columns: minmax(0, 1fr) minmax(260px, 24rem);
  grid-template-rows: auto minmax(0, 1fr);
  gap: .8rem 1rem;
  overflow: hidden;
}
.player-image-library-viewer[hidden] {
  display: none !important;
}
.player-image-library-viewer-close {
  grid-column: 1 / -1;
  justify-self: start;
  position: relative;
  z-index: 2;
}
.player-image-library-viewer img {
  grid-column: 1;
  grid-row: 2;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  max-width: none;
  max-height: none;
  object-fit: contain;
  border-radius: .8rem;
  background: rgba(0, 0, 0, .5);
}
.player-image-library-viewer-copy {
  grid-column: 2;
  grid-row: 2;
  align-content: start;
  overflow: auto;
  padding: .9rem;
  border: 1px solid var(--line);
  border-radius: .8rem;
  background: rgba(var(--panel-rgb), .9);
}
.player-image-library-viewer-copy strong {
  font-size: clamp(1.2rem, 2vw, 1.7rem);
}
.player-image-viewer-open {
  overflow: hidden;
}

@media (max-width: 760px) {
  .player-image-library-card {
    padding: .65rem;
  }
  .player-image-library-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .55rem;
  }
  .player-image-library-item {
    grid-template-rows: 115px auto;
  }
  .player-image-library-viewer {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(0, 1fr) auto;
    padding: .55rem;
  }
  .player-image-library-viewer-close {
    grid-column: 1;
    grid-row: 1;
  }
  .player-image-library-viewer img {
    grid-column: 1;
    grid-row: 2;
    min-height: 0;
    max-height: none;
  }
  .player-image-library-viewer-copy {
    grid-column: 1;
    grid-row: 3;
    max-height: 28dvh;
    padding: .65rem;
  }
}

/* v0.221 — contrôles de fenêtre regroupés comme une fenêtre moderne */
dialog.settings-dialog.managed-window .settings-head {
  align-items: flex-start;
}
dialog.settings-dialog.managed-window .settings-head > :first-child {
  min-width: 0;
}
.managed-window-head-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .55rem;
  margin-left: auto;
  flex: 0 0 auto;
}
.managed-window-head-right > :is(.dialog-head-actions, .private-chat-head-actions) {
  display: flex;
  align-items: center;
  gap: .45rem;
}
.managed-window-controls {
  display: inline-flex;
  align-items: stretch;
  justify-content: flex-end;
  gap: .28rem;
  margin-left: auto;
  flex: 0 0 auto;
}
.managed-window-system-button,
.managed-window-minimize,
.managed-window-maximize,
.managed-window-close {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 3rem;
  min-width: 3rem;
  height: 2.7rem;
  min-height: 2.7rem;
  padding: 0;
  font-size: 1.35rem;
  line-height: 1;
  font-weight: 850;
}
.managed-window-maximize {
  font-size: 1.2rem;
}
.managed-window-close:hover {
  border-color: rgba(218, 77, 72, .9);
  background: rgba(218, 77, 72, .2);
  color: #ffe7e4;
}
dialog.settings-dialog.managed-window.managed-window-maximized {
  resize: none !important;
}
dialog.settings-dialog.managed-window.managed-window-maximized > .managed-window-resize-grip {
  display: none !important;
}
@media (max-width: 760px) {
  dialog.settings-dialog.managed-window .settings-head {
    flex-direction: row;
    align-items: flex-start;
  }
  .managed-window-head-right {
    gap: .35rem;
  }
  .managed-window-controls {
    gap: .18rem;
  }
  .managed-window-system-button,
  .managed-window-minimize,
  .managed-window-maximize,
  .managed-window-close {
    width: 2.65rem;
    min-width: 2.65rem;
    height: 2.45rem;
    min-height: 2.45rem;
  }
}

/* v0.223 — nouveaux QR Gestion D&D : choix avec/sans clé puis outil */
.qr-access-section,
.qr-tools-section {
  margin-top: 1rem;
  padding: 1rem;
  border: 1px solid rgba(200, 160, 255, 0.22);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.035);
}
.qr-access-section h3,
.qr-tools-section h3 {
  margin: 0;
  font-size: 1rem;
}
.qr-access-mode-picker {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.8rem;
  margin-top: 0.8rem;
}
.qr-access-mode-card {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  min-width: 0;
  padding: 0.9rem;
  border: 1px solid rgba(200, 160, 255, 0.25);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.04);
  cursor: pointer;
}
.qr-access-mode-card:hover,
.qr-access-mode-card:has(input:checked) {
  border-color: rgba(210, 175, 255, 0.68);
  background: rgba(210, 175, 255, 0.11);
}
.qr-access-mode-card input[type="radio"] {
  inline-size: 1.15rem;
  block-size: 1.15rem;
  margin: 0.15rem 0 0;
  flex: 0 0 auto;
}
.qr-access-mode-card span {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  min-width: 0;
}
.qr-access-mode-card strong {
  font-size: 1rem;
}
.qr-access-mode-card small {
  color: var(--muted, rgba(255, 255, 255, 0.74));
  line-height: 1.35;
}
.qr-access-mode-confidential:has(input:checked) {
  border-color: rgba(255, 194, 92, 0.75);
  background: rgba(255, 174, 66, 0.12);
}
.qr-access-notice {
  margin: 0.8rem 0 0;
  padding: 0.7rem 0.85rem;
  border-radius: 12px;
  background: rgba(116, 205, 154, 0.1);
  border: 1px solid rgba(116, 205, 154, 0.28);
  color: rgba(255, 255, 255, 0.9);
  line-height: 1.4;
}
.qr-access-notice.is-confidential {
  background: rgba(255, 174, 66, 0.12);
  border-color: rgba(255, 194, 92, 0.42);
}
.qr-tools-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.qr-tools-heading .qr-display-bulk-actions {
  margin: 0;
}
.qr-tools-section .qr-display-options {
  grid-template-columns: repeat(2, minmax(260px, 1fr));
}
.qr-tools-section .qr-choice-thumb {
  inline-size: 96px;
  block-size: 108px;
}
.qr-tools-section .qr-choice-card:has(input:checked) {
  border-color: rgba(210, 175, 255, 0.7);
  background: rgba(210, 175, 255, 0.11);
}
@media (max-width: 760px) {
  .qr-access-mode-picker,
  .qr-tools-section .qr-display-options {
    grid-template-columns: 1fr;
  }
  .qr-access-section,
  .qr-tools-section {
    padding: 0.8rem;
  }
  .qr-choice-card {
    grid-template-columns: auto 80px 1fr;
  }
  .qr-tools-section .qr-choice-thumb {
    inline-size: 80px;
    block-size: 90px;
  }
}


/* V0.224 — centre visuel des conditions, sorts et zones */
.effect-center-open-btn { background: linear-gradient(135deg, rgba(114,82,190,.88), rgba(42,113,164,.88)); border-color: rgba(196,178,255,.55); }
.effect-center-card { width: min(1460px, 96vw); max-width: none; max-height: 94vh; overflow: auto; }
.effect-center-head { position: sticky; top: 0; z-index: 5; background: color-mix(in srgb, var(--panel) 94%, transparent); backdrop-filter: blur(12px); padding-bottom: .75rem; }
.effect-context-target { display: flex; justify-content: space-between; gap: 1rem; align-items: center; }
.effect-context-target span { color: var(--muted); }
.effect-quick-section { display: grid; gap: .55rem; padding: .85rem; border: 1px solid rgba(var(--accent-rgb),.2); border-radius: 18px; background: rgba(var(--input-rgb),.2); }
.effect-quick-templates { display: grid; grid-template-columns: repeat(auto-fit, minmax(135px,1fr)); gap: .55rem; }
.effect-quick-card { min-height: 78px; display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: center; text-align: left; gap: .1rem .55rem; padding: .65rem .75rem; border-radius: 15px; }
.effect-quick-card > span { grid-row: 1 / 3; font-size: 1.55rem; }
.effect-quick-card strong { font-size: .98rem; }
.effect-quick-card small { color: var(--muted); }
.effect-quick-positive { border-color: rgba(73,190,111,.45); background: rgba(35,120,66,.18); }
.effect-quick-negative { border-color: rgba(225,86,86,.45); background: rgba(150,35,35,.16); }
.effect-quick-zone { border-color: rgba(164,117,234,.5); background: rgba(96,54,160,.2); }
.effect-center-layout { display: grid; grid-template-columns: minmax(360px,.9fr) minmax(560px,1.4fr); gap: 1rem; align-items: start; }
.effect-list-head { display: grid; gap: .55rem; }
.effect-list-filters { display: flex; flex-wrap: wrap; gap: .35rem; }
.effect-list-filters button { padding: .38rem .65rem; font-size: .84rem; }
.effect-list-filters button.selected { outline: 2px solid var(--accent); background: rgba(var(--accent-rgb),.22); }
.effect-group-list { max-height: 58vh; }
.effect-group-item { width: 100%; display: grid; grid-template-columns: 2.4rem 1fr; gap: .65rem; align-items: center; text-align: left; border-radius: 16px; padding: .75rem; border: 1px solid var(--line); background: rgba(var(--input-rgb),.25); }
.effect-group-item.selected { outline: 2px solid var(--accent); }
.effect-group-positive { border-left: 5px solid #55c878; }
.effect-group-negative { border-left: 5px solid #e26464; }
.effect-group-neutral { border-left: 5px solid #64aee2; }
.effect-group-zone { border-left: 5px solid #ad7ee8; }
.effect-group-icon { font-size: 1.5rem; text-align: center; }
.effect-group-copy { display: grid; gap: .16rem; min-width: 0; }
.effect-group-copy strong { font-size: 1rem; }
.effect-group-copy small,.effect-group-copy em { color: var(--muted); font-style: normal; white-space: normal; }
.effect-empty-state { display: grid; gap: .3rem; padding: 1rem; border: 1px dashed var(--line); border-radius: 16px; color: var(--muted); }
.effect-center-form-grid { grid-template-columns: repeat(2,minmax(210px,1fr)); }
.effect-targets-fieldset { border: 1px solid var(--line); border-radius: 16px; padding: .75rem; }
.effect-targets-fieldset legend { padding: 0 .35rem; font-weight: 800; }
.effect-target-actions { display: flex; gap: .4rem; margin-bottom: .55rem; }
.effect-target-actions button { padding: .35rem .6rem; font-size: .82rem; }
.effect-target-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(150px,1fr)); gap: .45rem; max-height: 210px; overflow: auto; }
.effect-target-option { display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; align-items: center; gap: .05rem .45rem; padding: .52rem .58rem; border-radius: 12px; border: 1px solid var(--line); cursor: pointer; background: rgba(var(--input-rgb),.2); }
.effect-target-option input { grid-row: 1 / 3; width: 18px; height: 18px; }
.effect-target-option small { color: var(--muted); }
.effect-target-option.selected { border-color: var(--accent); background: rgba(var(--accent-rgb),.18); }
.effect-center-status { min-height: 1.2rem; color: var(--accent); font-weight: 700; }
.condition-picker-main { display: flex !important; flex-wrap: wrap; align-items: center; gap: .35rem; text-align: left; }
.condition-strip .condition-picker-main::before { content: 'Effets : '; align-self: center; }
.effect-chip { display: inline-flex; align-items: center; gap: .28rem; padding: .3rem .52rem; border-radius: 999px; border: 1px solid transparent; font-size: .83rem; font-weight: 800; line-height: 1.1; max-width: 100%; }
.effect-chip small { font-size: .68rem; opacity: .78; font-weight: 600; }
.effect-chip-positive { background: rgba(49,151,82,.23) !important; border-color: rgba(91,214,130,.55) !important; color: #dfffe8 !important; }
.effect-chip-negative { background: rgba(169,43,43,.25) !important; border-color: rgba(238,103,103,.58) !important; color: #ffe5e5 !important; }
.effect-chip-neutral { background: rgba(47,111,166,.24) !important; border-color: rgba(99,174,231,.55) !important; color: #e4f4ff !important; }
.effect-chip-zone { background: rgba(102,55,166,.28) !important; border-color: rgba(183,132,241,.58) !important; color: #f3e6ff !important; }
.effect-chip-focus { display: inline-grid; place-items: center; min-width: 1.2rem; height: 1.2rem; border-radius: 50%; background: rgba(255,255,255,.16); font-size: .68rem; }
.effect-chip-empty { color: var(--muted); font-style: italic; }
.active-turn-heading { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem 1rem; align-items: baseline; }
.active-turn-effects { display: flex; flex-wrap: wrap; gap: .35rem; margin-top: .55rem; }
.effect-reminder-item { grid-template-columns: 1fr auto; }
.effect-reminder-copy { display: grid; gap: .2rem; }
.effect-reminder-actions { display: flex; flex-wrap: wrap; gap: .4rem; justify-content: flex-end; }
.effect-reminder-positive { border-left: 5px solid #55c878; }
.effect-reminder-negative { border-left: 5px solid #e26464; }
.effect-reminder-zone { border-left: 5px solid #ad7ee8; }
@media (max-width: 1000px) { .effect-center-layout { grid-template-columns: 1fr; } .effect-group-list { max-height: 280px; } }
@media (max-width: 720px) { .effect-center-form-grid { grid-template-columns: 1fr; } .effect-reminder-item { grid-template-columns: 1fr; } .effect-reminder-actions { justify-content: flex-start; } .effect-context-target { align-items: flex-start; flex-direction: column; } }

/* V0.224 — les couleurs appartiennent aux pastilles, pas à toute la ligne */
.condition-strip .condition-picker-main.has-conditions,
.condition-strip .condition-picker-main.has-positive-effects {
  background: rgba(var(--input-rgb), .48) !important;
  border-color: rgba(var(--accent-rgb), .28) !important;
  color: inherit !important;
}

/* V0.225 — catalogue visuel des conditions, sorts et zones */
.effect-name-label { position: relative; z-index: 8; }
.effect-name-picker { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; margin-top: .22rem; }
.effect-name-picker > input { min-width: 0; padding-right: 3rem; border-radius: 12px !important; }
.effect-name-dropdown-toggle { position: absolute; right: .3rem; top: 50%; transform: translateY(-50%); width: 2.25rem; min-width: 2.25rem; height: 2.25rem; padding: 0; border-radius: 10px; font-size: 1.15rem; line-height: 1; background: rgba(var(--accent-rgb), .16); border-color: rgba(var(--accent-rgb), .36); }
.effect-name-picker.open .effect-name-dropdown-toggle { transform: translateY(-50%) rotate(180deg); background: rgba(var(--accent-rgb), .28); }
.effect-name-catalog-hint { display: block; margin-top: .3rem; color: var(--muted); font-weight: 500; line-height: 1.35; }
.effect-name-dropdown { position: absolute; z-index: 50; left: 0; right: 0; top: calc(100% + .35rem); max-height: min(380px, 48vh); overflow: auto; padding: .45rem; border: 1px solid rgba(var(--accent-rgb), .42); border-radius: 16px; background: color-mix(in srgb, var(--panel) 97%, #000 3%); box-shadow: 0 18px 46px rgba(0,0,0,.48); backdrop-filter: blur(14px); }
.effect-name-dropdown[hidden] { display: none !important; }
.effect-name-option { width: 100%; display: grid; grid-template-columns: 2.25rem minmax(0,1fr) auto; gap: .65rem; align-items: center; padding: .68rem .72rem; border: 0; border-bottom: 1px solid rgba(var(--accent-rgb), .13); border-radius: 12px; background: transparent; text-align: left; }
.effect-name-option:last-child { border-bottom: 0; }
.effect-name-option:hover, .effect-name-option:focus-visible { background: rgba(var(--accent-rgb), .2); outline: 1px solid rgba(var(--accent-rgb), .42); }
.effect-name-option-icon { display: grid; place-items: center; width: 2.15rem; height: 2.15rem; border-radius: 11px; background: rgba(var(--input-rgb), .5); font-size: 1.3rem; }
.effect-name-option-copy { min-width: 0; display: grid; gap: .13rem; }
.effect-name-option-copy strong { font-size: .96rem; }
.effect-name-option-copy small { color: var(--muted); font-size: .76rem; line-height: 1.3; white-space: normal; overflow-wrap: anywhere; }
.effect-name-option-source { align-self: start; padding: .22rem .42rem; border-radius: 999px; font-size: .68rem; font-style: normal; font-weight: 800; white-space: nowrap; }
.effect-name-option-source.built-in { color: #f6e8bd; background: rgba(170, 126, 35, .22); border: 1px solid rgba(232, 190, 96, .35); }
.effect-name-option-source.custom { color: #dfffe8; background: rgba(49, 151, 82, .2); border: 1px solid rgba(91, 214, 130, .35); }
.effect-name-empty { display: grid; gap: .32rem; padding: .9rem; color: var(--muted); }
.effect-name-empty strong { color: var(--text); }
@media (max-width: 720px) {
  .effect-name-option { grid-template-columns: 2rem minmax(0,1fr); }
  .effect-name-option-source { grid-column: 2; justify-self: start; }
}

/* V0.226 — formulaire visuel : familles, couleurs, portraits et actions en tête */
.effect-hidden-select {
  position: absolute !important;
  inline-size: 1px !important;
  block-size: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0 0 0 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
.effect-head-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: .38rem;
  flex-wrap: wrap;
}
.effect-head-action {
  min-height: 2.45rem;
  padding: .48rem .72rem;
  border-radius: 11px;
  font-size: .82rem;
  white-space: nowrap;
}
.effect-center-head .managed-window-head-right {
  align-items: flex-start;
  flex-wrap: wrap;
  max-width: 65%;
}
.effect-identity-layout {
  display: grid;
  grid-template-columns: minmax(500px, 1.2fr) minmax(285px, .8fr);
  gap: .85rem;
  align-items: stretch;
  padding: .72rem;
  border: 1px solid rgba(var(--accent-rgb), .24);
  border-radius: 20px;
  background:
    radial-gradient(circle at 12% 4%, rgba(135, 91, 211, .16), transparent 34%),
    radial-gradient(circle at 95% 100%, rgba(48, 136, 180, .14), transparent 38%),
    rgba(var(--input-rgb), .14);
}
.effect-visual-controls,
.effect-identity-fields {
  min-width: 0;
}
.effect-visual-controls {
  display: grid;
  gap: .65rem;
}
.effect-icon-choice-group,
.effect-source-fieldset {
  min-width: 0;
  margin: 0;
  padding: .62rem;
  border: 1px solid rgba(var(--accent-rgb), .2);
  border-radius: 16px;
  background: rgba(var(--panel-rgb), .28);
}
.effect-icon-choice-group legend,
.effect-source-fieldset legend {
  padding: 0 .38rem;
  font-weight: 850;
  letter-spacing: .02em;
  color: var(--text);
}
.effect-icon-choice-row {
  display: grid;
  gap: .45rem;
}
.effect-family-choice-row {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.effect-icon-choice {
  position: relative;
  min-width: 0;
  display: grid;
  grid-template-columns: 2.45rem minmax(0, 1fr);
  align-items: center;
  gap: .52rem;
  min-height: 66px;
  padding: .55rem .62rem;
  border: 1px solid var(--line);
  border-radius: 14px;
  cursor: pointer;
  background: rgba(var(--input-rgb), .24);
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease, background .14s ease;
}
.effect-icon-choice:hover {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .56);
}
.effect-icon-choice input,
.effect-tone-choice input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.effect-choice-icon {
  display: grid;
  place-items: center;
  inline-size: 2.35rem;
  block-size: 2.35rem;
  border-radius: 12px;
  font-size: 1.35rem;
  background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.effect-choice-copy {
  min-width: 0;
  display: grid;
  gap: .08rem;
}
.effect-choice-copy strong {
  font-size: .91rem;
}
.effect-choice-copy small {
  color: var(--muted);
  font-size: .69rem;
  line-height: 1.2;
}
.effect-icon-choice.selected,
.effect-icon-choice:has(input:checked) {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .76);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .18), 0 8px 22px rgba(0,0,0,.16);
}
.effect-family-condition.selected,
.effect-family-condition:has(input:checked) {
  background: linear-gradient(145deg, rgba(159,44,44,.34), rgba(86,35,54,.2));
  border-color: rgba(238,103,103,.65);
}
.effect-family-effect.selected,
.effect-family-effect:has(input:checked) {
  background: linear-gradient(145deg, rgba(46,126,91,.31), rgba(35,83,106,.21));
  border-color: rgba(91,214,130,.58);
}
.effect-family-zone.selected,
.effect-family-zone:has(input:checked) {
  background: linear-gradient(145deg, rgba(104,57,170,.36), rgba(60,53,118,.22));
  border-color: rgba(183,132,241,.66);
}
.effect-tone-choice-row {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.effect-tone-choice {
  position: relative;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .34rem;
  padding: .44rem .35rem;
  border: 1px solid var(--line);
  border-radius: 999px;
  cursor: pointer;
  background: rgba(var(--input-rgb), .2);
  font-size: .74rem;
  font-weight: 800;
  transition: transform .14s ease, box-shadow .14s ease, border-color .14s ease;
}
.effect-tone-choice:hover { transform: translateY(-1px); }
.effect-tone-swatch {
  display: grid;
  place-items: center;
  inline-size: 1.28rem;
  block-size: 1.28rem;
  border-radius: 50%;
  color: white;
  font-size: .72rem;
  box-shadow: 0 0 0 2px rgba(255,255,255,.08);
}
.effect-tone-negative .effect-tone-swatch { background: #c94747; }
.effect-tone-positive .effect-tone-swatch { background: #3da866; }
.effect-tone-neutral .effect-tone-swatch { background: #3f8fc2; }
.effect-tone-zone .effect-tone-swatch { background: #8953c7; }
.effect-tone-choice.selected,
.effect-tone-choice:has(input:checked) {
  transform: translateY(-1px);
  box-shadow: 0 0 0 2px rgba(255,255,255,.08), 0 7px 16px rgba(0,0,0,.15);
}
.effect-tone-negative.selected,
.effect-tone-negative:has(input:checked) { border-color: #e26464; background: rgba(169,43,43,.26); }
.effect-tone-positive.selected,
.effect-tone-positive:has(input:checked) { border-color: #55c878; background: rgba(49,151,82,.24); }
.effect-tone-neutral.selected,
.effect-tone-neutral:has(input:checked) { border-color: #64aee2; background: rgba(47,111,166,.24); }
.effect-tone-zone.selected,
.effect-tone-zone:has(input:checked) { border-color: #ad7ee8; background: rgba(102,55,166,.28); }
.effect-identity-fields {
  position: relative;
  z-index: 12;
  display: grid;
  align-content: start;
  gap: .78rem;
  padding: .72rem;
  border: 1px solid rgba(var(--accent-rgb), .28);
  border-radius: 17px;
  background: linear-gradient(160deg, rgba(var(--input-rgb), .42), rgba(var(--panel-rgb), .26));
}
.effect-identity-fields .effect-name-label {
  min-width: 0;
  margin: 0;
}
.effect-source-fieldset {
  position: relative;
  z-index: 10;
  padding: .55rem;
}
.effect-source-picker {
  position: relative;
  margin-top: .12rem;
}
.effect-source-button {
  width: 100%;
  min-height: 58px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: .55rem;
  padding: .42rem .55rem;
  border-radius: 14px;
  text-align: left;
  background: rgba(var(--input-rgb), .34);
  border-color: rgba(var(--accent-rgb), .3);
}
.effect-source-picker.open .effect-source-button {
  border-color: rgba(var(--accent-rgb), .7);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .16);
}
.effect-source-button-content,
.effect-source-option {
  min-width: 0;
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .58rem;
}
.effect-source-chevron {
  font-size: 1.1rem;
  transition: transform .16s ease;
}
.effect-source-picker.open .effect-source-chevron { transform: rotate(180deg); }
.effect-source-copy {
  min-width: 0;
  display: grid;
  gap: .08rem;
}
.effect-source-copy strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.effect-source-copy small {
  color: var(--muted);
  font-size: .72rem;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.effect-source-dropdown {
  position: absolute;
  z-index: 70;
  left: 0;
  right: 0;
  top: calc(100% + .35rem);
  max-height: min(390px, 48vh);
  overflow: auto;
  padding: .42rem;
  border: 1px solid rgba(var(--accent-rgb), .46);
  border-radius: 16px;
  background: color-mix(in srgb, var(--panel) 97%, #000 3%);
  box-shadow: 0 18px 46px rgba(0,0,0,.48);
  backdrop-filter: blur(14px);
}
.effect-source-dropdown[hidden] { display: none !important; }
.effect-source-option {
  width: 100%;
  padding: .48rem .55rem;
  border: 0;
  border-bottom: 1px solid rgba(var(--accent-rgb), .12);
  border-radius: 12px;
  background: transparent;
  text-align: left;
}
.effect-source-option:last-child { border-bottom: 0; }
.effect-source-option:hover,
.effect-source-option:focus-visible { background: rgba(var(--accent-rgb), .16); outline: 1px solid rgba(var(--accent-rgb), .34); }
.effect-source-option.selected { background: rgba(var(--accent-rgb), .23); }
.effect-source-check { opacity: 0; color: #79dc98; font-size: 1.05rem; font-weight: 900; }
.effect-source-option.selected .effect-source-check { opacity: 1; }
.effect-portrait-avatar {
  display: grid;
  place-items: center;
  overflow: hidden;
  flex: 0 0 auto;
  border-radius: 50%;
  background: linear-gradient(145deg, rgba(var(--accent-rgb), .32), rgba(var(--input-rgb), .52));
  border: 2px solid rgba(var(--accent-rgb), .42);
  color: var(--text);
  font-weight: 900;
  letter-spacing: .02em;
}
.effect-portrait-avatar img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.effect-source-avatar {
  inline-size: 2.7rem;
  block-size: 2.7rem;
  font-size: .84rem;
}
.effect-environment-avatar {
  font-size: 1.3rem;
  border-style: dashed;
}
.effect-targets-fieldset {
  padding: .82rem;
  border-color: rgba(var(--accent-rgb), .27);
  background: linear-gradient(150deg, rgba(var(--input-rgb), .2), rgba(var(--panel-rgb), .12));
}
.effect-target-grid {
  grid-template-columns: repeat(auto-fit, minmax(175px, 1fr));
  gap: .55rem;
  max-height: 300px;
  padding: .08rem;
}
.effect-target-option {
  position: relative;
  display: grid;
  grid-template-columns: 3.25rem minmax(0, 1fr) 1.35rem;
  grid-template-rows: 1fr;
  align-items: center;
  gap: .58rem;
  min-height: 70px;
  padding: .52rem .58rem;
  border-radius: 16px;
  background: rgba(var(--input-rgb), .24);
  transition: transform .14s ease, box-shadow .14s ease, border-color .14s ease, background .14s ease;
}
.effect-target-option:hover {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .5);
}
.effect-target-checkbox {
  position: absolute !important;
  opacity: 0;
  pointer-events: none;
}
.effect-target-portrait { display: contents; }
.effect-target-avatar {
  inline-size: 3.15rem;
  block-size: 3.15rem;
  font-size: .92rem;
}
.effect-target-copy {
  min-width: 0;
  display: grid;
  gap: .1rem;
}
.effect-target-copy strong,
.effect-target-copy small {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.effect-target-copy small { color: var(--muted); font-size: .71rem; }
.effect-target-check {
  display: grid;
  place-items: center;
  inline-size: 1.28rem;
  block-size: 1.28rem;
  border-radius: 50%;
  background: rgba(var(--input-rgb), .52);
  border: 1px solid var(--line);
  color: transparent;
  font-size: .78rem;
  font-weight: 900;
}
.effect-target-option.selected {
  transform: translateY(-1px);
  border-color: rgba(91,214,130,.66);
  background: linear-gradient(145deg, rgba(49,151,82,.25), rgba(var(--accent-rgb), .14));
  box-shadow: 0 0 0 2px rgba(91,214,130,.12), 0 8px 20px rgba(0,0,0,.15);
}
.effect-target-option.selected .effect-target-avatar { border-color: rgba(91,214,130,.72); }
.effect-target-option.selected .effect-target-check { background: #3da866; border-color: #70d993; color: white; }
@media (max-width: 1180px) {
  .effect-identity-layout { grid-template-columns: 1fr; }
  .effect-center-head .managed-window-head-right { max-width: 58%; }
}
@media (max-width: 820px) {
  .effect-family-choice-row { grid-template-columns: 1fr; }
  .effect-tone-choice-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .effect-center-head .managed-window-head-right { max-width: none; width: 100%; justify-content: flex-end; }
  .effect-head-action { padding-inline: .55rem; }
}
@media (max-width: 560px) {
  .effect-identity-layout { padding: .48rem; }
  .effect-tone-choice-row { grid-template-columns: 1fr 1fr; }
  .effect-target-grid { grid-template-columns: 1fr; }
  .effect-head-actions { width: 100%; }
  .effect-head-action { flex: 1 1 auto; }
}

/* v0.264 — module PNJ optimisé pour les écrans PC paysage */
dialog.npc-dialog {
  width: calc(100vw - 32px);
  height: calc(100vh - 32px);
  min-width: min(1080px, calc(100vw - 16px));
  min-height: min(650px, calc(100vh - 16px));
}
.npc-dialog > .npc-card {
  width: 100%;
  height: 100%;
  padding: .6rem .75rem;
  gap: .45rem;
}
.npc-workspace { position: relative; }
.npc-menu-toggle {
  min-height: 36px;
  padding: .35rem .7rem;
  border-color: rgba(225,173,77,.62);
  background: rgba(91,61,25,.72);
  color: #f5dfb4;
}
#npcOpenSideMenu { display: none; }
.npc-menu-toggle-global {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  position: relative;
  z-index: 31;
}
.npc-side-menu {
  position: absolute;
  top: 72px;
  bottom: 8px;
  left: 0;
  z-index: 30;
  display: grid;
  align-content: start;
  gap: .38rem;
  width: min(320px, calc(100% - 24px));
  padding: .7rem;
  overflow-y: auto;
  border: 1px solid rgba(225,173,77,.62);
  border-radius: 12px;
  background: rgba(28,22,17,.98);
  box-shadow: 12px 10px 35px rgba(0,0,0,.58);
  transform: translateX(calc(-100% - 18px));
  transition: transform .2s ease;
}
.npc-side-menu.open { transform: translateX(0); }
.npc-side-menu-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .2rem; }
.npc-side-menu-head strong { color: #f2c766; font-size: 1.08rem; }
.npc-side-menu-head button { min-width: 34px; min-height: 34px; padding: .2rem; }
.npc-side-menu-label { margin: .45rem 0 0; color: #bca985; font-size: .7rem; font-weight: 900; letter-spacing: .09em; text-transform: uppercase; }
.npc-side-menu > button,
.npc-side-menu-tools > button { width: 100%; min-height: 42px; text-align: left; }
.npc-side-menu-tools { display: grid; gap: .38rem; padding-top: .35rem; border-top: 1px solid rgba(225,173,77,.2); }
.npc-side-checkbox { display: flex !important; align-items: center; gap: .5rem !important; min-height: 40px; padding: .35rem .5rem; }
.npc-side-checkbox input { width: auto; }
.npc-map-toolbar { padding-left: 0; align-items: center; }
.npc-demo-choice { width: min(520px,100%); margin-top: .75rem; padding: .55rem .7rem; border: 1px solid rgba(225,173,77,.25); border-radius: 9px; }
.npc-demo-choice summary { color: #c9b68f; cursor: pointer; }
.npc-demo-choice p { margin: .55rem 0; font-size: .85rem; }
.npc-social-links { display: grid; gap: .38rem; margin: .55rem 0; }
.npc-social-links > strong { color: #e7c985; }
.npc-social-links > div { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .32rem; }
.npc-social-links button { display: grid; gap: 1px; min-width: 0; min-height: 42px; padding: .35rem .45rem; text-align: left; }
.npc-social-links button span,
.npc-social-links button small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.npc-social-links button small { color: #b9ad99; font-size: .7rem; }
.npc-social-links #npcManageRelationships { grid-column: 1 / -1; min-height: 36px; text-align: center; }
.npc-relationship-manager { gap: .65rem; }
.npc-relationship-head { display: flex; align-items: start; justify-content: space-between; gap: .7rem; }
.npc-relationship-head h4 { margin: 0 0 .15rem; }
.npc-relationship-head small { color: #b9ad99; }
.npc-relationship-head button { min-width: 36px; min-height: 36px; padding: .2rem; }
.npc-relationship-list { display: grid; gap: .38rem; }
.npc-relationship-list article { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: .38rem; padding: .45rem; border: 1px solid rgba(225,173,77,.2); border-radius: 8px; }
.npc-relationship-list article > div { display: grid; min-width: 0; }
.npc-relationship-list article span { color: #e7c985; }
.npc-relationship-list article small { color: #b9ad99; }
.npc-relationship-list article button { min-height: 34px; padding: .28rem .45rem; font-size: .75rem; }
.npc-relationship-manager form { display: grid; gap: .48rem; padding-top: .55rem; border-top: 1px solid rgba(225,173,77,.22); }
.npc-relationship-dialog {
  width: calc(100vw - 28px);
  height: calc(100vh - 28px);
  max-width: 1500px;
  max-height: 980px;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(225,173,77,.58);
  border-radius: 16px;
  background: #17130f;
  color: #f4ead7;
  box-shadow: 0 24px 75px rgba(0,0,0,.75);
}
.npc-relationship-dialog::backdrop { background: rgba(0,0,0,.72); backdrop-filter: blur(3px); }
.npc-relationship-workspace { display: grid; grid-template-rows: auto minmax(0,1fr); height: 100%; }
.npc-relationship-workspace > header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem 1rem; border-bottom: 1px solid rgba(225,173,77,.24); background: #211a13; }
.npc-relationship-workspace > header h2 { margin: .1rem 0; }
.npc-relationship-workspace > header p:last-child { margin: 0; color: #bfae91; }
.npc-relationship-workspace > header button { min-width: 42px; min-height: 42px; padding: .25rem; }
.npc-relationship-workspace-grid { display: grid; grid-template-columns: minmax(0,1fr) clamp(320px,28vw,430px); min-height: 0; }
.npc-relationship-workspace-grid > main { padding: .9rem; overflow-y: auto; }
.npc-relationship-workspace-grid > aside { display: grid; grid-template-rows: auto minmax(0,1fr); gap: .55rem; min-height: 0; padding: .8rem; border-left: 1px solid rgba(225,173,77,.24); background: #13100d; }
.npc-relationship-workspace-grid > aside label { margin: 0; }
#npcRelationshipRoster { display: grid; align-content: start; gap: .38rem; overflow-y: auto; }
#npcRelationshipRoster > button { display: grid; grid-template-columns: 48px minmax(0,1fr) auto; align-items: center; gap: .55rem; min-height: 62px; padding: .45rem .55rem; text-align: left; }
#npcRelationshipRoster > button.active { border-color: #69c9ff; background: #173746; box-shadow: 0 0 0 2px rgba(105,201,255,.18); }
.npc-relationship-roster-avatar { display: grid; place-items: center; width: 46px; height: 46px; overflow: hidden; border-radius: 50%; background: #312518; }
.npc-relationship-roster-avatar img { width: 100%; height: 100%; object-fit: cover; }
#npcRelationshipRoster button > span:nth-child(2) { display: grid; min-width: 0; }
#npcRelationshipRoster button small { overflow: hidden; color: #b9ad99; text-overflow: ellipsis; white-space: nowrap; }
#npcRelationshipRoster button b { color: #e7c985; font-size: .72rem; white-space: nowrap; }
.npc-relationship-focus-head { display: flex; align-items: center; gap: .8rem; margin-bottom: .8rem; padding: .65rem; border: 1px solid rgba(225,173,77,.26); border-radius: 12px; background: rgba(255,255,255,.025); }
.npc-relationship-focus-head > span { display: grid; place-items: center; width: 72px; height: 72px; overflow: hidden; border-radius: 50%; background: #312518; font-size: 2rem; }
.npc-relationship-focus-head img { width: 100%; height: 100%; object-fit: cover; }
.npc-relationship-focus-head h3 { margin: .08rem 0; font-size: 1.5rem; }
.npc-relationship-network { display: grid; gap: .48rem; }
.npc-relationship-section-title { display: flex; align-items: center; justify-content: space-between; gap: .7rem; }
.npc-relationship-section-title h3 { margin: .15rem 0; }
.npc-relationship-section-title > span { color: #c8b998; }
.npc-relationship-network > article { display: grid; grid-template-columns: 150px minmax(0,1fr) auto; align-items: center; gap: .7rem; padding: .55rem; border: 1px solid rgba(225,173,77,.22); border-radius: 11px; background: rgba(255,255,255,.022); }
.npc-relationship-person-link { display: grid; grid-template-columns: 44px minmax(0,1fr); align-items: center; gap: .45rem; min-width: 0; padding: .35rem; text-align: left; }
.npc-relationship-person-link > span { display: grid; place-items: center; width: 42px; height: 42px; overflow: hidden; border-radius: 50%; background: #312518; }
.npc-relationship-person-link img { width: 100%; height: 100%; object-fit: cover; }
.npc-relationship-main { display: grid; gap: .3rem; min-width: 0; }
.npc-relationship-main > div:first-child { display: flex; justify-content: space-between; gap: .7rem; }
.npc-relationship-main b { color: #f1c86e; white-space: nowrap; }
.npc-relationship-main small { color: #b9ad99; }
.npc-relationship-main p { margin: 0; color: #ded1bc; }
.npc-relationship-strength { height: 10px; overflow: hidden; border-radius: 999px; background: #2b241d; }
.npc-relationship-strength i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#4b8c68,#e5b84e,#d8654e); }
.npc-relationship-card-actions { display: grid; gap: .35rem; }
.npc-relationship-card-actions button { min-height: 34px; padding: .28rem .45rem; font-size: .74rem; }
.npc-relationship-empty { padding: 1rem; border: 1px dashed rgba(225,173,77,.25); border-radius: 10px; color: #b9ad99; text-align: center; }
.npc-relationship-editor { display: grid; gap: .55rem; margin-top: .9rem; padding: .75rem; border: 1px solid rgba(105,201,255,.25); border-radius: 12px; background: rgba(28,60,73,.18); }
.npc-relationship-ai-preview { display: grid; gap: .6rem; margin-bottom: .9rem; padding: .75rem; border: 1px solid rgba(177,126,239,.55); border-radius: 12px; background: rgba(87,49,128,.2); }
.npc-relationship-ai-preview h3 { margin: .1rem 0; }
.npc-relationship-ai-preview > p { margin: 0; color: #ded0ed; }
.npc-relationship-ai-preview > div:nth-of-type(2) { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .4rem; max-height: 390px; overflow-y: auto; }
.npc-relationship-ai-preview label { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: start; gap: .48rem; padding: .5rem; border: 1px solid rgba(190,151,235,.25); border-radius: 9px; background: rgba(255,255,255,.025); }
.npc-relationship-ai-preview label > span { display: grid; gap: .1rem; }
.npc-relationship-ai-preview label b { color: #e0bdf8; }
.npc-relationship-ai-preview label small { color: #c4b6cc; }
.npc-relationship-ai-preview label em,
.npc-relationship-ai-preview label i { color: #ddd1e5; font-size: .76rem; font-style: normal; }
.npc-relationship-ai-preview label i { color: #ad9bb8; }
.npc-relationship-strength-input > span { display: flex; align-items: baseline; gap: .25rem; }
.npc-relationship-strength-input output { color: #f1c86e; font-size: 1.1rem; font-weight: 900; }
@media (max-width: 850px) {
  .npc-relationship-workspace-grid { grid-template-columns: 1fr; }
  .npc-relationship-workspace-grid > aside { max-height: 36vh; border-top: 1px solid rgba(225,173,77,.24); border-left: 0; }
  .npc-relationship-network > article { grid-template-columns: 120px minmax(0,1fr); }
  .npc-relationship-card-actions { grid-column: 1 / -1; grid-template-columns: 1fr 1fr; }
}
.npc-quick-options { margin: .55rem 0; border: 1px solid rgba(225,173,77,.28); border-radius: 10px; background: rgba(255,255,255,.025); }
.npc-quick-options > summary { padding: .62rem .7rem; color: #e7c985; cursor: pointer; font-weight: 800; }
.npc-quick-options-body { display: grid; gap: .45rem; padding: 0 .6rem .65rem; }
.npc-quick-options-body .npc-primary-actions,
.npc-quick-options-body .npc-move-actions { margin: 0; }
#npcDeleteDemo { display: none !important; }
.npc-location-dialog {
  box-sizing: border-box;
  width: min(1600px, calc(100vw - 32px));
  height: min(760px, calc(100vh - 24px));
  height: min(760px, calc(100dvh - 24px));
  max-height: calc(100vh - 24px);
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(225,173,77,.58);
  border-radius: 15px;
  background: #17130f;
  color: #f4ead7;
  box-shadow: 0 24px 70px rgba(0,0,0,.72);
}
.npc-location-dialog::backdrop { background: rgba(0,0,0,.68); backdrop-filter: blur(2px); }
.npc-location-card {
  box-sizing: border-box;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  gap: .7rem;
  height: 100%;
  max-height: 100%;
  padding: .85rem;
  overflow: hidden;
}
.npc-location-card > #npcLocationDialogBody {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: .7rem;
  min-height: 0;
  overflow: hidden;
}
.npc-location-card > header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-bottom: .6rem; border-bottom: 1px solid rgba(225,173,77,.22); }
.npc-location-card h3 { margin: .12rem 0 0; font-size: 1.35rem; }
.npc-location-card header button { min-width: 38px; min-height: 38px; padding: .25rem; }
.npc-location-status { display: grid; grid-template-columns: auto auto 1fr; align-items: center; gap: .45rem; padding: .55rem .65rem; border-radius: 9px; background: rgba(255,255,255,.035); }
.npc-location-status small { justify-self: end; color: #c8b99f; }
.npc-location-occupants {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-content: start;
  gap: .42rem;
  min-height: 0;
  overflow-y: auto;
}
.npc-location-occupants > button {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  grid-template-rows: 1fr auto;
  align-items: center;
  gap: .35rem .55rem;
  min-width: 0;
  min-height: 92px;
  padding: .55rem;
  text-align: left;
}
.npc-location-person-avatar { display: grid; place-items: center; width: 46px; height: 46px; overflow: hidden; border: 1px solid rgba(225,173,77,.42); border-radius: 50%; background: #312518; }
.npc-location-person-avatar img { width: 100%; height: 100%; object-fit: cover; }
.npc-location-occupants button > span:nth-child(2) { display: grid; min-width: 0; }
.npc-location-occupants button small { color: #c7b89d; }
.npc-location-occupants button em { overflow: hidden; color: #79d2ff; font-size: .72rem; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.npc-location-occupants button b {
  grid-column: 1 / -1;
  justify-self: end;
  color: #e7c985;
  font-size: .75rem;
  white-space: nowrap;
}
.npc-location-card > footer { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: center; gap: .65rem; padding-top: .65rem; border-top: 1px solid rgba(225,173,77,.22); }
.npc-location-card > footer button { min-height: 44px; }
.npc-location-card > footer small { color: #b9d8c1; line-height: 1.3; }

/* Barre Rencontre en paysage : conserver les raccourcis sur une seule ligne. */
.encounter-title-copy .encounter-toolbar-left {
  flex-wrap: nowrap;
  gap: .45rem;
  max-width: 100%;
  overflow-x: auto;
  padding-bottom: .15rem;
}
.encounter-title-copy .encounter-toolbar-left > button {
  flex: 0 0 auto;
  padding-right: .65rem;
  padding-left: .65rem;
  white-space: nowrap;
}
.encounter-title-copy .sort-control {
  flex: 1 1 210px;
  min-width: 180px;
  white-space: nowrap;
}
.encounter-title-copy .sort-control select {
  min-width: 0;
  width: 100%;
}

.npc-dialog .settings-head {
  min-height: 58px;
  align-items: center !important;
  padding: 0 .15rem;
  gap: .7rem;
}
.npc-dialog .settings-head > :first-child {
  display: grid;
  grid-template-columns: auto auto;
  grid-template-rows: auto auto;
  align-items: baseline;
  column-gap: .7rem;
  row-gap: 0;
}
.npc-dialog .settings-head .eyebrow {
  grid-column: 1;
  grid-row: 1;
  margin: 0;
  font-size: .72rem;
  line-height: 1;
}
.npc-dialog .settings-head h2 {
  grid-column: 1;
  grid-row: 2;
  margin: 0;
  font-size: 1.55rem;
  line-height: 1.05;
}
.npc-dialog .settings-head .settings-hint {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
  align-self: end;
  white-space: nowrap;
  font-size: .9rem;
  line-height: 1.1;
}
.npc-dialog .managed-window-system-button,
.npc-dialog .managed-window-minimize,
.npc-dialog .managed-window-maximize,
.npc-dialog .managed-window-close {
  width: 2.75rem;
  min-width: 2.75rem;
  height: 2.45rem;
  min-height: 2.45rem;
}
.npc-workspace { gap: .4rem; overflow: hidden; }
.npc-timebar {
  flex: 0 0 auto;
  grid-template-columns: minmax(185px, .7fr) minmax(610px, 2.5fr) minmax(205px, .8fr);
  gap: .55rem;
  padding: .4rem .6rem;
  border-radius: 10px;
}
.npc-timebar > div:first-child { min-width: 0; }
.npc-timebar strong { font-size: 1.05rem; }
.npc-timebar small { font-size: .78rem; }
.npc-time-actions { flex-wrap: nowrap; gap: .3rem; }
.npc-time-actions button,
.npc-alert-button { min-height: 38px; padding: .38rem .62rem; white-space: nowrap; }
.npc-manual-time input { min-height: 38px; height: 38px; }
.npc-next-preview { padding: .4rem .6rem; }
.npc-tabs { flex: 0 0 auto; gap: .3rem; padding-bottom: .3rem; }
.npc-tabs button { min-height: 36px; padding: .35rem .75rem; }
.npc-tab { min-height: 0; overflow: hidden; }
.npc-tab.active { display: block; height: 100%; }
.npc-map-layout {
  grid-template-columns: minmax(0, 1fr) clamp(360px, 28vw, 460px);
  gap: .55rem;
  height: 100%;
  min-height: 0;
}
.npc-map-layout > div:first-child {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  min-width: 0;
  min-height: 0;
}
.npc-map-toolbar { gap: .35rem; margin-bottom: .35rem; flex-wrap: nowrap; }
.npc-map-toolbar button { min-height: 36px; padding: .35rem .65rem; white-space: nowrap; }
.npc-map {
  width: 100%;
  height: 100%;
  min-height: 320px;
  border-radius: 12px;
}
.npc-location-legend { min-height: 58px; padding-top: .35rem; }
.npc-location-legend button { min-width: 155px; padding: .35rem .5rem; }
.npc-quick { min-width: 0; padding: .7rem; border-radius: 12px; }
.npc-quick-head { padding-bottom: .55rem; }
.npc-avatar { width: 62px; height: 62px; }
.npc-quick h3 { font-size: 1.25rem; }
.npc-primary-actions { grid-template-columns: 1fr 1fr; gap: .4rem; margin: .6rem 0; }
.npc-primary-actions button { min-height: 48px; font-size: .92rem; padding: .45rem; }
.npc-brain-summary { margin: .5rem 0; }
.npc-quick-psychology {
  display: grid;
  gap: .3rem;
  margin: .65rem 0;
  padding: .7rem;
  border: 1px solid rgba(143, 191, 122, .38);
  border-radius: 11px;
  background: rgba(74, 112, 62, .14);
}
.npc-quick-psychology strong { color: #b9dda9; }
.npc-quick-psychology p { color: var(--text); line-height: 1.42; }
.npc-trait-editor {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem .8rem;
}
.npc-trait-editor label { min-width: 0; }
@media (max-width: 780px) {
  .npc-trait-editor { grid-template-columns: 1fr; }
}
#npcTabEvents.active,
#npcTabPlanning.active { overflow: auto; padding-right: .25rem; }
.npc-planning-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; }
.npc-form-card { gap: .45rem; padding: .6rem; }
.npc-form-card h3 { margin: 0 0 .15rem; font-size: 1.05rem; }
.npc-form-card label { gap: .18rem; }
.npc-form-card input,
.npc-form-card select { min-height: 36px; }
.npc-planning-list { margin-top: .55rem; padding: .6rem; }

@media (max-width: 1150px) {
  dialog.npc-dialog { min-width: calc(100vw - 16px); }
  .npc-timebar { grid-template-columns: 1fr 2fr; }
  .npc-alert-button { grid-column: 1 / -1; }
  .npc-map-layout { grid-template-columns: minmax(0, 1fr) 350px; }
  .npc-planning-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) {
  dialog.npc-dialog { min-height: calc(100vh - 16px); }
  .npc-dialog .settings-head > :first-child { display: block; }
  .npc-dialog .settings-head .settings-hint { white-space: normal; }
  .npc-timebar { grid-template-columns: 1fr; }
  .npc-alert-button { grid-column: 1; }
  .npc-time-actions { flex-wrap: wrap; }
  .npc-map-layout { grid-template-columns: 1fr; overflow: auto; }
  .npc-map { min-height: 440px; }
  .npc-planning-grid { grid-template-columns: 1fr; }
}

/* V0.227 — catalogue opaque et comportements d'effet entièrement graphiques */
.effect-identity-fields .effect-name-label {
  position: relative;
  z-index: 90;
}
.effect-name-picker.open {
  z-index: 120;
  isolation: isolate;
}
.effect-name-dropdown {
  z-index: 140 !important;
  background: var(--panel) !important;
  background-color: var(--panel) !important;
  opacity: 1 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  box-shadow: 0 22px 56px rgba(0,0,0,.72), 0 0 0 1px rgba(var(--accent-rgb),.18) !important;
  isolation: isolate;
}
.effect-name-dropdown::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  background: var(--panel);
}
.effect-name-option {
  background: var(--panel);
}
.effect-name-option:hover,
.effect-name-option:focus-visible {
  background: var(--panel-2);
}
.effect-source-fieldset {
  z-index: 12;
}

.effect-behavior-fieldset {
  min-width: 0;
  display: grid;
  gap: .62rem;
  margin: 0;
  padding: .76rem;
  border: 1px solid rgba(var(--accent-rgb), .25);
  border-radius: 17px;
  background: linear-gradient(155deg, rgba(var(--input-rgb), .28), rgba(var(--panel-rgb), .18));
}
.effect-behavior-fieldset[hidden],
.effect-round-counter[hidden] {
  display: none !important;
}
.effect-behavior-fieldset > legend {
  padding: 0 .42rem;
  color: var(--muted);
  font-size: .88rem;
  font-weight: 850;
  letter-spacing: .01em;
}
.effect-visual-option-grid {
  display: grid;
  gap: .52rem;
}
.effect-duration-option-grid {
  grid-template-columns: repeat(5, minmax(128px, 1fr));
}
.effect-anchor-option-grid,
.effect-reminder-option-grid {
  grid-template-columns: repeat(4, minmax(145px, 1fr));
}
.effect-visual-option {
  min-width: 0;
  min-height: 72px;
  display: grid;
  grid-template-columns: 2.4rem minmax(0, 1fr);
  align-items: center;
  gap: .52rem;
  padding: .55rem .62rem;
  border-radius: 15px;
  text-align: left;
  background: rgba(var(--input-rgb), .42);
  border: 1px solid var(--line);
  color: var(--text);
  transition: transform .14s ease, border-color .14s ease, background .14s ease, box-shadow .14s ease;
}
.effect-visual-option:hover {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .56);
}
.effect-visual-option.selected,
.effect-visual-option[aria-pressed="true"] {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .82);
  background: linear-gradient(145deg, rgba(var(--accent-rgb), .28), rgba(var(--input-rgb), .48));
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .15), 0 9px 22px rgba(0,0,0,.2);
}
.effect-option-icon {
  display: grid;
  place-items: center;
  inline-size: 2.35rem;
  block-size: 2.35rem;
  border-radius: 12px;
  font-size: 1.25rem;
  background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.effect-option-copy {
  min-width: 0;
  display: grid;
  gap: .08rem;
}
.effect-option-copy strong {
  color: var(--text);
  font-size: .86rem;
  line-height: 1.18;
}
.effect-option-copy small {
  color: var(--muted);
  font-size: .68rem;
  line-height: 1.22;
  white-space: normal;
}
.effect-duration-manual.selected,
.effect-duration-manual[aria-pressed="true"] {
  border-color: rgba(213,174,101,.72);
  background: linear-gradient(145deg, rgba(132,92,37,.28), rgba(var(--input-rgb),.52));
}
.effect-duration-rounds.selected,
.effect-duration-rounds[aria-pressed="true"] {
  border-color: rgba(100,174,226,.72);
  background: linear-gradient(145deg, rgba(47,111,166,.31), rgba(var(--input-rgb),.48));
}
.effect-duration-next-start.selected,
.effect-duration-next-start[aria-pressed="true"] {
  border-color: rgba(85,200,120,.72);
  background: linear-gradient(145deg, rgba(49,151,82,.29), rgba(var(--input-rgb),.48));
}
.effect-duration-next-end.selected,
.effect-duration-next-end[aria-pressed="true"] {
  border-color: rgba(231,158,78,.75);
  background: linear-gradient(145deg, rgba(165,91,37,.3), rgba(var(--input-rgb),.48));
}
.effect-duration-combat.selected,
.effect-duration-combat[aria-pressed="true"] {
  border-color: rgba(183,132,241,.75);
  background: linear-gradient(145deg, rgba(102,55,166,.32), rgba(var(--input-rgb),.48));
}
.effect-round-counter {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: .55rem .7rem;
  padding-top: .15rem;
}
.effect-round-counter > label {
  width: min(230px, 100%);
}
.effect-round-counter input {
  min-height: 2.75rem;
  font-size: 1.05rem;
  font-weight: 850;
}
.effect-round-presets {
  display: flex;
  flex-wrap: wrap;
  gap: .38rem;
}
.effect-round-presets button {
  min-width: 2.75rem;
  min-height: 2.75rem;
  padding: .4rem .65rem;
  border-radius: 12px;
  font-weight: 900;
  background: rgba(47,111,166,.22);
  border-color: rgba(100,174,226,.42);
}
.effect-toggle-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(240px, 1fr));
  gap: .62rem;
}
.effect-toggle-card {
  position: relative;
  min-width: 0;
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr) 1.45rem;
  align-items: center;
  gap: .58rem;
  min-height: 72px;
  padding: .62rem .72rem;
  border: 1px solid var(--line);
  border-radius: 16px;
  cursor: pointer;
  background: rgba(var(--input-rgb), .34);
  color: var(--text);
  transition: transform .14s ease, border-color .14s ease, background .14s ease, box-shadow .14s ease;
}
.effect-toggle-card:hover {
  transform: translateY(-1px);
  border-color: rgba(var(--accent-rgb), .52);
}
.effect-toggle-card > input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.effect-toggle-icon {
  display: grid;
  place-items: center;
  inline-size: 2.45rem;
  block-size: 2.45rem;
  border-radius: 12px;
  font-size: 1.28rem;
  background: rgba(255,255,255,.07);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.08);
}
.effect-toggle-copy {
  min-width: 0;
  display: grid;
  gap: .08rem;
}
.effect-toggle-copy strong {
  color: var(--text);
  font-size: .88rem;
}
.effect-toggle-copy small {
  color: var(--muted);
  font-size: .7rem;
  line-height: 1.25;
}
.effect-toggle-indicator {
  display: grid;
  place-items: center;
  inline-size: 1.35rem;
  block-size: 1.35rem;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: rgba(var(--input-rgb), .58);
  color: transparent;
  font-size: .78rem;
  font-weight: 950;
}
.effect-toggle-card.selected,
.effect-toggle-card:has(input:checked) {
  transform: translateY(-1px);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.12), 0 8px 20px rgba(0,0,0,.16);
}
.effect-toggle-card.selected .effect-toggle-indicator,
.effect-toggle-card:has(input:checked) .effect-toggle-indicator {
  color: white;
  background: #3da866;
  border-color: #70d993;
}
.effect-toggle-concentration.selected,
.effect-toggle-concentration:has(input:checked) {
  border-color: rgba(183,132,241,.7);
  background: linear-gradient(145deg, rgba(102,55,166,.28), rgba(var(--input-rgb),.42));
}
.effect-toggle-expiration.selected,
.effect-toggle-expiration:has(input:checked) {
  border-color: rgba(85,200,120,.66);
  background: linear-gradient(145deg, rgba(49,151,82,.24), rgba(var(--input-rgb),.42));
}
@media (max-width: 1260px) {
  .effect-duration-option-grid { grid-template-columns: repeat(3, minmax(145px, 1fr)); }
  .effect-anchor-option-grid,
  .effect-reminder-option-grid { grid-template-columns: repeat(2, minmax(155px, 1fr)); }
}
@media (max-width: 760px) {
  .effect-duration-option-grid,
  .effect-anchor-option-grid,
  .effect-reminder-option-grid,
  .effect-toggle-grid { grid-template-columns: 1fr; }
  .effect-visual-option,
  .effect-toggle-card { min-height: 64px; }
}

/* V0.228 — contexte compact intégré à l’en-tête */
.effect-center-head {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) minmax(280px, .9fr) auto;
  align-items: center;
  gap: .75rem 1rem;
  padding-bottom: .45rem;
}
.effect-center-title {
  min-width: 0;
}
.effect-center-title > .settings-hint {
  margin-bottom: 0;
}
.effect-center-head > .effect-context-target {
  min-width: 0;
  width: 100%;
  margin: 0;
  justify-content: center;
  gap: .5rem;
  padding: .46rem .82rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 999px;
  background: linear-gradient(145deg, rgba(var(--input-rgb), .24), rgba(var(--panel-rgb), .16));
  text-align: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}
.effect-center-head > .effect-context-target strong {
  white-space: nowrap;
}
.effect-center-head > .effect-context-target span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.effect-center-head .managed-window-head-right {
  margin-left: 0;
}
@media (max-width: 1180px) {
  .effect-center-head {
    grid-template-columns: minmax(240px, 1fr) minmax(260px, .85fr) auto;
  }
}
@media (max-width: 960px) {
  .effect-center-head {
    grid-template-columns: 1fr;
    align-items: start;
  }
  .effect-center-head > .effect-context-target {
    justify-content: flex-start;
    text-align: left;
  }
  .effect-center-head > .effect-context-target span {
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
  }
  .effect-center-head .managed-window-head-right {
    width: 100%;
    justify-content: flex-end;
  }
}


/* V0.229 — raccourcis compacts dans la colonne des effets actifs */
.effect-dialog-existing > .effect-quick-section {
  margin: 0;
  padding: .72rem;
  gap: .48rem;
  align-self: start;
}
.effect-dialog-existing > .effect-quick-section .effect-quick-templates {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .45rem;
}
.effect-dialog-existing > .effect-quick-section .effect-quick-card {
  min-width: 0;
  min-height: 62px;
  grid-template-columns: 2rem minmax(0, 1fr);
  gap: .05rem .48rem;
  padding: .5rem .58rem;
  border-radius: 13px;
}
.effect-dialog-existing > .effect-quick-section .effect-quick-card > span {
  font-size: 1.25rem;
}
.effect-dialog-existing > .effect-quick-section .effect-quick-card strong {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .88rem;
}
.effect-dialog-existing > .effect-quick-section .effect-quick-card small {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: .7rem;
}
.effect-dialog-form {
  align-self: start;
}
@media (min-width: 1500px) {
  .effect-center-layout {
    grid-template-columns: minmax(520px, .95fr) minmax(760px, 1.45fr);
  }
}
@media (max-width: 1180px) and (min-width: 1001px) {
  .effect-dialog-existing > .effect-quick-section .effect-quick-templates {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 1000px) {
  .effect-dialog-existing > .effect-quick-section .effect-quick-templates {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }
}
@media (max-width: 560px) {
  .effect-dialog-existing > .effect-quick-section .effect-quick-templates {
    grid-template-columns: 1fr;
  }
}


/* V0.230 — contexte réellement centré et contrôles système ancrés à droite */
.effect-center-head {
  position: sticky;
  display: flex !important;
  align-items: flex-start !important;
  justify-content: space-between;
  gap: 1rem;
  min-height: 7.2rem;
  padding-bottom: .45rem;
}
.effect-center-title {
  flex: 0 1 34%;
  max-width: 34%;
  min-width: 280px;
  padding-right: .5rem;
}
.effect-center-head > .effect-context-target {
  position: absolute;
  z-index: 8;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: min(32vw, 550px);
  max-width: calc(100% - 980px);
  min-width: 310px;
  margin: 0;
  justify-content: center;
  gap: .5rem;
  padding: .46rem .82rem;
  border: 1px solid rgba(var(--accent-rgb), .22);
  border-radius: 999px;
  background: linear-gradient(145deg, rgba(var(--input-rgb), .24), rgba(var(--panel-rgb), .16));
  text-align: center;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03);
}
.effect-center-head .managed-window-head-right {
  position: relative;
  z-index: 9;
  display: flex !important;
  flex: 0 0 auto;
  flex-wrap: nowrap !important;
  align-items: flex-start !important;
  justify-content: flex-end;
  gap: .45rem;
  max-width: none !important;
  margin-left: auto !important;
}
.effect-center-head .effect-head-actions {
  flex-wrap: nowrap !important;
}
.effect-center-head .managed-window-controls {
  flex-wrap: nowrap !important;
  margin-left: 0;
}
@media (max-width: 1500px) {
  .effect-center-title {
    max-width: 31%;
    min-width: 260px;
  }
  .effect-center-head > .effect-context-target {
    width: min(29vw, 470px);
    min-width: 270px;
    max-width: calc(100% - 900px);
  }
  .effect-head-action {
    padding-inline: .55rem;
  }
}
@media (max-width: 1260px) {
  .effect-center-head {
    min-height: 10rem;
  }
  .effect-center-title {
    max-width: calc(100% - 520px);
  }
  .effect-center-head > .effect-context-target {
    top: 4.8rem;
    width: min(720px, calc(100% - 2rem));
    max-width: none;
    min-width: 0;
  }
}
@media (max-width: 900px) {
  .effect-center-head {
    display: grid !important;
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .effect-center-title {
    max-width: none;
    min-width: 0;
    padding-right: 0;
  }
  .effect-center-head > .effect-context-target {
    position: static;
    transform: none;
    width: 100%;
    max-width: none;
    justify-content: flex-start;
    text-align: left;
  }
  .effect-center-head .managed-window-head-right {
    width: 100%;
    flex-wrap: wrap !important;
  }
  .effect-center-head .effect-head-actions {
    flex-wrap: wrap !important;
  }
}


/* V0.231 — fiche avancée graphique avec pictogrammes SVG colorés */
.advanced-sheet-dialog {
  width: min(1540px, calc(100vw - 1.25rem));
  max-width: none;
  height: min(940px, calc(100vh - 1.25rem));
  max-height: calc(100vh - 1.25rem);
}
.advanced-sheet-card {
  width: 100%;
  height: 100%;
  max-height: none;
  overflow: hidden;
  display: grid;
  grid-template-rows: auto minmax(0,1fr) auto;
  gap: .65rem;
}
.advanced-sheet-card > .settings-head {
  position: sticky;
  top: 0;
  z-index: 12;
  padding-bottom: .45rem;
  border-bottom: 1px solid rgba(var(--accent-rgb),.2);
  background: var(--panel);
}
.advanced-sheet-body {
  min-height: 0;
  overflow: auto;
  padding: .15rem .2rem .65rem;
}
.advanced-visual-hero {
  display: grid;
  grid-template-columns: 150px minmax(0,1fr);
  gap: 1rem;
  align-items: stretch;
  padding: .85rem;
  border: 1px solid rgba(var(--accent-rgb),.34);
  border-radius: 20px;
  background: radial-gradient(circle at 0 0, rgba(var(--accent-rgb),.2), transparent 38%), linear-gradient(145deg, rgba(var(--panel-2-rgb),.78), rgba(var(--input-rgb),.3));
  box-shadow: 0 14px 34px rgba(0,0,0,.2);
}
.advanced-visual-hero .advanced-sheet-portrait {
  width: 150px;
  min-height: 175px;
  aspect-ratio: 4 / 5;
  border-radius: 16px;
  box-shadow: 0 9px 26px rgba(0,0,0,.36);
}
.advanced-hero-copy { display:grid; align-content:center; gap:.48rem; min-width:0; }
.advanced-hero-kicker { margin:0; color:var(--accent); font-size:.78rem; font-weight:900; letter-spacing:.09em; text-transform:uppercase; }
.advanced-hero-copy h3 { margin:0; font-size:clamp(1.65rem,3vw,2.65rem); line-height:1; }
.advanced-hero-hp { display:flex; flex-wrap:wrap; align-items:baseline; gap:.45rem .7rem; margin-top:.2rem; }
.advanced-hero-hp > span { color:var(--muted); font-weight:900; }
.advanced-hero-hp > strong { font-size:1.5rem; color:#7ee29b; }
.advanced-hero-hp > em { color:#f0c879; font-style:normal; font-weight:800; }
.advanced-hero-hpbar { max-width:680px; height:10px; }
.advanced-picto-ribbon {
  display:grid;
  grid-template-columns:repeat(10,minmax(82px,1fr));
  gap:.45rem;
  margin:.65rem 0;
  padding:.5rem;
  border:1px solid rgba(var(--accent-rgb),.25);
  border-radius:18px;
  background:rgba(var(--input-rgb),.2);
}
.advanced-ribbon-item { display:grid; justify-items:center; gap:.22rem; padding:.42rem .25rem; border-radius:12px; background:rgba(var(--panel-rgb),.32); color:var(--muted); font-size:.68rem; text-align:center; }
.advanced-picto { --picto:#d8b36a; display:inline-grid; place-items:center; width:2.25rem; height:2.25rem; flex:0 0 auto; border-radius:11px; color:var(--picto); background:color-mix(in srgb, var(--picto) 15%, transparent); box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--picto) 34%, transparent); }
.advanced-picto svg { width:1.48rem; height:1.48rem; }
.advanced-picto-vitality{--picto:#ef615b}.advanced-picto-defense{--picto:#48a9f8}.advanced-picto-movement{--picto:#d7b47a}.advanced-picto-combat{--picto:#ee744c}.advanced-picto-abilities{--picto:#f2c24c}.advanced-picto-saves{--picto:#a87be8}.advanced-picto-skills{--picto:#42b5ee}.advanced-picto-senses{--picto:#68c777}.advanced-picto-magic{--picto:#c184ef}.advanced-picto-conditions{--picto:#d65a68}.advanced-picto-notes{--picto:#aeb8bb}.advanced-picto-progression{--picto:#e6a84c}.advanced-picto-identity{--picto:#d8b36a}.advanced-picto-monster{--picto:#cc6e62}
.advanced-visual-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:.72rem; align-items:start; }
.advanced-visual-card { min-width:0; overflow:hidden; border:1px solid color-mix(in srgb,var(--card-tone,#d8b36a) 48%,var(--line)); border-radius:18px; background:linear-gradient(155deg,color-mix(in srgb,var(--card-tone,#d8b36a) 12%,var(--panel)),rgba(var(--input-rgb),.24)); box-shadow:0 8px 22px rgba(0,0,0,.14); }
.advanced-visual-card > header { display:flex; align-items:center; gap:.6rem; padding:.7rem .78rem; border-bottom:1px solid color-mix(in srgb,var(--card-tone,#d8b36a) 30%,transparent); }
.advanced-visual-card > header h3 { margin:0; color:var(--card-tone,#d8b36a); font-size:.97rem; text-transform:uppercase; letter-spacing:.045em; }
.advanced-visual-card > header p { margin:.08rem 0 0; color:var(--muted); font-size:.68rem; }
.advanced-card-content { display:grid; gap:.58rem; padding:.72rem; }
.advanced-card-vitality{--card-tone:#ef615b}.advanced-card-defense{--card-tone:#48a9f8}.advanced-card-movement{--card-tone:#d7b47a}.advanced-card-combat{--card-tone:#ee744c}.advanced-card-abilities{--card-tone:#f2c24c}.advanced-card-saves{--card-tone:#a87be8}.advanced-card-skills{--card-tone:#42b5ee}.advanced-card-senses{--card-tone:#68c777}.advanced-card-magic{--card-tone:#c184ef}.advanced-card-progression{--card-tone:#e6a84c}.advanced-card-identity{--card-tone:#d8b36a}.advanced-card-monster{--card-tone:#cc6e62}
.advanced-span-2{grid-column:span 2}.advanced-span-3{grid-column:span 3}.advanced-span-4{grid-column:span 4}.advanced-span-6{grid-column:1/-1}
.advanced-field-grid,.advanced-metric-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.5rem; }
.advanced-metric-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
.advanced-field { display:grid; gap:.24rem; min-width:0; color:var(--muted); font-size:.7rem; font-weight:900; text-transform:uppercase; letter-spacing:.045em; }
.advanced-field.full { grid-column:1/-1; }
.advanced-field input,.advanced-field textarea,.advanced-field select { width:100%; color:var(--text); text-transform:none; letter-spacing:normal; font-weight:800; border-color:color-mix(in srgb,var(--card-tone,var(--accent)) 28%,var(--line)); background:rgba(var(--input-rgb),.35); }
.advanced-field textarea { resize:vertical; }
.advanced-visual-grid.is-readonly .advanced-field input,.advanced-visual-grid.is-readonly .advanced-field textarea,.advanced-visual-grid.is-readonly .advanced-field select { background:rgba(var(--input-rgb),.16); border-color:rgba(var(--accent-rgb),.14); opacity:.95; }
.advanced-visual-grid.is-editing .advanced-field input,.advanced-visual-grid.is-editing .advanced-field textarea,.advanced-visual-grid.is-editing .advanced-field select { box-shadow:0 0 0 2px rgba(var(--accent-rgb),.08); }
.advanced-ability-grid { display:grid; grid-template-columns:repeat(6,minmax(92px,1fr)); gap:.48rem; }
.advanced-ability { display:grid; grid-template-columns:1fr auto; align-items:center; gap:.12rem .35rem; padding:.58rem; border:1px solid rgba(242,194,76,.28); border-radius:13px; background:rgba(242,194,76,.07); }
.advanced-ability > span { color:#f2c24c; font-weight:1000; }
.advanced-ability input { grid-column:1/-1; text-align:center; font-size:1.25rem; font-weight:1000; }
.advanced-ability strong { color:var(--text); }
.advanced-ability small { grid-column:1/-1; color:var(--muted); text-align:center; }
.advanced-skill-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.38rem .6rem; }
.advanced-skill { display:grid; grid-template-columns:minmax(0,1fr) 4.2rem; align-items:center; gap:.38rem; color:var(--muted); font-size:.75rem; font-weight:800; }
.advanced-skill input { min-height:2.15rem; text-align:center; }
.advanced-effects-list { display:flex; flex-wrap:wrap; gap:.38rem; }
.advanced-effect-pill { padding:.4rem .62rem; border-radius:999px; font-size:.75rem; font-weight:900; border:1px solid rgba(var(--accent-rgb),.3); }
.advanced-effect-positive{background:rgba(49,151,82,.2);border-color:rgba(91,214,130,.52)}.advanced-effect-negative{background:rgba(169,43,43,.23);border-color:rgba(238,103,103,.55)}.advanced-effect-zone{background:rgba(102,55,166,.25);border-color:rgba(183,132,241,.55)}.advanced-effect-neutral{background:rgba(47,111,166,.22);border-color:rgba(99,174,231,.52)}
.advanced-empty { color:var(--muted); font-style:italic; }
.advanced-monster-card { opacity:.96; }
.advanced-sheet-card > .settings-actions { position:sticky; bottom:0; z-index:10; padding-top:.55rem; border-top:1px solid rgba(var(--accent-rgb),.2); background:var(--panel); }
@media (max-width:1180px){.advanced-visual-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.advanced-span-2,.advanced-span-3,.advanced-span-4{grid-column:span 1}.advanced-span-6{grid-column:1/-1}.advanced-picto-ribbon{grid-template-columns:repeat(5,1fr)}.advanced-ability-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){.advanced-sheet-dialog{width:calc(100vw - .5rem);height:calc(100vh - .5rem)}.advanced-visual-hero{grid-template-columns:92px 1fr}.advanced-visual-hero .advanced-sheet-portrait{width:92px;min-height:118px}.advanced-visual-grid{grid-template-columns:1fr}.advanced-span-2,.advanced-span-3,.advanced-span-4,.advanced-span-6{grid-column:1}.advanced-picto-ribbon{grid-template-columns:repeat(3,1fr)}.advanced-ribbon-item b{display:none}.advanced-ability-grid{grid-template-columns:repeat(2,1fr)}.advanced-skill-grid,.advanced-field-grid,.advanced-metric-grid{grid-template-columns:1fr}}

.advanced-sheet-dialog.advanced-sheet-compact .advanced-picto-ribbon { display:none; }
.advanced-sheet-dialog.advanced-sheet-compact .advanced-visual-grid { gap:.45rem; }
.advanced-sheet-dialog.advanced-sheet-compact .advanced-visual-card > header { padding:.48rem .62rem; }
.advanced-sheet-dialog.advanced-sheet-compact .advanced-visual-card > header p { display:none; }
.advanced-sheet-dialog.advanced-sheet-compact .advanced-card-content { padding:.52rem; gap:.4rem; }


/* V0.232 — fiche avancée tableau de bord proche de la maquette approuvée */
.advanced-dashboard-shell {
  display: grid;
  gap: .9rem;
  padding: .2rem;
}
.advanced-tab-strip { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: .55rem; }
.advanced-tab-item { display: grid; justify-items: center; align-content: center; gap: .34rem; min-height: 4.25rem; padding: .45rem .35rem; border-radius: 14px; border: 1px solid rgba(216,179,106,.2); background: linear-gradient(180deg, rgba(9,14,20,.98), rgba(13,19,28,.92)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.025), 0 10px 24px rgba(0,0,0,.18); text-align: center; }
.advanced-tab-item b { font-size: .74rem; color: #e5d0a0; font-weight: 800; }
.advanced-layout-grid { display: grid; grid-template-columns: 1.08fr 1fr 1.18fr; gap: .95rem; align-items: start; }
.advanced-layout-col { display: grid; gap: .95rem; align-content: start; }
.advanced-display-card { --card-tone: #d8b36a; overflow: hidden; border-radius: 18px; border: 1px solid color-mix(in srgb, var(--card-tone) 52%, rgba(255,255,255,.08)); background: radial-gradient(circle at top left, color-mix(in srgb, var(--card-tone) 12%, transparent), transparent 35%), linear-gradient(180deg, rgba(7,12,18,.98), rgba(11,16,24,.95)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 12px 28px rgba(0,0,0,.18); }
.advanced-display-card > header { display: flex; align-items: center; gap: .65rem; padding: .78rem .9rem; border-bottom: 1px solid color-mix(in srgb, var(--card-tone) 35%, rgba(255,255,255,.08)); }
.advanced-display-card > header h3 { margin: 0; color: var(--card-tone); font-size: 1.02rem; font-weight: 900; letter-spacing: .04em; text-transform: uppercase; }
.advanced-display-content { display: grid; gap: .8rem; padding: .9rem; }
.advanced-display-vitality{--card-tone:#ef615b}.advanced-display-defense{--card-tone:#48a9f8}.advanced-display-movement{--card-tone:#d7b47a}.advanced-display-combat{--card-tone:#ee744c}.advanced-display-abilities{--card-tone:#f2c24c}.advanced-display-saves{--card-tone:#a87be8}.advanced-display-skills{--card-tone:#24a7ff}.advanced-display-senses{--card-tone:#68c777}.advanced-display-magic{--card-tone:#bf8cff}.advanced-display-notes{--card-tone:#aeb8bb}.advanced-display-progression{--card-tone:#e6a84c}.advanced-display-identity{--card-tone:#d8b36a}.advanced-display-monster{--card-tone:#cc6e62}
.advanced-display-card .advanced-picto,.advanced-tab-item .advanced-picto { position: relative; width: 2.55rem; height: 2.55rem; border-radius: 12px; background: linear-gradient(180deg, rgba(20,28,37,.98), rgba(8,13,18,.96)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), inset 0 0 0 2px color-mix(in srgb, var(--picto) 20%, transparent), 0 4px 12px rgba(0,0,0,.25); }
.advanced-display-card .advanced-picto::after,.advanced-tab-item .advanced-picto::after { content: ''; position: absolute; inset: 3px; border-radius: 10px; border: 1px solid color-mix(in srgb, var(--picto) 30%, transparent); pointer-events: none; }
.advanced-identity-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: .95rem; }
.advanced-identity-portrait { aspect-ratio: 4 / 5; min-height: 290px; border-radius: 16px; overflow: hidden; border: 2px solid rgba(216,179,106,.45); background: linear-gradient(180deg, rgba(14,21,30,.98), rgba(9,13,18,.98)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), 0 10px 22px rgba(0,0,0,.22); display: grid; place-items: center; }
.advanced-identity-portrait img { width: 100%; height: 100%; object-fit: cover; }
.advanced-identity-portrait span { font-size: 3rem; color: #ead8b2; font-weight: 900; }
.advanced-identity-info { display: grid; align-content: start; gap: .8rem; }
.advanced-character-name { font-size: clamp(2rem, 4vw, 3rem); line-height: .95; font-weight: 900; letter-spacing: .01em; color: #f7f0df; }
.advanced-character-sub { color: #d4ba84; font-weight: 700; }
.advanced-info-stack { display: grid; gap: .48rem; }
.advanced-info-row { display: grid; grid-template-columns: minmax(110px, .8fr) 1fr; gap: .7rem; align-items: baseline; padding: .12rem 0; border-bottom: 1px solid rgba(255,255,255,.045); }
.advanced-info-row span { color: var(--muted); font-size: .76rem; text-transform: uppercase; letter-spacing: .045em; font-weight: 800; }
.advanced-info-row strong { color: var(--text); font-size: .95rem; font-weight: 800; }
.advanced-progress-box { display: grid; gap: .5rem; padding: .72rem .8rem; border-radius: 14px; border: 1px solid rgba(216,179,106,.22); background: linear-gradient(180deg, rgba(20,27,36,.7), rgba(10,15,22,.72)); }
.advanced-progress-top { display: flex; justify-content: space-between; gap: .6rem; align-items: baseline; }
.advanced-progress-top span { color: var(--muted); text-transform: uppercase; font-size: .72rem; font-weight: 800; }
.advanced-progress-top strong { color: #f0d296; font-size: 1rem; }
.advanced-progress-hint-box { padding: .55rem .65rem; border-radius: 12px; background: rgba(240, 189, 72, .08); border: 1px solid rgba(240,189,72,.18); color: #ead8b2; font-size: .85rem; }
.advanced-big-metric-grid { display: grid; gap: .72rem; }
.advanced-big-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.advanced-big-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.advanced-big-metric { display: grid; gap: .18rem; padding: .8rem .75rem; border-radius: 15px; border: 1px solid rgba(255,255,255,.07); background: linear-gradient(180deg, rgba(18,24,32,.76), rgba(10,15,22,.82)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.02); }
.advanced-big-metric > span { color: var(--muted); font-size: .72rem; text-transform: uppercase; font-weight: 800; letter-spacing: .045em; }
.advanced-big-metric > strong { font-size: clamp(1.35rem, 2vw, 2rem); line-height: 1.05; font-weight: 900; color: #f7f0df; }
.advanced-big-metric > small { color: #cdb88a; font-size: .78rem; }
.advanced-readonly-hpbar { height: 12px; border-radius: 999px; overflow: hidden; }
.advanced-note-inline { color: #dbc79f; font-size: .84rem; }
.advanced-display-abilities-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; }
.advanced-display-ability,.advanced-display-save { display: grid; justify-items: center; align-content: center; gap: .18rem; min-height: 110px; padding: .7rem .55rem; border-radius: 16px; border: 1px solid rgba(255,255,255,.08); background: linear-gradient(180deg, rgba(17,24,33,.82), rgba(9,13,19,.9)); }
.advanced-display-ability > span,.advanced-display-save > span { color: #f2c24c; font-weight: 900; letter-spacing: .08em; }
.advanced-display-ability > strong,.advanced-display-save > strong { font-size: 2rem; line-height: 1; color: #fbf6ea; }
.advanced-display-ability > em { font-style: normal; color: #f6d677; font-weight: 900; }
.advanced-display-ability > small,.advanced-display-save > small { color: var(--muted); font-size: .73rem; }
.advanced-display-saves-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; }
.advanced-list-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; }
.advanced-list-column { display: grid; gap: .3rem; }
.advanced-list-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .6rem; align-items: center; padding: .34rem 0; border-bottom: 1px solid rgba(255,255,255,.045); }
.advanced-list-row span { color: #e6dcc7; }
.advanced-list-row strong { color: #fff8e8; font-weight: 900; }
.advanced-bullets { margin: 0; padding-left: 1.1rem; display: grid; gap: .28rem; }
.advanced-bullets li { color: #f2e8d1; }
.advanced-note-block { padding: .82rem .9rem; border-radius: 14px; border: 1px solid rgba(255,255,255,.06); background: linear-gradient(180deg, rgba(17,23,31,.74), rgba(10,14,20,.8)); color: #eadfc5; line-height: 1.5; }
.advanced-effects-stack { display: grid; gap: .62rem; }
.advanced-effect-row { display: grid; gap: .22rem; padding: .72rem .8rem; border-radius: 14px; border: 1px solid rgba(255,255,255,.08); background: linear-gradient(180deg, rgba(17,23,32,.82), rgba(10,14,22,.88)); }
.advanced-effect-row-top { display: flex; justify-content: space-between; gap: .75rem; align-items: baseline; }
.advanced-effect-row-top strong { color: #fff7e3; font-size: .98rem; }
.advanced-effect-row-top span { color: #dbc18b; font-weight: 800; }
.advanced-effect-row small { color: var(--muted); }
.advanced-effect-row.advanced-effect-positive { border-color: rgba(91,214,130,.4); background: linear-gradient(180deg, rgba(18,38,26,.85), rgba(9,20,14,.92)); }
.advanced-effect-row.advanced-effect-negative { border-color: rgba(238,103,103,.4); background: linear-gradient(180deg, rgba(47,16,17,.86), rgba(24,8,10,.92)); }
.advanced-effect-row.advanced-effect-zone { border-color: rgba(183,132,241,.4); background: linear-gradient(180deg, rgba(35,21,54,.86), rgba(16,11,25,.92)); }
.advanced-effect-row.advanced-effect-neutral { border-color: rgba(99,174,231,.38); background: linear-gradient(180deg, rgba(18,28,44,.86), rgba(10,15,24,.92)); }
@media (max-width: 1440px) { .advanced-layout-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .advanced-layout-col:last-child { grid-column: 1 / -1; grid-template-columns: repeat(3, minmax(0,1fr)); } .advanced-layout-col:last-child > * { min-height: 100%; } }
@media (max-width: 1100px) { .advanced-tab-strip { grid-template-columns: repeat(5, minmax(0, 1fr)); } .advanced-layout-grid, .advanced-layout-col:last-child { grid-template-columns: 1fr; } .advanced-identity-layout { grid-template-columns: 1fr; } .advanced-identity-portrait { min-height: 220px; max-width: 260px; } .advanced-display-abilities-grid, .advanced-display-saves-grid { grid-template-columns: repeat(3, minmax(0,1fr)); } }
@media (max-width: 760px) { .advanced-tab-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); } .advanced-big-3, .advanced-big-4, .advanced-display-abilities-grid, .advanced-display-saves-grid, .advanced-list-columns { grid-template-columns: 1fr; } .advanced-character-name { font-size: 2rem; } .advanced-info-row { grid-template-columns: 1fr; } }



/* v0.233 — fiche avancée très proche de la maquette approuvée */
.advanced-sheet-v233 .advanced-tab-strip,
.advanced-picto-ribbon { display: none !important; }
.advanced-sheet-v233 { padding: .15rem; }
.advanced-layout-grid-v233 { grid-template-columns: 1.06fr 1fr 1fr; gap: 1rem; align-items: start; }
.advanced-layout-grid-v233 .advanced-layout-col { gap: 1rem; }
.advanced-layout-grid-v233 .advanced-display-card {
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--card-tone) 48%, rgba(255,255,255,.08));
  background:
    radial-gradient(circle at 18% 20%, color-mix(in srgb, var(--card-tone) 9%, transparent), transparent 32%),
    linear-gradient(180deg, rgba(7,10,16,.985), rgba(10,14,21,.965));
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.03),
    inset 0 18px 35px rgba(255,255,255,.018),
    0 18px 32px rgba(0,0,0,.22);
}
.advanced-layout-grid-v233 .advanced-display-card > header {
  padding: .86rem 1rem .65rem;
  border-bottom: 1px solid color-mix(in srgb, var(--card-tone) 26%, rgba(255,255,255,.08));
  justify-content: flex-start;
}
.advanced-layout-grid-v233 .advanced-display-card > header h3 {
  font-size: 1.12rem;
  font-weight: 900;
  letter-spacing: .045em;
  color: var(--card-tone);
  text-transform: uppercase;
}
.advanced-display-with-art {
  display: grid;
  grid-template-columns: minmax(150px, 31%) minmax(0, 1fr);
  gap: .95rem;
  align-items: stretch;
}
.advanced-display-no-art { display: block; }
.advanced-display-text { min-width: 0; }
.advanced-art {
  display: grid;
  place-items: center;
  min-height: 180px;
  border-radius: 16px;
  background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.025), transparent 58%);
}
.advanced-art img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 80%;
  object-fit: contain;
  filter: saturate(1.18) contrast(1.1) drop-shadow(0 10px 18px rgba(0,0,0,.35));
}
.advanced-big-metric-grid { gap: .65rem; }
.advanced-big-metric {
  padding: .78rem .72rem;
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(14,20,29,.82), rgba(8,12,18,.9));
}
.advanced-big-metric > strong { font-size: clamp(1.25rem, 1.8vw, 1.8rem); }
.advanced-display-abilities-grid,
.advanced-display-saves-grid { gap: .55rem; }
.advanced-display-ability,
.advanced-display-save { min-height: 96px; padding: .6rem .45rem; }
.advanced-list-row { padding: .28rem 0; }
.advanced-note-block { font-size: .9rem; }
.advanced-effect-row { padding: .68rem .78rem; }
.advanced-readonly-hpbar { margin-top: .2rem; }
.advanced-card-identity .advanced-display-content.advanced-identity-supercard {
  display: grid;
  grid-template-columns: 210px minmax(0, 1fr) 180px;
  gap: 1rem;
  align-items: stretch;
}
.advanced-card-identity .advanced-identity-portrait {
  aspect-ratio: 4/5;
  min-height: 290px;
  border-radius: 18px;
  overflow: hidden;
  border: 2px solid rgba(216,179,106,.4);
  background: linear-gradient(180deg, rgba(14,21,30,.98), rgba(9,13,18,.98));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.05), 0 12px 24px rgba(0,0,0,.2);
  display: grid;
  place-items: center;
}
.advanced-card-identity .advanced-identity-portrait img { width:100%; height:100%; object-fit:cover; }
.advanced-card-identity .advanced-identity-portrait span { font-size: 3rem; color:#ead8b2; font-weight:900; }
.advanced-card-identity .advanced-character-name { font-size: clamp(2.1rem, 3.8vw, 3rem); line-height: .95; font-weight: 900; color:#f8f1e0; }
.advanced-card-identity .advanced-identity-info { display:grid; align-content:start; gap:.78rem; }
.advanced-card-identity .advanced-art { min-height: 290px; }
.advanced-display-vitality{--card-tone:#ef615b}.advanced-display-defense{--card-tone:#48a9f8}.advanced-display-movement{--card-tone:#d7b47a}.advanced-display-combat{--card-tone:#ee744c}.advanced-display-abilities{--card-tone:#f2c24c}.advanced-display-saves{--card-tone:#a87be8}.advanced-display-skills{--card-tone:#24a7ff}.advanced-display-senses{--card-tone:#68c777}.advanced-display-magic{--card-tone:#bf8cff}.advanced-display-conditions{--card-tone:#cc7d62}.advanced-display-notes{--card-tone:#d8b36a}.advanced-display-progression{--card-tone:#e6a84c}.advanced-display-identity{--card-tone:#d8b36a}.advanced-display-monster{--card-tone:#cc6e62}
@media (max-width: 1500px) {
  .advanced-layout-grid-v233 { grid-template-columns: 1fr 1fr; }
  .advanced-layout-grid-v233 .advanced-layout-col:last-child { grid-column: 1 / -1; }
}
@media (max-width: 1100px) {
  .advanced-layout-grid-v233 { grid-template-columns: 1fr; }
  .advanced-card-identity .advanced-display-content.advanced-identity-supercard { grid-template-columns: 1fr; }
  .advanced-display-with-art { grid-template-columns: 1fr; }
  .advanced-art { min-height: 150px; }
  .advanced-card-identity .advanced-art,
  .advanced-card-identity .advanced-identity-portrait { min-height: 220px; max-width: 280px; }
}
@media (max-width: 760px) {
  .advanced-big-3, .advanced-big-4, .advanced-display-abilities-grid, .advanced-display-saves-grid, .advanced-list-columns { grid-template-columns: 1fr; }
  .advanced-display-with-art { gap: .5rem; }
}


/* v0.234 — tuiles illustrées premium et fiche avancée lisible */
.head-stats { gap: .55rem; }
.player-stat-chips { gap: .55rem; }
.roster-image-tile,
.player-image-tile {
  --tile-tone: 216,179,106;
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr);
  align-items: center;
  gap: .6rem;
  min-height: 62px;
  padding: .42rem .7rem .42rem .42rem;
  border-radius: 16px;
  border: 1px solid rgba(var(--tile-tone), .44);
  background: radial-gradient(circle at 15% 20%, rgba(var(--tile-tone), .22), transparent 48%), linear-gradient(180deg, rgba(18,25,34,.96), rgba(8,12,18,.92));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 8px 18px rgba(0,0,0,.18);
  min-width: min(100%, 210px);
  flex: 1 1 210px;
}
.roster-image-tile-art,
.player-image-tile-art { display: grid; place-items: center; width: 52px; height: 52px; }
.roster-image-tile-art img,
.player-image-tile-art img { width: auto; height: 80%; max-width: 100%; object-fit: contain; filter: saturate(1.28) contrast(1.12) brightness(1.04) drop-shadow(0 8px 14px rgba(0,0,0,.35)); }
.roster-image-tile-copy,
.player-image-tile-copy { min-width: 0; display: grid; gap: .16rem; }
.roster-image-tile-copy strong,
.player-image-tile-copy strong { color: #f2d7a0; font-size: .86rem; font-weight: 950; letter-spacing: .04em; text-transform: uppercase; line-height: 1.05; }
.roster-image-tile-copy em,
.player-image-tile-copy em { font-style: normal; color: #fff8e6; font-size: 1rem; font-weight: 900; line-height: 1.18; overflow-wrap: anywhere; }
.stat-tone-vitality { --tile-tone: 239,97,91; }
.stat-tone-defense { --tile-tone: 72,169,248; }
.stat-tone-movement { --tile-tone: 215,180,122; }
.stat-tone-combat { --tile-tone: 238,116,76; }
.stat-tone-abilities { --tile-tone: 242,194,76; }
.stat-tone-saves { --tile-tone: 168,123,232; }
.stat-tone-skills { --tile-tone: 36,167,255; }
.stat-tone-senses { --tile-tone: 104,199,119; }
.stat-tone-magic { --tile-tone: 191,140,255; }
.stat-tone-conditions { --tile-tone: 204,125,98; }
.stat-tone-progression { --tile-tone: 230,168,76; }
.stat-tone-identity { --tile-tone: 216,179,106; }
.stat-tone-monster { --tile-tone: 175,184,190; }
.compact-ui .roster-image-tile,
.compact-ui .player-image-tile { grid-template-columns: 44px minmax(0, 1fr); min-height: 52px; padding: .3rem .55rem .3rem .3rem; gap: .45rem; }
.compact-ui .roster-image-tile-art,
.compact-ui .player-image-tile-art { width: 44px; height: 44px; }
.compact-ui .roster-image-tile-copy strong,
.compact-ui .player-image-tile-copy strong { font-size: .76rem; }
.compact-ui .roster-image-tile-copy em,
.compact-ui .player-image-tile-copy em { font-size: .88rem; }

.advanced-sheet-v234 { padding: .15rem; }
.advanced-layout-grid-v234 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.advanced-layout-grid-v234 > .advanced-display-card { min-height: 100%; }
.advanced-layout-grid-v234 .advanced-span-2 { grid-column: span 2; }
.advanced-sheet-v234 .advanced-display-card { border-radius: 18px; overflow: hidden; border: 1px solid color-mix(in srgb, var(--card-tone) 48%, rgba(255,255,255,.08)); background: radial-gradient(circle at 18% 20%, color-mix(in srgb, var(--card-tone) 12%, transparent), transparent 34%), linear-gradient(180deg, rgba(7,10,16,.985), rgba(10,14,21,.965)); box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), inset 0 20px 38px rgba(255,255,255,.018), 0 18px 32px rgba(0,0,0,.22); }
.advanced-sheet-v234 .advanced-display-card > header { padding: .96rem 1rem .74rem; border-bottom: 1px solid color-mix(in srgb, var(--card-tone) 26%, rgba(255,255,255,.08)); }
.advanced-sheet-v234 .advanced-display-card > header h3 { font-size: 1.24rem; font-weight: 950; letter-spacing: .045em; color: var(--card-tone); text-transform: uppercase; }
.advanced-sheet-v234 .advanced-display-content { padding: 1rem; gap: 1rem; }
.advanced-sheet-v234 .advanced-display-with-art { display: grid; grid-template-columns: minmax(170px, 33%) minmax(0, 1fr); gap: 1rem; align-items: stretch; }
.advanced-sheet-v234 .advanced-art { display: grid; place-items: center; min-height: 210px; border-radius: 16px; background: radial-gradient(circle at 50% 50%, rgba(255,255,255,.03), transparent 58%); }
.advanced-sheet-v234 .advanced-art img { width: auto; max-width: 100%; height: auto; max-height: 82%; object-fit: contain; filter: saturate(1.26) contrast(1.12) brightness(1.04) drop-shadow(0 14px 24px rgba(0,0,0,.36)); }
.advanced-sheet-v234 .advanced-card-identity .advanced-display-content.advanced-identity-supercard { display: grid; grid-template-columns: 220px minmax(0, 1fr) 190px; gap: 1rem; align-items: stretch; }
.advanced-sheet-v234 .advanced-card-identity .advanced-identity-portrait,
.advanced-sheet-v234 .advanced-card-identity .advanced-art { min-height: 300px; }
.advanced-sheet-v234 .advanced-card-identity .advanced-character-name { font-size: clamp(2.15rem, 3.9vw, 3rem); }
.advanced-sheet-v234 .advanced-character-sub,
.advanced-sheet-v234 .advanced-note-inline,
.advanced-sheet-v234 .advanced-effect-row small,
.advanced-sheet-v234 .advanced-display-ability > small,
.advanced-sheet-v234 .advanced-display-save > small,
.advanced-sheet-v234 .advanced-big-metric > span,
.advanced-sheet-v234 .advanced-info-row span { font-size: .94rem; }
.advanced-sheet-v234 .advanced-info-row strong,
.advanced-sheet-v234 .advanced-list-row span,
.advanced-sheet-v234 .advanced-list-row strong,
.advanced-sheet-v234 .advanced-bullets li,
.advanced-sheet-v234 .advanced-note-block,
.advanced-sheet-v234 .advanced-progress-hint-box { font-size: 1rem; }
.advanced-sheet-v234 .advanced-big-metric > strong { font-size: clamp(1.45rem, 2vw, 2.05rem); }
.advanced-sheet-v234 .advanced-display-ability,
.advanced-sheet-v234 .advanced-display-save { min-height: 104px; padding: .65rem .5rem; }
.advanced-sheet-v234 .advanced-display-ability > span,
.advanced-sheet-v234 .advanced-display-save > span { font-size: .95rem; }
.advanced-sheet-v234 .advanced-display-ability > strong,
.advanced-sheet-v234 .advanced-display-save > strong { font-size: 2.2rem; }
.advanced-sheet-v234 .advanced-effect-row-top strong { font-size: 1.05rem; }
.advanced-sheet-v234 .advanced-list-row { padding: .34rem 0; }
.advanced-sheet-v234 .advanced-display-vitality{--card-tone:#ef615b}.advanced-sheet-v234 .advanced-display-defense{--card-tone:#48a9f8}.advanced-sheet-v234 .advanced-display-movement{--card-tone:#d7b47a}.advanced-sheet-v234 .advanced-display-combat{--card-tone:#ee744c}.advanced-sheet-v234 .advanced-display-abilities{--card-tone:#f2c24c}.advanced-sheet-v234 .advanced-display-saves{--card-tone:#a87be8}.advanced-sheet-v234 .advanced-display-skills{--card-tone:#24a7ff}.advanced-sheet-v234 .advanced-display-senses{--card-tone:#68c777}.advanced-sheet-v234 .advanced-display-magic{--card-tone:#bf8cff}.advanced-sheet-v234 .advanced-display-conditions{--card-tone:#cc7d62}.advanced-sheet-v234 .advanced-display-notes{--card-tone:#d8b36a}.advanced-sheet-v234 .advanced-display-progression{--card-tone:#e6a84c}.advanced-sheet-v234 .advanced-display-identity{--card-tone:#d8b36a}.advanced-sheet-v234 .advanced-display-monster{--card-tone:#b6c0c8}
@media (max-width: 1500px) { .advanced-layout-grid-v234 { grid-template-columns: 1fr 1fr; } .advanced-layout-grid-v234 .advanced-span-2 { grid-column: 1 / -1; } }
@media (max-width: 1100px) { .advanced-layout-grid-v234 { grid-template-columns: 1fr; } .advanced-layout-grid-v234 .advanced-span-2 { grid-column: auto; } .advanced-sheet-v234 .advanced-card-identity .advanced-display-content.advanced-identity-supercard, .advanced-sheet-v234 .advanced-display-with-art { grid-template-columns: 1fr; } .advanced-sheet-v234 .advanced-art { min-height: 150px; } .advanced-sheet-v234 .advanced-card-identity .advanced-art, .advanced-sheet-v234 .advanced-card-identity .advanced-identity-portrait { min-height: 220px; max-width: 280px; } }
@media (max-width: 820px) { .roster-image-tile, .player-image-tile { min-width: 100%; } }
@media (max-width: 760px) { .advanced-sheet-v234 .advanced-big-3, .advanced-sheet-v234 .advanced-big-4, .advanced-sheet-v234 .advanced-display-abilities-grid, .advanced-sheet-v234 .advanced-display-saves-grid, .advanced-sheet-v234 .advanced-list-columns { grid-template-columns: 1fr; } }


/* v0.250 — tuiles de stats compactes sur une seule rangée */
.head-stats,
.player-stat-chips {
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
  scrollbar-color: rgba(var(--accent-rgb), .45) transparent;
  padding-bottom: .05rem;
}
.head-stats::-webkit-scrollbar,
.player-stat-chips::-webkit-scrollbar {
  height: 7px;
}
.head-stats::-webkit-scrollbar-thumb,
.player-stat-chips::-webkit-scrollbar-thumb {
  background: rgba(var(--accent-rgb), .38);
  border-radius: 999px;
}
.roster-image-tile,
.player-image-tile {
  grid-template-columns: 40px auto;
  align-items: center;
  gap: .42rem;
  min-height: 44px;
  padding: .26rem .55rem .26rem .28rem;
  border-radius: 14px;
  min-width: unset;
  width: fit-content;
  max-width: max-content;
  flex: 0 0 auto;
}
.roster-image-tile-art,
.player-image-tile-art {
  width: 40px;
  height: 40px;
}
.roster-image-tile-art img,
.player-image-tile-art img {
  height: 74%;
}
.roster-image-tile-copy,
.player-image-tile-copy {
  display: flex;
  align-items: baseline;
  gap: .45rem;
  min-width: 0;
  white-space: nowrap;
}
.roster-image-tile-copy strong,
.player-image-tile-copy strong {
  font-size: .8rem;
  line-height: 1;
  flex: 0 0 auto;
}
.roster-image-tile-copy em,
.player-image-tile-copy em {
  font-size: .95rem;
  line-height: 1.02;
  flex: 0 0 auto;
  overflow-wrap: normal;
  white-space: nowrap;
}
.compact-ui .roster-image-tile,
.compact-ui .player-image-tile {
  grid-template-columns: 36px auto;
  min-height: 38px;
  padding: .22rem .45rem .22rem .24rem;
  gap: .38rem;
}
.compact-ui .roster-image-tile-art,
.compact-ui .player-image-tile-art {
  width: 36px;
  height: 36px;
}
.compact-ui .roster-image-tile-copy strong,
.compact-ui .player-image-tile-copy strong {
  font-size: .74rem;
}
.compact-ui .roster-image-tile-copy em,
.compact-ui .player-image-tile-copy em {
  font-size: .86rem;
}
@media (max-width: 1100px) {
  .roster-image-tile-copy,
  .player-image-tile-copy {
    gap: .32rem;
  }
  .roster-image-tile-copy strong,
  .player-image-tile-copy strong {
    font-size: .76rem;
  }
  .roster-image-tile-copy em,
  .player-image-tile-copy em {
    font-size: .9rem;
  }
}


/* v0.250 — l'image identifie la catégorie, seule la valeur reste affichée */
.roster-image-tile-copy,
.player-image-tile-copy {
  display: block;
  white-space: nowrap;
}
.roster-image-tile-copy strong,
.player-image-tile-copy strong {
  display: none !important;
}
.roster-image-tile-copy em,
.player-image-tile-copy em {
  font-size: .98rem;
  line-height: 1;
}

/* v0.250 — fiche avancée uniformisée sur le modèle Caractéristiques */
.advanced-sheet-v234 {
  --advanced-label-size: .95rem;
  --advanced-value-size: 2.2rem;
  --advanced-detail-size: 1rem;
  --advanced-cell-min-height: 104px;
}
.advanced-sheet-v234 .advanced-big-metric,
.advanced-sheet-v234 .advanced-display-ability,
.advanced-sheet-v234 .advanced-display-save,
.advanced-sheet-v234 .advanced-attack-card,
.advanced-sheet-v234 .advanced-list-row,
.advanced-sheet-v234 .advanced-effect-row,
.advanced-sheet-v234 .advanced-note-block,
.advanced-sheet-v234 .advanced-progress-hint-box,
.advanced-sheet-v234 .advanced-info-row {
  font-family: inherit;
}
.advanced-sheet-v234 .advanced-big-metric,
.advanced-sheet-v234 .advanced-display-ability,
.advanced-sheet-v234 .advanced-display-save,
.advanced-sheet-v234 .advanced-attack-card {
  min-height: var(--advanced-cell-min-height);
  padding: .65rem .5rem;
  border-radius: 16px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(17,24,33,.82), rgba(9,13,19,.9));
  display: grid;
  justify-items: center;
  align-content: center;
  gap: .18rem;
  text-align: center;
}
.advanced-sheet-v234 .advanced-big-metric > span,
.advanced-sheet-v234 .advanced-display-ability > span,
.advanced-sheet-v234 .advanced-display-save > span,
.advanced-sheet-v234 .advanced-attack-card > span {
  color: #f2c24c;
  font-size: var(--advanced-label-size);
  font-weight: 900;
  letter-spacing: .08em;
  line-height: 1.05;
  text-transform: uppercase;
}
.advanced-sheet-v234 .advanced-big-metric > strong,
.advanced-sheet-v234 .advanced-display-ability > strong,
.advanced-sheet-v234 .advanced-display-save > strong,
.advanced-sheet-v234 .advanced-attack-card > strong {
  color: #fbf6ea;
  font-size: var(--advanced-value-size);
  font-weight: 900;
  line-height: 1;
}
.advanced-sheet-v234 .advanced-big-metric > small,
.advanced-sheet-v234 .advanced-display-ability > small,
.advanced-sheet-v234 .advanced-display-save > small,
.advanced-sheet-v234 .advanced-display-ability > em,
.advanced-sheet-v234 .advanced-attack-card > em {
  color: #d7c6a1;
  font-size: var(--advanced-detail-size);
  font-style: normal;
  font-weight: 700;
  line-height: 1.2;
}
.advanced-sheet-v234 .advanced-display-ability > em {
  color: #f6d677;
  font-weight: 900;
}
.advanced-sheet-v234 .advanced-info-row,
.advanced-sheet-v234 .advanced-list-row,
.advanced-sheet-v234 .advanced-effect-row,
.advanced-sheet-v234 .advanced-note-block,
.advanced-sheet-v234 .advanced-progress-hint-box,
.advanced-sheet-v234 .advanced-note-inline,
.advanced-sheet-v234 .advanced-character-sub {
  font-size: var(--advanced-detail-size);
}
.advanced-sheet-v234 .advanced-info-row span,
.advanced-sheet-v234 .advanced-list-row span,
.advanced-sheet-v234 .advanced-effect-row small {
  font-size: var(--advanced-detail-size);
}
.advanced-sheet-v234 .advanced-info-row strong,
.advanced-sheet-v234 .advanced-list-row strong,
.advanced-sheet-v234 .advanced-effect-row-top strong,
.advanced-sheet-v234 .advanced-effect-row-top span {
  font-size: var(--advanced-detail-size);
}
.advanced-attack-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .65rem;
}
.advanced-display-combat .advanced-display-text {
  align-content: start;
}
.advanced-display-combat .advanced-attack-card {
  border-color: rgba(238,116,76,.28);
  background:
    radial-gradient(circle at 50% 0%, rgba(238,116,76,.12), transparent 45%),
    linear-gradient(180deg, rgba(20,22,28,.9), rgba(10,13,18,.94));
}
.advanced-display-combat .advanced-attack-card > span {
  color: #ee744c;
}
@media (max-width: 900px) {
  .advanced-attack-grid {
    grid-template-columns: 1fr;
  }
}


/* v0.250 — fiche avancée épurée et strictement uniforme */
.advanced-sheet-v241 { padding: .15rem; }
.advanced-layout-grid-v241 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  align-items: start;
}
.advanced-layout-grid-v241 .advanced-span-2 { grid-column: span 2; }
.advanced-sheet-v241 .advanced-display-card {
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--card-tone) 48%, rgba(255,255,255,.08));
  background: radial-gradient(circle at 18% 20%, color-mix(in srgb, var(--card-tone) 12%, transparent), transparent 34%), linear-gradient(180deg, rgba(7,10,16,.985), rgba(10,14,21,.965));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.03), 0 18px 32px rgba(0,0,0,.22);
}
.advanced-sheet-v241 .advanced-display-card > header {
  padding: .92rem 1rem .7rem;
  border-bottom: 1px solid color-mix(in srgb, var(--card-tone) 26%, rgba(255,255,255,.08));
}
.advanced-sheet-v241 .advanced-display-card > header h3 {
  margin: 0;
  font-size: 1.18rem;
  line-height: 1;
  font-weight: 950;
  letter-spacing: .045em;
  text-transform: uppercase;
  color: var(--card-tone);
}
.advanced-sheet-v241 .advanced-display-content { padding: 1rem; gap: 1rem; }
.advanced-sheet-v241 .advanced-display-with-art {
  grid-template-columns: minmax(165px, 31%) minmax(0, 1fr);
  gap: 1rem;
  align-items: stretch;
}
.advanced-sheet-v241 .advanced-art {
  min-height: 205px;
}
.advanced-sheet-v241 .advanced-art img {
  max-height: 80%;
}
.advanced-sheet-v241 .advanced-identity-supercard-no-art {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 1rem;
  align-items: stretch;
}
.advanced-sheet-v241 .advanced-card-identity .advanced-identity-portrait {
  min-height: 300px;
}
.advanced-sheet-v241 .advanced-big-1 { grid-template-columns: minmax(0, 1fr); }
.advanced-sheet-v241 .advanced-big-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.advanced-sheet-v241 .advanced-big-metric,
.advanced-sheet-v241 .advanced-display-ability,
.advanced-sheet-v241 .advanced-display-save,
.advanced-sheet-v241 .advanced-attack-card {
  min-height: 104px;
  padding: .68rem .58rem;
  border-radius: 15px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(17,24,33,.82), rgba(9,13,19,.9));
  display: grid;
  justify-items: center;
  align-content: center;
  gap: .18rem;
  text-align: center;
}
.advanced-sheet-v241 .advanced-big-metric > span,
.advanced-sheet-v241 .advanced-display-ability > span,
.advanced-sheet-v241 .advanced-display-save > span,
.advanced-sheet-v241 .advanced-attack-card > span {
  color: #f2c24c;
  font-size: .95rem;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
  line-height: 1.05;
}
.advanced-sheet-v241 .advanced-big-metric > strong,
.advanced-sheet-v241 .advanced-display-ability > strong,
.advanced-sheet-v241 .advanced-display-save > strong,
.advanced-sheet-v241 .advanced-attack-card > strong {
  color: #fbf6ea;
  font-size: 2.05rem;
  line-height: 1;
  font-weight: 950;
}
.advanced-sheet-v241 .advanced-display-ability > em,
.advanced-sheet-v241 .advanced-attack-card > em {
  color: #f6d677;
  font-size: .98rem;
  line-height: 1.2;
  font-style: normal;
  font-weight: 800;
}
.advanced-sheet-v241 .advanced-display-ability > small,
.advanced-sheet-v241 .advanced-display-save > small {
  color: #d8c9a4;
  font-size: .92rem;
  line-height: 1.1;
}
.advanced-sheet-v241 .advanced-attack-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .65rem;
}
.advanced-sheet-v241 .advanced-list-columns {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
.advanced-sheet-v241 .advanced-list-row {
  min-height: 46px;
  padding: .5rem .65rem;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,.065);
  background: linear-gradient(180deg, rgba(17,24,33,.7), rgba(9,13,19,.78));
  margin-bottom: .42rem;
}
.advanced-sheet-v241 .advanced-list-row span,
.advanced-sheet-v241 .advanced-list-row strong,
.advanced-sheet-v241 .advanced-info-row span,
.advanced-sheet-v241 .advanced-info-row strong,
.advanced-sheet-v241 .advanced-note-inline {
  font-size: 1rem;
  line-height: 1.2;
}
.advanced-sheet-v241 .advanced-skills-wide .advanced-art {
  min-height: 205px;
}
.advanced-sheet-v241 .advanced-skills-wide .advanced-art img {
  max-height: 80%;
  max-width: 100%;
}
@media (max-width: 1500px) {
  .advanced-layout-grid-v241 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .advanced-layout-grid-v241 .advanced-span-2 { grid-column: 1 / -1; }
}
@media (max-width: 1050px) {
  .advanced-layout-grid-v241 { grid-template-columns: 1fr; }
  .advanced-layout-grid-v241 .advanced-span-2 { grid-column: auto; }
  .advanced-sheet-v241 .advanced-identity-supercard-no-art,
  .advanced-sheet-v241 .advanced-display-with-art { grid-template-columns: 1fr; }
  .advanced-sheet-v241 .advanced-art { min-height: 150px; }
  .advanced-sheet-v241 .advanced-card-identity .advanced-identity-portrait { min-height: 220px; max-width: 280px; }
}
@media (max-width: 720px) {
  .advanced-sheet-v241 .advanced-big-2,
  .advanced-sheet-v241 .advanced-display-abilities-grid,
  .advanced-sheet-v241 .advanced-display-saves-grid,
  .advanced-sheet-v241 .advanced-list-columns { grid-template-columns: 1fr; }
}


/* v0.250 — finitions fiche avancée : alignement, sauvegardes et compétences */
.advanced-sheet-v241 .advanced-identity-supercard-no-art {
  grid-template-columns: 220px minmax(0, 1fr);
  column-gap: 1.75rem;
}
.advanced-sheet-v241 .advanced-identity-info {
  padding-left: .35rem;
}
.advanced-sheet-v241 .advanced-defense-resistance {
  grid-column: 1 / -1;
  justify-items: start;
  text-align: left;
  min-height: 82px;
  padding-left: 1rem;
}
.advanced-sheet-v241 .advanced-defense-resistance > strong {
  font-size: 1.08rem;
  line-height: 1.25;
  color: #fbf6ea;
}
.advanced-sheet-v241 .advanced-display-save {
  min-height: 104px;
}
.advanced-sheet-v241 .advanced-display-save > span {
  margin-bottom: .18rem;
}
.advanced-sheet-v241 .advanced-skills-wide .advanced-display-with-art {
  grid-template-columns: 205px minmax(0, 1fr);
}
.advanced-sheet-v241 .advanced-skills-wide .advanced-art {
  width: 205px;
  max-width: 205px;
  min-height: 205px;
  align-self: start;
}
.advanced-sheet-v241 .advanced-skills-wide .advanced-art img {
  width: auto;
  max-width: 100%;
  height: auto;
  max-height: 80%;
}
.advanced-sheet-v241 .advanced-skills-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .65rem;
}
.advanced-sheet-v241 .advanced-skill-card {
  min-height: 104px;
  padding: .68rem .58rem;
  border-radius: 15px;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(17,24,33,.82), rgba(9,13,19,.9));
  display: grid;
  justify-items: center;
  align-content: center;
  gap: .18rem;
  text-align: center;
}
.advanced-sheet-v241 .advanced-skill-card > span {
  color: #f2c24c;
  font-size: .95rem;
  font-weight: 900;
  letter-spacing: .04em;
  text-transform: uppercase;
  line-height: 1.05;
}
.advanced-sheet-v241 .advanced-skill-card > strong {
  color: #fbf6ea;
  font-size: 2.05rem;
  line-height: 1;
  font-weight: 950;
}
@media (max-width: 1150px) {
  .advanced-sheet-v241 .advanced-skills-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .advanced-sheet-v241 .advanced-identity-supercard-no-art,
  .advanced-sheet-v241 .advanced-skills-wide .advanced-display-with-art { grid-template-columns: 1fr; }
  .advanced-sheet-v241 .advanced-skills-wide .advanced-art { width: 100%; max-width: 205px; }
  .advanced-sheet-v241 .advanced-skills-grid { grid-template-columns: 1fr; }
}


/* v0.250 — ordre logique fixe de la fiche avancée */
.advanced-layout-grid-v244 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.advanced-layout-grid-v244 .advanced-span-2 {
  grid-column: span 2;
}
.advanced-layout-grid-v244 .advanced-span-3 {
  grid-column: 1 / -1;
}
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 1500px) {
  .advanced-layout-grid-v244 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .advanced-layout-grid-v244 .advanced-span-2,
  .advanced-layout-grid-v244 .advanced-span-3 {
    grid-column: 1 / -1;
  }
}
@media (max-width: 1100px) {
  .advanced-layout-grid-v244 {
    grid-template-columns: 1fr;
  }
  .advanced-layout-grid-v244 .advanced-span-2,
  .advanced-layout-grid-v244 .advanced-span-3 {
    grid-column: auto;
  }
}


/* v0.250 — ordre conservé, dimensions internes restaurées */
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-display-with-art {
  grid-template-columns: 205px minmax(0, 1fr);
  align-items: start;
}
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-art {
  width: 205px;
  min-width: 205px;
  min-height: 205px;
  height: 205px;
}
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-art img {
  width: auto;
  height: 80%;
  max-width: 100%;
  max-height: 80%;
}
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-grid {
  grid-template-columns: repeat(3, minmax(0, 180px));
  justify-content: start;
  align-items: start;
}
.advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-card {
  width: 180px;
  min-width: 180px;
  max-width: 180px;
  min-height: 104px;
}
@media (max-width: 1500px) {
  .advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-grid {
    grid-template-columns: repeat(3, minmax(0, 180px));
  }
}
@media (max-width: 1100px) {
  .advanced-layout-grid-v244 .advanced-combat-wide .advanced-display-with-art {
    grid-template-columns: 1fr;
  }
  .advanced-layout-grid-v244 .advanced-combat-wide .advanced-art {
    width: 205px;
    min-width: 205px;
    height: 205px;
  }
}
@media (max-width: 760px) {
  .advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-grid {
    grid-template-columns: 1fr;
  }
  .advanced-layout-grid-v244 .advanced-combat-wide .advanced-attack-card {
    width: 100%;
    min-width: 0;
    max-width: none;
  }
}


/* v0.250 — identité recentrée, sens passifs sous identité, icône caractéristiques normalisée */
.advanced-sheet-v241 .advanced-identity-supercard-no-art {
  grid-template-columns: 220px minmax(0, 1fr);
  column-gap: 1.75rem;
}
.advanced-sheet-v241 .advanced-identity-info {
  width: min(100%, 330px);
  justify-self: center;
  align-self: center;
  padding-left: 0;
}
.advanced-sheet-v241 .advanced-identity-info .advanced-character-name,
.advanced-sheet-v241 .advanced-identity-info .advanced-character-sub {
  text-align: left;
}
.advanced-sheet-v241 .advanced-identity-info .advanced-info-stack {
  width: 100%;
}
.advanced-sheet-v241 .advanced-display-senses .advanced-display-content {
  min-height: 0;
}
.advanced-sheet-v241 .advanced-senses-extra {
  display: grid;
  gap: .28rem;
  margin-top: .75rem;
  padding: .72rem .82rem;
  border-radius: 14px;
  border: 1px solid rgba(104,199,119,.24);
  background: linear-gradient(180deg, rgba(14,30,20,.72), rgba(8,18,12,.82));
}
.advanced-sheet-v241 .advanced-senses-extra > span {
  color: #68c777;
  font-size: .95rem;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.advanced-sheet-v241 .advanced-senses-extra > strong {
  color: #fbf6ea;
  font-size: 1rem;
  line-height: 1.25;
  font-weight: 850;
}
.advanced-sheet-v241 .advanced-display-abilities .advanced-display-with-art {
  grid-template-columns: 205px minmax(0, 1fr);
}
.advanced-sheet-v241 .advanced-display-abilities .advanced-art {
  width: 205px;
  max-width: 205px;
  min-height: 205px;
  align-self: start;
}
.advanced-sheet-v241 .advanced-display-abilities .advanced-art img {
  width: auto;
  max-width: 100%;
  max-height: 80%;
}
@media (max-width: 1050px) {
  .advanced-sheet-v241 .advanced-identity-info {
    width: 100%;
    justify-self: stretch;
  }
  .advanced-sheet-v241 .advanced-display-abilities .advanced-display-with-art {
    grid-template-columns: 1fr;
  }
  .advanced-sheet-v241 .advanced-display-abilities .advanced-art {
    width: 100%;
    max-width: 280px;
    min-height: 150px;
  }
}


/* v0.250 — identité sans chevauchement et caractéristiques sans doublon */
.advanced-sheet-v241 .advanced-identity-supercard-no-art {
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 2rem;
  align-items: center;
}
.advanced-sheet-v241 .advanced-card-identity .advanced-identity-portrait {
  width: 220px;
  min-width: 220px;
  max-width: 220px;
  overflow: hidden;
}
.advanced-sheet-v241 .advanced-card-identity .advanced-identity-portrait img {
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: cover;
}
.advanced-sheet-v241 .advanced-identity-info {
  min-width: 0;
  width: 100%;
  max-width: none;
  justify-self: stretch;
  padding-left: 0;
  margin-left: 0;
}
.advanced-sheet-v241 .advanced-identity-info .advanced-character-name,
.advanced-sheet-v241 .advanced-identity-info .advanced-character-sub,
.advanced-sheet-v241 .advanced-identity-info .advanced-info-stack {
  width: 100%;
  max-width: 100%;
}
.advanced-sheet-v241 .advanced-display-ability > small {
  display: none !important;
}
@media (max-width: 1050px) {
  .advanced-sheet-v241 .advanced-identity-supercard-no-art {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .advanced-sheet-v241 .advanced-card-identity .advanced-identity-portrait {
    width: min(280px, 100%);
    min-width: 0;
    max-width: 280px;
  }
}


/* v0.250 — Sens passifs réellement collés sous Identité */
@media (min-width: 1501px) {
  .advanced-layout-grid-v244 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    grid-template-rows: auto auto auto auto;
    align-items: start;
  }
  .advanced-layout-grid-v244 > .advanced-display-identity {
    grid-column: 1;
    grid-row: 1;
  }
  .advanced-layout-grid-v244 > .advanced-display-skills {
    grid-column: 2 / 4;
    grid-row: 1 / 3;
    align-self: start;
  }
  .advanced-layout-grid-v244 > .advanced-display-senses {
    grid-column: 1;
    grid-row: 2;
    align-self: start;
  }
  .advanced-layout-grid-v244 > .advanced-display-movement {
    grid-column: 1;
    grid-row: 3;
  }
  .advanced-layout-grid-v244 > .advanced-display-saves {
    grid-column: 2;
    grid-row: 3;
  }
  .advanced-layout-grid-v244 > .advanced-display-defense {
    grid-column: 1;
    grid-row: 4;
  }
  .advanced-layout-grid-v244 > .advanced-display-combat {
    grid-column: 2 / 4;
    grid-row: 4;
  }
  .advanced-layout-grid-v244 > .advanced-display-vitality {
    grid-column: 1;
    grid-row: 5;
  }
  .advanced-layout-grid-v244 > .advanced-display-abilities {
    grid-column: 2 / 4;
    grid-row: 5;
  }
  .advanced-layout-grid-v244 > .advanced-display-monster {
    grid-column: 1 / -1;
    grid-row: 6;
  }
}


/* v0.250 — choix d’image pour les alias bilingues de créatures */
.creature-image-choice-dialog {
  width: min(980px, 94vw);
  max-width: 94vw;
}
.creature-image-choice-card { min-width: 0; }
.creature-image-choice-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: .9rem;
  max-height: min(62vh, 650px);
  overflow: auto;
  padding: .25rem;
}
.creature-image-choice-item {
  display: grid;
  gap: .55rem;
  justify-items: center;
  padding: .7rem;
  border-radius: 16px;
  border: 1px solid rgba(var(--accent-rgb), .34);
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .95), rgba(var(--input-rgb), .82));
  color: var(--text);
  text-align: center;
}
.creature-image-choice-item:hover,
.creature-image-choice-item:focus-visible,
.creature-image-choice-item.preferred {
  border-color: rgba(var(--accent-rgb), .82);
  box-shadow: 0 0 0 2px rgba(var(--accent-rgb), .14);
}
.creature-image-choice-item img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: contain;
  border-radius: 12px;
  background: rgba(0,0,0,.28);
}
.creature-image-choice-item strong { font-size: 1rem; }
.creature-image-choice-item span { color: var(--accent); font-weight: 850; }


/* v0.251 — sélecteur de bases de campagne */
.campaign-database-dialog { width:min(820px, 94vw); }
.campaign-database-card-wrap { min-height:420px; }
.campaign-database-list { display:grid; gap:.75rem; margin-top:.8rem; }
.campaign-database-card { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:1rem; width:100%; padding:1rem 1.1rem; border-radius:16px; border:1px solid rgba(var(--accent-rgb),.32); background:linear-gradient(180deg,rgba(var(--panel-rgb),.9),rgba(var(--input-rgb),.78)); text-align:left; }
.campaign-database-card:hover:not(:disabled) { border-color:rgba(var(--accent-rgb),.75); transform:translateY(-1px); }
.campaign-database-card.active { border-color:rgba(var(--success-rgb),.72); box-shadow:0 0 0 2px rgba(var(--success-rgb),.12); }
.campaign-database-card-main { display:grid; gap:.25rem; }
.campaign-database-card-main strong { font-size:1.15rem; color:var(--text); }
.campaign-database-card-main em { font-style:normal; color:var(--muted); font-size:.95rem; }
.campaign-database-card-state { font-weight:900; color:var(--accent); white-space:nowrap; }
.campaign-database-card.active .campaign-database-card-state { color:var(--success); }
.new-campaign-database-dialog { width:min(560px, 92vw); }

/* v0.259 — choix manuel des bannières intérieures depuis le panneau météo */
.weather-banner-choice { grid-column: 1 / -1; display: grid; gap: 10px; padding-top: 10px; border-top: 1px solid rgba(214, 166, 72, .24); }
.weather-banner-choice-head { display: grid; gap: 3px; }
.weather-banner-choice-head strong { color: var(--gold, #e2b552); }
.weather-banner-choice-head small { opacity: .72; }
.weather-banner-choice-grid { display: grid; grid-template-columns: repeat(3, minmax(150px, 1fr)); gap: 10px; }
.weather-banner-choice-button { position: relative; min-height: 96px; overflow: hidden; padding: 0; border: 1px solid rgba(214,166,72,.28); border-radius: 12px; background: #10151c; color: #f4d27a; cursor: pointer; }
.weather-banner-choice-button img { width: 100%; height: 96px; object-fit: cover; display: block; filter: brightness(.78); }
.weather-banner-choice-button strong { position: absolute; inset: auto 8px 7px 8px; padding: 4px 8px; border-radius: 8px; background: rgba(5,7,10,.82); text-align: center; }
.weather-banner-choice-button.active { outline: 3px solid #e2b552; box-shadow: 0 0 0 2px rgba(0,0,0,.7) inset; }
.weather-banner-auto-icon { display: grid; place-items: center; height: 96px; font-size: 42px; }
@media (max-width: 1000px) { .weather-banner-choice-grid { grid-template-columns: repeat(2, minmax(140px, 1fr)); } }

/* v0.260 — boutons météo agrandis pour meilleure lisibilité et usage tactile */
.weather-environment-buttons {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 12px;
  width: 100%;
}
.weather-environment-button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-rows: auto auto;
  column-gap: 12px;
  row-gap: 2px;
  align-items: center;
  min-height: 82px;
  padding: 14px 16px;
  border: 2px solid rgba(var(--accent-rgb), .42);
  border-radius: 14px;
  background: linear-gradient(180deg, rgba(var(--panel-rgb), .96), rgba(var(--input-rgb), .88));
  color: var(--text);
  text-align: left;
  cursor: pointer;
  touch-action: manipulation;
}
.weather-environment-button > span {
  grid-row: 1 / span 2;
  font-size: 2rem;
  line-height: 1;
}
.weather-environment-button > strong {
  font-size: 1.18rem;
  line-height: 1.1;
  font-weight: 950;
  color: var(--text);
}
.weather-environment-button > small {
  font-size: .98rem;
  line-height: 1.2;
  color: var(--muted);
  font-weight: 760;
}
.weather-environment-button:hover,
.weather-environment-button:focus-visible {
  border-color: rgba(var(--accent-rgb), .86);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .16);
}
.weather-environment-button.active,
.weather-environment-button[aria-pressed="true"] {
  border-color: var(--accent-strong, var(--accent));
  background: linear-gradient(180deg, rgba(var(--accent-rgb), .26), rgba(var(--input-rgb), .92));
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb), .2);
}
@media (max-width: 900px) {
  .weather-environment-buttons {
    grid-template-columns: repeat(2, minmax(160px, 1fr));
  }
  .weather-environment-button {
    min-height: 76px;
  }
}
@media (max-width: 560px) {
  .weather-environment-buttons {
    grid-template-columns: 1fr;
  }
}

/* v0.265 — les repères appartiennent aux lieux; les PNJ suivent leur lieu actuel */
.npc-map.placing-locations { cursor: crosshair; }
.npc-map > img { object-fit: contain; background: #151c17; }
.npc-placement-panel {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 7;
  display: grid;
  gap: 7px;
  width: min(410px, calc(100% - 20px));
  max-height: calc(100% - 20px);
  padding: 10px;
  overflow: auto;
  border: 1px solid rgba(225, 173, 77, .7);
  border-radius: 12px;
  background: rgba(24, 19, 14, .94);
  color: #f4ead7;
  box-shadow: 0 8px 26px rgba(0, 0, 0, .48);
  cursor: default;
}
.npc-placement-panel[hidden] { display: none !important; }
.npc-placement-panel > strong { color: #f2c766; font-size: 1rem; }
.npc-placement-panel > span { color: #d4c7b2; font-size: .82rem; }
.npc-placement-choices { display: flex; flex-wrap: wrap; gap: 5px; }
.npc-placement-choices button {
  min-height: 32px;
  padding: .28rem .5rem;
  border-color: rgba(225, 173, 77, .32);
  font-size: .78rem;
}
.npc-placement-choices button.active,
.npc-location-legend button.active {
  border-color: #69c9ff;
  box-shadow: 0 0 0 2px rgba(105, 201, 255, .28);
}
.npc-location-add { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 5px; }
.npc-location-add input,
.npc-location-add button { min-height: 34px; height: 34px; }
.npc-location-add input { min-width: 0; padding: .3rem .5rem; }
.npc-location-add button { padding: .25rem .55rem; }
.npc-placement-choices { display: block; }
.npc-placement-section > header { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin: .2rem 0 .45rem; color: #f2c766; }
.npc-placement-section > header small,
.npc-placement-group > summary small,
.npc-placement-unassigned > summary small { min-width: 1.7rem; padding: .08rem .38rem; border-radius: 999px; background: rgba(242,199,102,.14); color: #f2c766; text-align: center; }
.npc-placement-group,
.npc-placement-unassigned { margin: .35rem 0; border: 1px solid rgba(202,164,98,.28); border-radius: 9px; background: rgba(18,15,12,.28); overflow: hidden; }
.npc-placement-group > summary,
.npc-placement-unassigned > summary { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding: .52rem .65rem; cursor: pointer; color: #e9dcc6; font-weight: 750; }
.npc-placement-group > div,
.npc-placement-unassigned-list { padding: .3rem .4rem .45rem; }
.npc-placement-unassigned { margin-top: .7rem; border-color: rgba(103,166,214,.34); }
.npc-placement-unassigned > summary { color: #a9d8fa; }
.npc-placement-choice { display: grid; grid-template-columns: minmax(150px,1fr) minmax(105px,.55fr) minmax(125px,.75fr) 38px; gap: 5px; margin: 4px 0; }
.npc-placement-choice > [data-place-location] { min-width: 0; justify-content: flex-start; }
.npc-placement-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.npc-placement-choice > select { min-width: 0; height: 34px; padding: .2rem .35rem; border: 1px solid rgba(202,164,98,.36); border-radius: 8px; background: #241d16; color: #e9dcc6; font-size: .75rem; }
.npc-location-navigation { z-index: 4; }
.npc-location-navigation.has-linked-map > span { background: #244e39; border-color: #75d99c; box-shadow: 0 0 0 3px rgba(117,217,156,.2); }
.npc-location-navigation.has-linked-map > em { background: #173a2b; border-color: rgba(117,217,156,.65); color: #d8ffe7; }
.npc-parent-map { border-color: rgba(117,217,156,.55); background: #18372a; color: #d8ffe7; font-weight: 750; white-space: nowrap; }
.npc-parent-map:hover { background: #24513d; }
.proto-map-transition { position:absolute; transform:translate(-50%,-50%); z-index:30; display:grid; place-items:center; min-width:42px; min-height:42px; border:3px solid #f4d56f; border-radius:50%; background:#332617; color:#fff4c8; box-shadow:0 0 0 5px rgba(244,213,111,.22); }
.proto-map-transition span { font-size:1.35rem; line-height:1; }
.proto-map-transition small { position:absolute; top:100%; margin-top:4px; padding:2px 6px; border-radius:5px; background:rgba(15,12,9,.88); white-space:nowrap; color:#fff4c8; }
.proto-passage-panel { margin-top:1rem; padding-top:.75rem; border-top:1px solid rgba(202,164,98,.32); }
.proto-passage-row { display:flex; justify-content:space-between; align-items:center; gap:.5rem; margin:.35rem 0; padding:.35rem .45rem; border-radius:7px; background:rgba(255,255,255,.05); }
.proto-import-requested { outline:4px solid rgba(244,213,111,.4); box-shadow:0 0 22px rgba(244,213,111,.45); animation:proto-import-pulse 1.35s ease-in-out infinite alternate; }
@keyframes proto-import-pulse { to { transform:scale(1.025); box-shadow:0 0 30px rgba(244,213,111,.72); } }
@media (max-width: 1100px) { .npc-placement-choice { grid-template-columns: minmax(140px,1fr) 38px; } .npc-placement-choice > select { grid-column: 1 / -1; } }
.npc-placement-choice .npc-unassign-location { width: 38px; min-width: 38px; padding: 0; }
.npc-placement-empty { margin: .35rem 0; color: #bcae98; font-size: .82rem; }
.npc-combat-map-search { display:grid; gap:.3rem; margin:.45rem 0; color:#a9d8fa; font-size:.78rem; font-weight:700; }
.npc-combat-map-search input { min-width:0; height:36px; padding:.35rem .55rem; border:1px solid rgba(103,166,214,.48); border-radius:8px; background:#171a1d; color:#f4efe7; }
.npc-location-map-button { min-width:0; height:34px; display:flex; align-items:center; gap:.35rem; overflow:hidden; }
.npc-location-map-button strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.npc-location-map-picker { width:min(760px,92vw); max-height:82vh; padding:0; border:1px solid #765f36; border-radius:14px; background:#241e18; color:#f2eadc; }
.npc-location-map-picker::backdrop { background:rgba(5,4,3,.72); }
.npc-location-map-picker > section { display:grid; grid-template-rows:auto auto minmax(0,1fr); max-height:82vh; }
.npc-location-map-picker header { display:flex; justify-content:space-between; align-items:center; padding:1rem; border-bottom:1px solid rgba(202,164,98,.3); }
.npc-location-map-picker header p,.npc-location-map-picker header h3 { margin:0; }
.npc-map-picker-search { display:grid; gap:.35rem; padding:.8rem 1rem; color:#a9d8fa; font-weight:700; }
.npc-map-picker-search input { height:44px; padding:.5rem .7rem; border:2px solid #5799c8; border-radius:9px; background:#12171b; color:white; font-size:1rem; }
#npcLocationMapResults { overflow:auto; padding:0 1rem 1rem; }
#npcLocationMapResults h4 { position:sticky; top:0; z-index:1; margin:.6rem 0 .35rem; padding:.5rem; background:#241e18; color:#f2c766; }
#npcLocationMapResults > button { width:100%; display:flex; flex-direction:column; align-items:flex-start; margin:.25rem 0; padding:.55rem .7rem; text-align:left; }
#npcLocationMapResults > button.selected { border-color:#65d58c; background:#183b2a; }
#npcLocationMapResults > button small { color:#baa98e; }
.npc-travel-layer { position:absolute; inset:0; width:100%; height:100%; z-index:6; pointer-events:none; overflow:visible; }
/* Keep the regional locations clickable while terrain painting is open.
   Individual route segments opt back into pointer events below. */
.npc-travel-layer.terrain-editing{pointer-events:none}
.npc-travel-terrain-segment{stroke-width:12;stroke-linecap:round;pointer-events:all!important;cursor:crosshair;filter:drop-shadow(0 1px 1px #000)}
.npc-travel-layer .npc-travel-token,.npc-travel-layer text{pointer-events:none}
.npc-travel-terrain-types [data-travel-paint] span{display:inline-block;width:.8rem;height:.8rem;border-radius:50%;margin-right:.35rem;background:var(--terrain-color)}
.npc-travel-encounter-notice{display:grid;gap:.25rem;margin:.55rem 0;padding:.65rem;border:1px solid #6d7656;border-radius:10px;background:#20291d}.npc-travel-encounter-notice.triggered{border-color:#e3a04a;background:#3b2717}.npc-travel-encounter-notice span{font-size:.88rem}.npc-travel-encounter-notice button{margin-top:.35rem}
.npc-travel-route { fill:none; stroke:#ffcf54; stroke-width:6; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 2px 2px #000); }
.npc-travel-token { fill:#2c78a8; stroke:#fff1b2; stroke-width:4; filter:drop-shadow(0 3px 4px #000); }
.npc-travel-layer text { fill:white; font-weight:900; font-size:14px; }
.npc-travel-panel { position:absolute; right:16px; top:70px; z-index:40; width:min(360px,calc(100% - 32px)); max-height:calc(100% - 90px); overflow:auto; padding:1rem; border:1px solid #826b3f; border-radius:12px; background:rgba(31,25,19,.96); box-shadow:0 10px 30px #0008; }
.npc-travel-panel header { display:flex; justify-content:space-between; align-items:center; margin-bottom:.7rem; }
.npc-travel-panel label { display:grid; gap:.3rem; margin:.55rem 0; }
.npc-travel-panel label[hidden] { display:none !important; }
.npc-travel-speed { display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
.npc-travel-panel > button { width:100%; margin:.25rem 0; }
.npc-travel-estimate { display:grid; gap:.3rem; margin:.7rem 0; padding:.7rem; border-radius:9px; background:#17130f; color:#ead9bd; }
.npc-travel-estimate strong { color:#f2c766; font-size:1.05rem; }
.npc-map.npc-travel-calibrating,
.npc-map.npc-travel-calibrating * { cursor:crosshair !important; }
.npc-map.npc-travel-drawing,
.npc-map.npc-travel-drawing * { cursor:crosshair !important; }
.npc-location-anchor {
  position: absolute;
  z-index: 5;
  display: grid;
  justify-items: center;
  transform: translate(-50%, -50%);
  padding: 0;
  overflow: visible;
  border: 0 !important;
  background: transparent !important;
  color: #fff;
  touch-action: none;
}
.npc-location-anchor > span {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 3px solid #e1ad4d;
  border-radius: 11px;
  background: #2a2118;
  color: #f2c766;
  font-size: 1.45rem;
  line-height: 1;
  box-shadow: 0 3px 12px rgba(0, 0, 0, .82);
}
.npc-location-anchor > em {
  margin-top: 3px;
  padding: .16rem .42rem;
  border-radius: 6px;
  background: rgba(21, 17, 13, .94);
  color: #fff;
  font-size: .75rem;
  font-style: normal;
  white-space: nowrap;
}
.npc-location-anchor.selected > span {
  border-color: #69c9ff;
  box-shadow: 0 0 0 4px rgba(105, 201, 255, .34), 0 3px 12px rgba(0, 0, 0, .82);
}
.npc-location-anchor.selected > em { background: #17445c; }

/* v0.287 — cartes de combat allégées, focus et gestion visuelle de la vitalité */
.roster-image-tile-glyph {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  font-size: 1.55rem;
  line-height: 1;
  filter: drop-shadow(0 5px 8px rgba(0,0,0,.42));
}
.vitality-action-tile {
  cursor: pointer;
}
.vitality-action-tile:hover,
.vitality-action-tile:focus-visible {
  border-color: rgba(239,97,91,.9);
  box-shadow: 0 0 0 2px rgba(239,97,91,.2), 0 8px 18px rgba(0,0,0,.25);
}
.combatant-focus-button {
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  padding: 3px !important;
  border-radius: 50% !important;
  border: 2px solid rgba(196,178,255,.5);
  background: radial-gradient(circle, rgba(88,61,130,.9), rgba(26,20,34,.96));
}
.combatant-focus-button:not(.has-focus) { opacity: .62; }
.combatant-focus-portrait {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  overflow: hidden;
  border-radius: 50%;
  color: #eadcff;
  font-weight: 900;
}
.combatant-focus-portrait img { width: 100%; height: 100%; object-fit: cover; }
.combatant-focus-reticle {
  position: absolute;
  right: -4px;
  bottom: -5px;
  display: grid;
  place-items: center;
  width: 23px;
  height: 23px;
  border-radius: 50%;
  color: #fff;
  background: #b52626;
  box-shadow: 0 2px 8px rgba(0,0,0,.5);
  font-size: 1.15rem;
  font-weight: 950;
}
.combatant-spell-slots-button {
  position: relative;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 48px;
  height: 44px;
  padding: 0 !important;
  border-color: rgba(111,155,224,.45);
  background: rgba(38,66,110,.4);
  font-size: 1.35rem;
}
.combatant-spell-slots-button:has(.combatant-bardic-badge) > span:first-child { transform:translateY(-.38rem); }
.combatant-bardic-badge { position:absolute; left:.16rem; right:.16rem; bottom:.12rem; min-width:0; padding:.05rem .18rem; border:1px solid #d8b560; border-radius:999px; background:#30200f; color:#ffe19a; font-size:.57rem; font-weight:900; line-height:1.05; white-space:nowrap; }
.spell-slot-bubble.bardic { border-color:#dfb857 !important; }
.spell-slot-bubble.bardic.available { background:radial-gradient(circle at 35% 30%,#fff3b5,#d6a73c 48%,#6f4312 100%) !important; }
.combatant-spell-slots-button.has-spell-slots {
  border-color: #79aef2;
  background: linear-gradient(145deg, rgba(50,100,172,.75), rgba(28,48,82,.9));
  box-shadow: 0 0 .7rem rgba(76,139,221,.2);
}
.combatant-spell-slots-button:hover,
.combatant-spell-slots-button:focus-visible {
  border-color: #a9ceff;
  box-shadow: 0 0 0 2px rgba(92,155,235,.22);
}
.combatant-more { position: relative; flex: 0 0 auto; }
.combatant-more > summary {
  display: grid;
  place-items: center;
  min-width: 48px;
  min-height: 44px;
  border: 1px solid var(--line);
  border-radius: .7rem;
  background: rgba(255,255,255,.06);
  color: #f3dfb8;
  cursor: pointer;
  font-size: 1.55rem;
  font-weight: 950;
  list-style: none;
}
.combatant-more > summary::-webkit-details-marker { display: none; }
.combatant-more-menu {
  position: absolute;
  z-index: 80;
  top: auto;
  bottom: calc(100% + 6px);
  right: 0;
  display: grid;
  gap: 4px;
  width: 220px;
  padding: 7px;
  border: 1px solid rgba(var(--accent-rgb),.42);
  border-radius: 12px;
  background: rgba(18,14,12,.985);
  box-shadow: 0 16px 35px rgba(0,0,0,.55);
}
html.mj-combatants-2 .combatants-list .combatant-card:nth-child(-n + 2) .combatant-more-menu {
  top: calc(100% + 6px);
  bottom: auto;
}
.combatant-more-menu button {
  justify-content: flex-start;
  width: 100%;
  min-height: 38px;
  text-align: left;
}
.combatant-more-menu .action-delete { margin-top: 4px; border-top-color: rgba(239,97,91,.55); }
.combatant-card:has(.combatant-more[open]) {
  z-index: 250;
  overflow: visible;
}
.mj-combatant-column:has(.combatant-more[open]) {
  position: relative;
  z-index: 240;
  overflow: visible;
}
.combatants-list:has(.combatant-more[open]) {
  overflow: visible;
}
.encounter-panel:has(.combatant-more[open]) {
  overflow: visible;
}
.combatant-card > .hpbar {
  width: 100%;
  height: .96rem;
  margin-left: 0;
}
.player-card .hpbar,
.exploration-card .hpbar,
.active-turn-panel .hpbar {
  height: .96rem;
}
.focus-card { width: min(920px, calc(100vw - 28px)); }
.focus-choice-grid,
.health-source-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(105px, 1fr));
  gap: .55rem;
}
.health-source-choice {
  display: grid;
  justify-items: center;
  gap: .35rem;
  min-width: 0;
  padding: .5rem !important;
  text-align: center;
  background: rgba(255,255,255,.035);
}
.health-source-choice > span {
  display: grid;
  place-items: center;
  width: 62px;
  height: 62px;
  overflow: hidden;
  border: 2px solid rgba(255,255,255,.18);
  border-radius: 50%;
  background: #211a16;
}
.health-source-choice img { width: 100%; height: 100%; object-fit: cover; }
.health-source-choice strong {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.health-source-choice.selected {
  border-color: #e7c985;
  background: rgba(225,173,77,.17);
  box-shadow: 0 0 0 2px rgba(225,173,77,.15);
}
.health-action-dialog {
  width: min(1280px, calc(100vw - 22px));
  max-width: none;
  height: calc(100vh - 22px);
  max-height: none;
}
.health-action-card {
  box-sizing: border-box;
  width: 100%;
  max-width: none !important;
  height: 100%;
  max-height: none !important;
  overflow: auto;
}
.health-action-target {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: .75rem;
  padding: .55rem;
  text-align: left;
}
.health-action-target > div { display: grid; gap: .15rem; }
.health-multi-targets {
  display: grid;
  gap: .55rem;
  padding: .65rem .75rem;
  border: 1px solid rgba(var(--accent-rgb), .3);
  border-radius: .85rem;
  background: rgba(0,0,0,.16);
}
.health-multi-target-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .7rem;
}
.health-multi-target-head > div { display: flex; flex-wrap: wrap; gap: .4rem; }
.health-target-choice-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: .45rem;
}
.health-target-camp { display:grid; align-content:start; gap:.38rem; min-width:0; }
.health-target-camp > strong { color:#f0d999; font-size:.78rem; }
.health-target-camp.alternate > strong { color:#c9bb9e; }
.health-target-camp > div { display:flex; flex-wrap:wrap; gap:.45rem; }
.health-target-choice {
  display: grid;
  grid-template-rows: auto auto;
  min-width: 190px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: .65rem;
  background: rgba(255,255,255,.035);
  opacity: .62;
}
.health-target-toggle {
  display: grid;
  grid-template-columns: 38px minmax(0,1fr);
  grid-template-rows: auto auto;
  align-items: center;
  column-gap: .45rem;
  width: 100%;
  padding: .38rem .55rem !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  text-align: left;
}
.health-target-toggle > span {
  grid-row: 1 / 3;
  width: 38px;
  height: 38px;
  overflow: hidden;
  border: 2px solid rgba(255,255,255,.22);
  border-radius: 50%;
  display: grid;
  place-items: center;
}
.health-target-choice img { width: 100%; height: 100%; object-fit: cover; }
.health-target-choice strong,
.health-target-choice small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.health-target-choice.selected {
  opacity: 1;
  border-color: #e7c985;
  background: rgba(225,173,77,.18);
  box-shadow: inset 0 0 0 1px rgba(225,173,77,.28);
}
.health-damage-modifiers {
  display: grid;
  gap: .22rem;
  padding: .38rem .5rem .48rem;
  border-top: 1px solid rgba(255,255,255,.12);
  background: rgba(0,0,0,.18);
  font-size: .72rem;
}
.health-damage-modifiers label {
  display: flex;
  align-items: center;
  gap: .35rem;
  cursor: pointer;
}
.health-damage-modifiers input { width: 1.05rem; height: 1.05rem; }
.dead-creature-summary { display:grid; gap:.55rem; }
.dead-creature-batch-item { display:grid; gap:.15rem; padding:.65rem .75rem; border:1px solid rgba(239,97,91,.35); border-radius:.7rem; background:rgba(110,30,27,.18); }
.tools-level-import-dialog{width:min(1050px,calc(100vw - 24px));max-width:none}.tools-level-import-card{width:100%;max-width:none!important}.tools-level-upload{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:center}.tools-level-upload .settings-hint{grid-column:1/-1}.tools-level-import-summary{padding:.75rem;border:1px solid rgba(var(--accent-rgb),.35);border-radius:.75rem;background:rgba(var(--accent-rgb),.08)}.tools-level-import-changes{display:grid;gap:.45rem;margin-top:.7rem;max-height:55vh;overflow:auto}.tools-level-import-change{display:grid;grid-template-columns:auto minmax(145px,.45fr) minmax(0,1fr);gap:.65rem;align-items:center;padding:.55rem .65rem;border:1px solid rgba(var(--accent-rgb),.25);border-radius:.65rem;background:rgba(0,0,0,.14)}.tools-level-import-change>span{display:grid}.tools-level-import-change textarea{width:100%;resize:vertical}.tools-level-import-change>input{width:1.2rem;height:1.2rem}@media(max-width:700px){.tools-level-upload{grid-template-columns:1fr}.tools-level-import-change{grid-template-columns:auto 1fr}.tools-level-import-change textarea{grid-column:1/-1}}
.health-target-portrait {
  display: grid;
  place-items: center;
  width: 66px;
  height: 66px;
  overflow: hidden;
  border: 2px solid #e7c985;
  border-radius: 50%;
  background: #211a16;
  font-size: 1.2rem;
  font-weight: 950;
}
.health-target-portrait img { width: 100%; height: 100%; object-fit: cover; }
.health-action-layout {
  display: grid;
  grid-template-columns: minmax(330px,1fr) minmax(330px,390px) minmax(330px,1fr);
  gap: .8rem;
  min-height: 0;
}
.health-action-side,
.health-action-center {
  display: grid;
  align-content: start;
  gap: .75rem;
  min-width: 0;
  padding: 1rem;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 1rem;
}
.health-action-side > header { display: flex; align-items: center; gap: .65rem; }
.health-action-side > header > span { font-size: 2rem; }
.health-action-side h3,
.health-action-side p { margin: 0; }
.health-action-damage {
  border-color: rgba(239,97,91,.5);
  background: linear-gradient(145deg, rgba(125,31,28,.34), rgba(28,16,16,.7));
}
.health-action-heal {
  border-color: rgba(88,196,115,.5);
  background: linear-gradient(145deg, rgba(28,105,52,.3), rgba(13,28,19,.72));
}
.health-action-center {
  background: rgba(0,0,0,.22);
}
.health-action-center .action-quick-buttons {
  grid-template-columns: repeat(6, minmax(42px, 1fr));
  gap: .48rem;
}
.health-action-center .action-quick-buttons button {
  min-height: 46px;
  padding: .5rem .2rem;
  border-radius: 50%;
  font-size: 1rem;
}
.health-source-camp-label {
  color: #f0d999;
  font-weight: 850;
  letter-spacing: .035em;
}
.health-source-camp-label.alternate {
  margin-top: .2rem;
  padding-top: .65rem;
  border-top: 1px dashed rgba(255,255,255,.2);
  color: #c9bb9e;
}
.health-source-grid-alternate { opacity: .9; }
.health-condition-shortcut {
  min-height: 44px;
  border-color: rgba(214,154,90,.72);
  background: linear-gradient(#765027,#422b18);
  color: #ffe4ae;
  font-weight: 850;
}
.health-action-choice,
.health-temp-submit { min-height: 50px; font-weight: 900; }
.health-action-choice.damage { background: linear-gradient(#b83b35,#7d1f1c); border-color: #ec746d; }
.health-action-choice.heal { background: linear-gradient(#4fae69,#28683a); border-color: #78d890; }
.health-temp-submit { background: linear-gradient(#488fd1,#285888); border-color: #76b5eb; }
.health-action-status { min-height: 1.2rem; margin: 0; text-align: center; }
@media (max-width: 1120px) {
  .health-action-layout { grid-template-columns: 1fr; }
  .health-action-center { grid-row: 1; }
  .health-action-center .action-quick-buttons { grid-template-columns: repeat(6, minmax(42px, 1fr)); }
}
@media (max-width: 760px) {
  .health-target-choice-grid { grid-template-columns:1fr; }
}
.spell-slots-dialog {
  width: min(980px, calc(100vw - 28px));
  max-width: none;
}
.spell-slots-card {
  width: 100%;
  max-width: none !important;
}
.spell-slots-rows {
  display: grid;
  gap: .55rem;
}
.spell-slot-row {
  display: grid;
  grid-template-columns: 105px minmax(0, 1fr) 58px auto;
  align-items: center;
  gap: .75rem;
  min-height: 62px;
  padding: .65rem .8rem;
  border: 1px solid rgba(121,174,242,.25);
  border-radius: .8rem;
  background: rgba(31,47,73,.42);
}
.spell-slot-bubbles {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .5rem;
  min-width: 0;
}
.spell-slot-bubble {
  width: 34px;
  height: 34px;
  min-width: 34px;
  padding: 0 !important;
  border: 3px solid #82b9ff !important;
  border-radius: 50% !important;
}
.spell-slot-bubble.available {
  background: radial-gradient(circle at 35% 30%, #e7f3ff, #65a9f4 45%, #24568d 100%) !important;
  box-shadow: 0 0 .65rem rgba(94,166,255,.55);
}
.spell-slot-bubble.spent {
  border-color: #63748b !important;
  background: #18202b !important;
  box-shadow: inset 0 0 0 3px rgba(0,0,0,.28);
}
.spell-slot-empty { color: var(--muted); font-style: italic; }
.spell-slot-count {
  color: #d8eaff;
  font-size: 1.05rem;
  font-weight: 950;
  text-align: center;
}
.spell-slot-max-controls {
  display: flex;
  gap: .35rem;
}
.spell-slot-max-controls button {
  width: 42px;
  min-width: 42px;
  min-height: 38px;
  padding: 0 !important;
  font-size: 1.25rem;
  font-weight: 950;
}
@media (max-width: 720px) {
  .spell-slot-row {
    grid-template-columns: 82px minmax(0, 1fr) auto;
  }
  .spell-slot-max-controls {
    grid-column: 2 / span 2;
  }
}
.player-card,
.exploration-card { position: relative; }
.active-turn-panel { position: relative; }
.active-turn-panel .player-focus-badge { top: 14px; right: 16px; left: auto; }
.player-focus-badge {
  position: absolute;
  z-index: 4;
  top: 14px;
  left: 74px;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 2px solid rgba(196,178,255,.72);
  border-radius: 50%;
  background: #21172d;
  box-shadow: 0 5px 14px rgba(0,0,0,.5);
}
.player-focus-badge > span {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  overflow: hidden;
  border-radius: 50%;
  font-weight: 900;
}
.player-focus-badge img { width: 100%; height: 100%; object-fit: cover; }
.player-focus-badge b {
  position: absolute;
  right: -6px;
  bottom: -5px;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #b52626;
  color: #fff;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card {
  grid-template-rows: auto;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-portrait {
  grid-row: 1;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-main {
  grid-row: 1;
}
.exploration-name-effects {
  display: flex;
  align-items: flex-start;
  gap: .55rem;
  min-width: 0;
}
.exploration-name-effects > h3 {
  flex: 0 0 auto;
  margin: 0;
}
.exploration-visible-effects {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  flex: 1 1 auto;
  gap: .4rem;
  min-width: 0;
  min-height: 0;
}
.exploration-visible-effects:empty {
  min-height: 0;
}
.exploration-visible-effects .exploration-state-chip {
  margin: 0;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card {
  align-items: stretch;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-portrait {
  align-self: start;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card .player-card-main {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  align-self: stretch;
  align-content: stretch;
  min-height: 100%;
}
.exploration-focus-row {
  display: flex;
  align-items: flex-start;
  padding-top: .38rem;
}
.exploration-focus-row:empty { display: none; }
.exploration-card .player-focus-badge {
  position: relative;
  top: auto;
  right: auto;
  bottom: auto;
  left: auto;
  width: 68px;
  height: 68px;
}
.exploration-card .player-focus-badge > span {
  width: 58px;
  height: 58px;
  font-size: 1.1rem;
}
.exploration-card .player-focus-badge b {
  width: 27px;
  height: 27px;
  font-size: 1.05rem;
}
.exploration-bottom-hpbar {
  width: 100%;
  height: 1.92rem !important;
  margin: .45rem 0 0;
}
.hpbar span.health-fill-green { background: #4fc56b; }
.hpbar span.health-fill-yellow { background: #e2cf45; }
.hpbar span.health-fill-orange { background: #e88b34; }
.hpbar span.health-fill-red { background: #d9433f; }

/* Fenêtre Blessures / Soins — disposition compacte en deux rangées. */
.health-action-card { overflow: hidden; gap: .65rem; }
.health-action-card .settings-head { flex: 0 0 auto; }
.health-picker-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) 150px;
  align-items: stretch;
  gap: .7rem;
  min-height: 0;
  padding: .65rem;
  border: 1px solid rgba(var(--accent-rgb), .34);
  border-radius: .8rem;
  background: rgba(0,0,0,.18);
}
.health-picker-heading { display: flex; align-items: flex-start; padding: .35rem; color: #f0d999; text-transform: uppercase; font-size: 1.05rem; }
.health-picker-content, .health-picker-content > div { min-width: 0; }
.health-picker-row .health-source-grid,
.health-picker-row .health-target-choice-grid {
  display: grid;
  grid-template-columns: repeat(var(--health-choice-count, 1), minmax(90px, 142px));
  gap: .55rem;
  width: 100%;
  overflow: hidden;
  justify-content: start;
}
.health-picker-row .health-source-grid[hidden],
.health-picker-row .health-target-choice-grid[hidden],
.health-picker-content > [hidden] { display: none !important; }
.health-picker-row .health-source-choice,
.health-picker-row .health-target-choice { min-width: 0; opacity: 1; }
.health-picker-row .health-source-choice { grid-template-rows: minmax(66px, 1fr) auto; min-height: 128px; }
.health-picker-row .health-source-choice > span,
.health-picker-row .health-target-toggle > span { width: 76px; height: 76px; border-radius: .55rem; }
.health-picker-row .health-source-choice strong,
.health-picker-row .health-target-choice strong { white-space: normal; line-height: 1.05; overflow-wrap: anywhere; text-align: center; }
.health-picker-row .health-target-choice { display: block; min-height: 128px; }
.health-picker-row .health-target-toggle { display: grid; grid-template-columns: 1fr; grid-template-rows: minmax(76px,1fr) auto; justify-items: center; gap: .35rem; height: 100%; text-align: center; }
.health-picker-row .health-target-toggle > span { grid-row: auto; }
.health-picker-row .selected { border-color: #ff514b; box-shadow: 0 0 0 2px rgba(255,61,55,.55), inset 0 0 22px rgba(140,20,17,.28); }
.health-camp-swap { display: grid; place-items: center; align-content: center; gap: .25rem; min-width: 0; font-weight: 850; }
.health-camp-swap > span { font-size: 2rem; }
.health-camp-swap small { font-size: .8rem; }
.health-amount-panel { display: grid; gap: .65rem; justify-items: center; min-height: 0; }
.health-amount-controls { display: grid; grid-template-columns: repeat(3, minmax(62px,auto)) minmax(130px,220px) repeat(3,minmax(62px,auto)); gap: .45rem; align-items: stretch; }
.health-amount-controls button { min-height: 54px; padding: .55rem .8rem; font-size: 1.15rem; font-weight: 900; }
.health-amount-controls input { min-width: 0; height: 54px; text-align: center; font-size: 1.7rem; font-weight: 950; }
.health-mode-switch { display: grid; grid-template-columns: repeat(3,1fr); width: min(900px,100%); }
.health-mode-switch button { min-height: 54px; border-radius: 0; font-size: 1.12rem; font-weight: 950; text-transform: uppercase; }
.health-mode-switch button:first-child { border-radius: .65rem 0 0 .65rem; background: #4e211f; border-color: #9f443f; }
.health-mode-switch button:last-child { border-radius: 0 .65rem .65rem 0; background: #193e62; border-color: #3978ad; }
.health-mode-switch [data-health-mode="damage"].active { background: #a72722; box-shadow: inset 0 4px 8px rgba(0,0,0,.55); }
.health-mode-switch [data-health-mode="heal"].active { background: #31854a; box-shadow: inset 0 4px 8px rgba(0,0,0,.55); }
.health-mode-switch [data-health-mode="temp"].active { background: #286da7; box-shadow: inset 0 4px 8px rgba(0,0,0,.55); }
#amountPrimaryAction { width: min(1080px,100%); min-height: 62px; font-size: 1.3rem; }
.health-action-choice.temp { background: linear-gradient(#3d8dcc,#20547e); border-color: #71b9eb; }
.health-temp-actions { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .55rem; width: min(1080px,100%); }
.health-temp-actions[hidden] { display: none; }
.health-temp-actions button { min-width: 0; min-height: 62px; padding: .7rem .85rem; font-size: 1.05rem; font-weight: 900; }
.health-temp-remove { background: #293b50; border-color: #5681aa; }
.health-temp-clear { background: #4a2830; border-color: #a85e6d; }
.health-temp-add { background: linear-gradient(#3d8dcc,#20547e); border-color: #71b9eb; }
.health-action-card > .settings-actions { margin-top: 0; }
.session-summary-generate-actions { justify-content: stretch; }
.session-summary-generate-actions #sessionSummaryAiBtn { width: 100%; min-height: 54px; font-size: 1.05rem; }
@media (max-width: 900px) {
  .health-picker-row { grid-template-columns: 105px minmax(0,1fr) 105px; }
  .health-picker-row .health-source-choice > span,
  .health-picker-row .health-target-toggle > span { width: 58px; height: 58px; }
  .health-amount-controls { grid-template-columns: repeat(3,50px) minmax(90px,1fr) repeat(3,50px); }
  .health-amount-controls button { padding: .35rem; }
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card.exploration-card-matrix {
  display: grid;
  grid-template-columns: 112px 92px minmax(150px, 1fr);
  grid-template-rows: 112px auto;
  align-items: center;
  gap: .5rem .75rem;
  padding: .75rem;
}
.exploration-player-visual {
  grid-column: 1;
  grid-row: 1;
  display: grid;
  place-items: center;
}
.player-body:not(.player-mobile-body).mode-exploration .exploration-card.exploration-card-matrix .player-card-portrait {
  grid-column: auto;
  grid-row: auto;
  width: 108px;
  height: 108px;
  min-height: 108px;
}
.exploration-target-visual {
  grid-column: 2;
  grid-row: 1;
  display: grid;
  place-items: center;
}
.exploration-card.exploration-card-matrix .player-focus-badge {
  width: 78px;
  height: 78px;
}
.exploration-card.exploration-card-matrix .player-focus-badge > span {
  width: 68px;
  height: 68px;
}
.exploration-card.exploration-card-matrix .player-focus-badge.empty-focus > span {
  border: 2px dashed rgba(196,178,255,.42);
  background: radial-gradient(circle, rgba(105,76,145,.2), rgba(22,17,30,.82));
}
.exploration-health-cell {
  grid-column: 3;
  grid-row: 1 / span 2;
  align-self: stretch;
  display: grid;
  grid-template-rows: auto 1fr;
  align-content: start;
  gap: .5rem;
  min-width: 0;
  padding-top: .08rem;
}
.exploration-matrix-hpbar {
  width: 100%;
  height: 1.92rem !important;
  margin: 0;
}
.exploration-player-name {
  grid-column: 1;
  grid-row: 2;
  align-self: start;
  text-align: center;
}
.exploration-player-name h3 {
  margin: 0;
  overflow: visible;
  font-size: .92rem;
  line-height: 1.15;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  max-height: none;
}
.exploration-target-name {
  grid-column: 2;
  grid-row: 2;
  min-height: 1.5rem;
  align-self: start;
  overflow: visible;
  color: #e8dcff;
  font-size: .78rem;
  font-weight: 850;
  text-align: center;
  line-height: 1.15;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}
.exploration-status-cell {
  align-self: start;
  width: 100%;
  min-width: 0;
  overflow: visible;
}
.exploration-status-cell .exploration-visible-effects {
  display: flex;
  width: 100%;
  max-width: 100%;
  justify-content: flex-start;
  flex-wrap: wrap;
  overflow: visible;
  gap: .38rem;
}
.exploration-status-cell .effect-chip,
.exploration-status-cell .stat-chip {
  flex: 0 1 auto;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

/* La matrice combat doit gagner sur les anciennes règles compactes/3 colonnes. */
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix,
.player-body:not(.player-mobile-body).mode-combat.player-columns-3 .player-card.player-card-matrix,
.player-body:not(.player-mobile-body).mode-combat.player-columns-3.compact-ui .player-card.player-card-matrix {
  grid-template-columns: 92px 78px minmax(150px, 1fr);
  grid-template-rows: auto;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .exploration-player-name {
  min-width: 0;
  width: 100%;
}
.player-body:not(.player-mobile-body).mode-combat .player-card.player-card-matrix .exploration-player-name h3,
.player-body:not(.player-mobile-body).mode-combat.compact-ui .player-card.player-card-matrix .exploration-player-name h3,
.player-body:not(.player-mobile-body).mode-combat.player-columns-3 .player-card.player-card-matrix .exploration-player-name h3 {
  display: block;
  width: 100%;
  max-width: none;
  max-height: none;
  overflow: visible;
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: normal;
  text-overflow: clip;
  line-height: 1.15;
}
@media (max-width: 720px) {
  .player-body:not(.player-mobile-body).mode-exploration .exploration-card.exploration-card-matrix {
    grid-template-columns: 88px 76px minmax(120px, 1fr);
    grid-template-rows: 88px auto;
  }
  .player-body:not(.player-mobile-body).mode-exploration .exploration-card.exploration-card-matrix .player-card-portrait {
    width: 84px;
    height: 84px;
    min-height: 84px;
  }
}
@media (max-width: 980px) {
  .health-action-layout { grid-template-columns: 1fr; }
  .health-action-center { grid-row: 1; }
}

/* v0.267 — déplacements temporels visibles sur la carte */
.npc-marker.npc-marker-moving {
  z-index: 6;
  transition: left .9s cubic-bezier(.22,.75,.25,1), top .9s cubic-bezier(.22,.75,.25,1);
  pointer-events: none;
}
.npc-marker.npc-marker-arriving > span { animation: npc-marker-arrival .9s ease; }
@keyframes npc-marker-arrival {
  0%, 65% { transform: scale(1); }
  82% { transform: scale(1.18); box-shadow: 0 0 0 8px rgba(105,201,255,.3), 0 3px 12px #000; }
  100% { transform: scale(1); }
}
.npc-movement-notice {
  position: absolute;
  top: 10px;
  right: 10px;
  z-index: 6;
  display: grid;
  gap: 2px;
  max-width: min(330px, calc(100% - 20px));
  padding: 9px 12px;
  border: 1px solid rgba(105,201,255,.7);
  border-radius: 10px;
  background: rgba(15,32,40,.94);
  color: #edf9ff;
  box-shadow: 0 7px 22px rgba(0,0,0,.45);
  pointer-events: none;
}
.npc-movement-notice[hidden] { display: none !important; }
.npc-movement-notice strong { color: #79d2ff; font-size: .82rem; text-transform: uppercase; letter-spacing: .06em; }
.npc-movement-notice span { font-size: .82rem; }
.npc-movement-notice small { color: #c5dae3; }

/* v0.270 — cartes multiples, zoom, déplacement et lieux propres à chaque carte */
.npc-map-toolbar { flex-wrap: wrap; }
.npc-map-picker {
  display: grid !important;
  grid-template-columns: auto minmax(120px, 190px);
  gap: .35rem !important;
  align-items: center;
}
.npc-map-picker > span { color: #d9c8aa; font-size: .8rem; }
.npc-map-picker select { min-height: 36px; height: 36px; padding: .25rem 1.8rem .25rem .45rem; }
.npc-global-search { position: relative; flex: 1 1 360px; min-width: 250px; max-width: 620px; }
.npc-global-search > label { position: absolute; z-index: 1; left: .65rem; top: .43rem; margin: 0; color: #e8d6af; font-size: .78rem; pointer-events: none; }
.npc-global-search > input { width: 100%; min-height: 40px; padding: .35rem .7rem .35rem 8.8rem; border-color: rgba(225,173,77,.48); background: rgba(17,13,10,.94); }
.npc-global-search-results { position: absolute; z-index: 500; top: calc(100% + 5px); left: 0; right: 0; max-height: min(440px,55vh); overflow-y: auto; display: grid; gap: 4px; padding: 6px; border: 1px solid rgba(225,173,77,.55); border-radius: 12px; background: rgba(20,15,11,.99); box-shadow: 0 18px 45px rgba(0,0,0,.58); }
.npc-global-search-results[hidden] { display: none !important; }
.npc-global-search-results button { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 1px 12px; min-height: 58px; padding: .45rem .65rem; text-align: left; }
.npc-global-search-results button strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #fff1ce; }
.npc-global-search-results button span { color: #79dba8; font-size: .78rem; font-weight: 800; }
.npc-global-search-results button small { grid-column: 1 / -1; color: #c9b99c; }
.npc-global-search-results > p { margin: .5rem; color: #c9b99c; }
.npc-map {
  cursor: grab;
  touch-action: none;
  user-select: none;
}
.npc-map.dragging { cursor: grabbing; }
.npc-map.placing-locations { cursor: crosshair; }
.npc-map > img {
  pointer-events: none;
  transform-origin: center center;
  will-change: transform;
  user-select: none;
  -webkit-user-drag: none;
}
.npc-map-placeholder[hidden] { display: none !important; }
.npc-movement-notice { top: 58px; }
.npc-map-controls {
  position: absolute;
  top: 9px;
  right: 9px;
  z-index: 9;
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 5px;
  border: 1px solid rgba(225,173,77,.52);
  border-radius: 10px;
  background: rgba(24,19,14,.92);
  box-shadow: 0 5px 18px rgba(0,0,0,.42);
  touch-action: auto;
}
.npc-map-controls button { min-width: 34px; min-height: 32px; height: 32px; padding: .2rem .5rem; font-size: .78rem; }
.npc-map-controls button:first-child,
.npc-map-controls button:nth-of-type(2) { font-size: 1.15rem; font-weight: 850; }
.npc-map-controls output { min-width: 52px; color: #f1dfbd; text-align: center; font-size: .76rem; font-weight: 750; }
.npc-map-manager {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 10;
  width: min(390px, calc(100% - 20px));
  padding: 11px;
  border: 1px solid rgba(225,173,77,.72);
  border-radius: 12px;
  background: rgba(24,19,14,.97);
  color: #f4ead7;
  box-shadow: 0 10px 30px rgba(0,0,0,.58);
  cursor: default;
  touch-action: auto;
}
.npc-map-manager[hidden] { display: none !important; }
.npc-map-manager form { display: grid; gap: 8px; }
.npc-map-manager-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #f2c766; }
.npc-map-manager-head button { min-width: 34px; min-height: 32px; padding: .2rem; }
.npc-map-manager label { display: grid; gap: 3px; color: #d8c9ae; font-size: .82rem; }
.npc-map-manager input,
.npc-map-manager select { min-height: 36px; }
.npc-map-manager-actions { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 6px; }
.npc-map-manager-actions button { min-height: 36px; padding: .3rem .45rem; }
.npc-map-manager small { color: #baa98d; }
.npc-placement-choices button { display: inline-flex; align-items: center; gap: 4px; }
.npc-placement-choices button.unplaced { border-style: dashed; color: #cdbfa7; }
.npc-placement-choices button.placed > span { color: #67d686; }
.npc-placement-choices button.unplaced > span { color: #caa462; }
.npc-elsewhere-toggle {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 8;
  min-height: 34px;
  padding: .3rem .65rem;
  border-color: rgba(105,201,255,.64);
  background: rgba(20,48,62,.92);
  color: #d8f1ff;
}
.npc-elsewhere-panel {
  position: absolute;
  right: 10px;
  bottom: 52px;
  z-index: 9;
  display: grid;
  gap: 5px;
  width: min(330px, calc(100% - 20px));
  max-height: min(390px, calc(100% - 80px));
  padding: 10px;
  overflow: auto;
  border: 1px solid rgba(105,201,255,.6);
  border-radius: 11px;
  background: rgba(18,31,37,.96);
  box-shadow: 0 10px 28px rgba(0,0,0,.55);
  cursor: default;
  touch-action: auto;
}
.npc-elsewhere-panel[hidden],
.npc-elsewhere-toggle[hidden] { display: none !important; }
.npc-elsewhere-panel > strong { color: #79d2ff; }
.npc-elsewhere-panel > small { color: #b8cbd3; }
.npc-elsewhere-panel button { display: grid; grid-template-columns: 1fr auto; gap: 8px; min-height: 34px; padding: .3rem .5rem; text-align: left; }
.npc-elsewhere-panel button small { color: #b9ad99; }
.npc-no-placed-locations { align-self: center; padding: .6rem; color: #baa98d; font-size: .82rem; }
@media (max-width: 760px) {
  .npc-map-controls { top: auto; bottom: 9px; left: 9px; right: auto; }
  .npc-elsewhere-toggle { bottom: 56px; }
  .npc-elsewhere-panel { bottom: 98px; }
  .npc-map-manager-actions { grid-template-columns: 1fr; }
}

/* v0.269 — éditeur visuel des horaires */
.npc-current-activity {
  display: grid;
  gap: 2px;
  margin: .55rem 0;
  padding: .55rem .65rem;
  border: 1px solid rgba(105,201,255,.28);
  border-radius: 10px;
  background: rgba(37,67,77,.28);
}
.npc-current-activity > span { color: #79d2ff; font-size: .7rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.npc-current-activity > small { color: #c8d6da; }
.npc-move-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .35rem; margin: .35rem 0; }
.npc-move-actions button { min-height: 42px; padding: .35rem .45rem; font-size: .8rem; }
.npc-schedule-board {
  display: grid;
  gap: .55rem;
  margin-bottom: .65rem;
  padding: .7rem;
  border: 1px solid rgba(225,173,77,.28);
  border-radius: 12px;
  background: rgba(20,16,12,.34);
}
.npc-schedule-head { display: grid; grid-template-columns: minmax(180px,.7fr) minmax(220px,.8fr) minmax(420px,1.8fr); gap: .6rem; align-items: end; }
.npc-schedule-head h3 { margin: 0; font-size: 1.2rem; }
.npc-open-full-schedule{width:100%;margin:0 0 .65rem}
.npc-full-schedule-dialog{width:min(1500px,96vw);max-width:none;border:1px solid #806838;border-radius:18px;background:#17130f;color:#f7ead2;padding:0}
.npc-full-schedule-dialog::backdrop{background:rgba(0,0,0,.78)}
.npc-full-schedule-card{padding:1.1rem;max-height:90vh;overflow:auto}
.npc-full-schedule-card>header,.npc-full-schedule-card>footer,.npc-full-schedule-tools{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.npc-full-schedule-card>header{border-bottom:1px solid #5c482b;margin-bottom:1rem}.npc-full-schedule-card>header h2,.npc-full-schedule-card>header p{margin:.2rem 0}
.npc-full-schedule-tools{margin-bottom:.75rem}.npc-full-schedule-tools label{min-width:280px;margin:0}
.npc-full-schedule-row{display:grid;grid-template-columns:minmax(245px,.8fr) minmax(220px,1.2fr) minmax(200px,1fr) minmax(180px,.8fr) 48px;gap:.55rem;align-items:center;padding:.55rem;border:1px solid #4f402e;border-radius:12px;margin-bottom:.5rem;background:#211b15}
.npc-full-time{display:grid;grid-template-columns:1fr auto 1fr;gap:.35rem;align-items:center}.npc-full-schedule-row input,.npc-full-schedule-row select{width:100%;min-width:0}.npc-full-days{height:3.4rem}.npc-full-remove{height:44px}
.npc-full-schedule-card>footer{border-top:1px solid #5c482b;margin-top:1rem;padding-top:1rem;justify-content:flex-end}
@media(max-width:1000px){.npc-full-schedule-row{grid-template-columns:1fr 1fr}.npc-full-remove{grid-column:2;justify-self:end}.npc-full-schedule-tools{align-items:stretch;flex-direction:column}}
.npc-schedule-head label { margin: 0; }
.npc-planning-days,
.npc-day-picker { display: flex; flex-wrap: wrap; gap: .28rem; }
.npc-planning-days button,
.npc-day-picker button { min-width: 42px; min-height: 34px; padding: .25rem .42rem; }
.npc-planning-days button.active,
.npc-day-picker button.active { border-color: #69c9ff; background: #17445c; color: #fff; box-shadow: 0 0 0 2px rgba(105,201,255,.2); }
.npc-day-field { min-width: 0; margin: 0; padding: .42rem; border: 1px solid rgba(225,173,77,.22); border-radius: 9px; }
.npc-day-field legend { padding: 0 .25rem; color: var(--muted); font-size: .78rem; }
.npc-schedule-diagnostics { display: flex; flex-wrap: wrap; gap: .4rem; }
.npc-schedule-diagnostics span { padding: .28rem .5rem; border-radius: 999px; background: rgba(255,255,255,.06); font-size: .76rem; }
.npc-schedule-diagnostics .ok { color: #7fe09c; }
.npc-schedule-diagnostics .warning { color: #ff9e91; background: rgba(171,54,42,.22); }
.npc-schedule-diagnostics .info { color: #e7c985; }
.npc-preview-control { display: grid; grid-template-columns: minmax(260px,1fr) 62px minmax(320px,1.25fr); gap: .55rem; align-items: center; }
.npc-preview-control label { margin: 0; }
.npc-preview-control output { color: #79d2ff; font-weight: 900; text-align: center; }
#npcSchedulePreviewResult { display: grid; gap: 1px; padding: .38rem .55rem; border-radius: 8px; background: rgba(23,68,92,.3); }
#npcSchedulePreviewResult span,
#npcSchedulePreviewResult small { color: #c7d7dd; }
.npc-timeline-axis { display: flex; justify-content: space-between; padding: 0 .2rem; color: #b8aa91; font-size: .72rem; }
.npc-timeline {
  position: relative;
  min-height: 54px;
  overflow: hidden;
  border: 1px solid rgba(225,173,77,.25);
  border-radius: 10px;
  background-color: rgba(13,20,18,.72);
  background-image: linear-gradient(90deg, transparent 24.8%, rgba(225,173,77,.18) 25%, transparent 25.2%, transparent 49.8%, rgba(225,173,77,.18) 50%, transparent 50.2%, transparent 74.8%, rgba(225,173,77,.18) 75%, transparent 75.2%);
}
.npc-timeline-bar {
  position: absolute;
  display: grid;
  align-content: center;
  min-width: 8px;
  height: 29px;
  min-height: 29px;
  padding: .15rem .38rem;
  overflow: hidden;
  border: 1px solid rgba(105,201,255,.62);
  border-radius: 7px;
  background: linear-gradient(180deg,#245d75,#173d50);
  color: #fff;
  text-align: left;
  white-space: nowrap;
}
.npc-timeline-bar strong,
.npc-timeline-bar small { overflow: hidden; text-overflow: ellipsis; }
.npc-timeline-bar strong { font-size: .74rem; }
.npc-timeline-bar small { color: #d2e3ea; font-size: .64rem; }
.npc-preview-time-line { position: absolute; top: 0; bottom: 0; z-index: 4; width: 2px; background: #f3c04e; box-shadow: 0 0 8px #f3c04e; pointer-events: none; }
.npc-preview-time-line::before { content: ''; position: absolute; top: 0; left: -4px; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 7px solid #f3c04e; }
.npc-timeline-empty { margin: 1rem; color: #b8aa91; text-align: center; }
.npc-slot-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .35rem; }
.npc-slot-list article { display: grid; grid-template-columns: minmax(0,1fr) auto auto; gap: .35rem; align-items: center; padding: .38rem .48rem; border: 1px solid rgba(225,173,77,.17); border-radius: 8px; background: rgba(255,255,255,.025); }
.npc-slot-list article > div { display: grid; min-width: 0; }
.npc-slot-list article span { overflow: hidden; color: #b8aa91; font-size: .74rem; text-overflow: ellipsis; white-space: nowrap; }
.npc-slot-list article button { min-height: 32px; padding: .25rem .42rem; font-size: .72rem; }
@media (max-width: 1050px) {
  .npc-schedule-head { grid-template-columns: 1fr 1fr; }
  .npc-planning-days { grid-column: 1 / -1; }
  .npc-preview-control { grid-template-columns: 1fr 62px; }
  #npcSchedulePreviewResult { grid-column: 1 / -1; }
  .npc-slot-list { grid-template-columns: 1fr; }
}

/* v0.271 — portrait cliquable des PNJ */
.npc-avatar {
  position: relative;
  flex: 0 0 auto;
  min-width: 62px;
  min-height: 62px;
  padding: 0 !important;
  overflow: hidden;
  border: 2px solid rgba(225,173,77,.22) !important;
  color: #8e55d8;
  cursor: pointer;
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}
.npc-avatar:hover,
.npc-avatar:focus-visible {
  border-color: #e1ad4d !important;
  box-shadow: 0 0 0 3px rgba(225,173,77,.2);
  transform: scale(1.035);
}
.npc-avatar > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.npc-avatar-edit {
  position: absolute;
  right: 2px;
  bottom: 2px;
  display: grid;
  place-items: center;
  width: 23px;
  height: 23px;
  border: 1px solid rgba(255,255,255,.5);
  border-radius: 50%;
  background: rgba(20,16,12,.9);
  color: #fff;
  font-size: .72rem;
  line-height: 1;
  box-shadow: 0 2px 7px rgba(0,0,0,.7);
}
.npc-avatar.uploading { pointer-events: none; opacity: .72; }
.npc-avatar.uploading .npc-avatar-edit { animation: npc-avatar-upload 1s ease-in-out infinite; }
@keyframes npc-avatar-upload { 50% { transform: scale(.72); opacity: .55; } }

/* v0.277 — conversation directe et contrôlée avec un PNJ */
.npc-conversation { gap: .55rem; }
.npc-conversation-head { display: grid; grid-template-columns: minmax(0,1fr) minmax(150px,.8fr); gap: .55rem; align-items: end; }
.npc-conversation-head h4 { margin: 0 0 .15rem; font-size: 1.05rem; }
.npc-conversation-head small { color: #b8aa91; }
.npc-conversation-head label { margin: 0; }
.npc-conversation-safety { display: grid; gap: 2px; padding: .48rem .58rem; border: 1px solid rgba(127,224,156,.36); border-radius: 9px; background: rgba(35,91,53,.2); }
.npc-conversation-safety strong { color: #7fe09c; font-size: .76rem; letter-spacing: .06em; text-transform: uppercase; }
.npc-conversation-safety span { color: #d2ded4; font-size: .78rem; line-height: 1.35; }
.npc-conversation-log { display: grid; gap: .42rem; min-height: 150px; max-height: 330px; padding: .52rem; overflow-y: auto; border: 1px solid rgba(225,173,77,.24); border-radius: 10px; background: rgba(10,15,14,.64); }
.npc-conversation-message { display: grid; gap: .2rem; width: min(92%,520px); padding: .48rem .58rem; border-radius: 10px; }
.npc-conversation-message strong { font-size: .74rem; }
.npc-conversation-message p { margin: 0; color: #f0e5d4; line-height: 1.42; white-space: pre-wrap; }
.npc-conversation-message small { color: #c5b999; font-style: italic; line-height: 1.3; }
.npc-conversation-message.interlocutor { justify-self: end; border: 1px solid rgba(105,201,255,.34); background: rgba(31,87,112,.42); }
.npc-conversation-message.interlocutor strong { color: #79d2ff; }
.npc-conversation-message.npc { justify-self: start; border: 1px solid rgba(225,173,77,.38); background: rgba(93,64,29,.42); }
.npc-conversation-message.npc strong { color: #eac372; }
.npc-conversation-empty { align-self: center; padding: 1.2rem .5rem; color: #b8aa91; text-align: center; }
.npc-conversation-thinking { padding: .45rem .55rem; border-radius: 8px; background: rgba(142,85,216,.18); color: #d3b8fa; font-size: .8rem; animation: npc-conversation-pulse 1.5s ease-in-out infinite; }
@keyframes npc-conversation-pulse { 50% { opacity: .58; } }
.npc-conversation-status { margin: 0; padding: .4rem .5rem; border-radius: 7px; background: rgba(105,201,255,.1); color: #ccecff; font-size: .78rem; line-height: 1.35; }
.npc-conversation-status.error { background: rgba(171,54,42,.2); color: #ffb4a9; }
.npc-conversation-status.saved { background: rgba(35,91,53,.24); color: #9cebb3; }
.npc-conversation-compose { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .45rem; align-items: stretch; }
.npc-conversation-compose textarea { min-height: 74px; resize: vertical; }
.npc-conversation-compose button { min-width: 112px; }
.npc-conversation-actions { display: grid; grid-template-columns: minmax(0,1.3fr) minmax(0,1fr); gap: .42rem; }
.npc-conversation-actions button { min-height: 42px; }
.npc-conversation-actions #npcConversationFinish { grid-column: 1 / -1; }
.npc-conversation-note { color: #b8aa91; line-height: 1.35; }
.npc-conversation-fallback { padding-top: .35rem; border-top: 1px solid rgba(225,173,77,.18); }
.npc-conversation-fallback summary { color: #cbb98f; cursor: pointer; font-size: .8rem; }
.npc-conversation-fallback textarea { margin-top: .5rem; font-size: .75rem; }
@media (max-width: 1160px) {
  .npc-conversation-head,
  .npc-conversation-compose { grid-template-columns: 1fr; }
  .npc-conversation-compose button { min-height: 44px; }
}
.aide-mj-toggle.enabled {
  color: #bff2c8;
  background: rgba(53, 132, 76, .22);
  border-color: rgba(109, 203, 132, .55);
}

.aide-mj-toggle.disabled {
  color: #efc1b7;
  background: rgba(129, 54, 43, .18);
  border-color: rgba(199, 105, 87, .42);
}

.aide-mj-account-control {
  display: grid;
  gap: .65rem;
  margin: .8rem 0 1rem;
  padding: .9rem;
  border: 1px solid rgba(201, 154, 67, .35);
  border-radius: 12px;
  background: rgba(40, 31, 22, .45);
}

.aide-mj-account-control .button {
  width: fit-content;
  text-decoration: none;
}
/* v0.280 — horloge de jeu, repos long et avis Aide-MJ */
.campaign-clock-stack {
  display: grid;
  gap: .35rem;
  min-width: min(28rem, 48vw);
}
.long-rest-button {
  width: 100%;
  min-height: 2.1rem;
  padding: .35rem .7rem;
  border-color: color-mix(in srgb, var(--accent) 45%, var(--line));
  background: color-mix(in srgb, #24335f 42%, var(--panel));
  color: var(--text);
  font-weight: 850;
  font-size: .86rem;
}
.long-rest-button.available {
  border-color: color-mix(in srgb, #7bdc91 72%, var(--line));
  background: color-mix(in srgb, #22643a 38%, var(--panel));
}
.long-rest-button:disabled {
  opacity: .86;
  cursor: default;
}
.exploration-clock-row {
  display: flex;
  align-items: center;
  gap: .9rem;
  flex-wrap: wrap;
}
.player-long-rest-status {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  padding: .42rem .65rem;
  border: 1px solid color-mix(in srgb, #899de8 58%, var(--line));
  border-radius: 999px;
  background: color-mix(in srgb, #24335f 40%, var(--panel));
  color: var(--text);
  font-size: .88rem;
  font-weight: 850;
  line-height: 1.1;
}
.player-long-rest-status.available {
  border-color: color-mix(in srgb, #7bdc91 62%, var(--line));
  background: color-mix(in srgb, #22643a 34%, var(--panel));
}
.mj-activity-toasts {
  position: fixed;
  z-index: 12000;
  right: 1rem;
  bottom: 1rem;
  display: grid;
  gap: .55rem;
  width: min(25rem, calc(100vw - 2rem));
  pointer-events: none;
}
.mj-activity-toast {
  position: relative;
  display: grid;
  gap: .25rem;
  padding: .8rem 2.7rem .8rem .9rem;
  border: 1px solid color-mix(in srgb, #7bdc91 65%, var(--line));
  border-radius: .8rem;
  background: color-mix(in srgb, #183625 90%, var(--panel));
  box-shadow: 0 14px 38px rgba(0,0,0,.38);
  pointer-events: auto;
}
.mj-activity-toast strong { color: #b9f7c7; }
.mj-activity-toast span { line-height: 1.35; }
.mj-activity-toast-close {
  position: absolute;
  top: .42rem;
  right: .42rem;
  min-width: 2rem;
  min-height: 2rem;
  padding: 0;
  border-color: transparent;
  background: transparent;
  color: var(--text);
  font-size: 1.25rem;
}
@media (max-width: 760px) {
  .campaign-clock-stack { min-width: 0; width: 100%; }
}

/* v0.284 — campagnes D&D/Nimble */
.active-rule-system-badge,
.campaign-system-badge {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  padding: .22rem .55rem;
  border: 1px solid color-mix(in srgb, var(--accent) 55%, var(--line));
  border-radius: 999px;
  background: color-mix(in srgb, var(--accent) 14%, var(--panel));
  color: var(--accent);
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .035em;
  line-height: 1.05;
  vertical-align: middle;
  white-space: nowrap;
}
.rules-nimble .active-rule-system-badge,
.campaign-system-nimble {
  border-color: rgba(117, 204, 228, .62);
  background: rgba(36, 105, 133, .3);
  color: #a9edff;
}
.campaign-system-line {
  display: flex;
  align-items: center;
  gap: .55rem;
  min-width: 0;
}
.campaign-system-line em {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.campaign-system-picker {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .75rem;
  margin: .85rem 0;
  padding: .85rem;
  border: 1px solid var(--line);
  border-radius: 14px;
}
.campaign-system-picker legend {
  padding: 0 .4rem;
  color: var(--accent);
  font-weight: 900;
}
.campaign-system-choice {
  display: flex;
  align-items: flex-start;
  gap: .65rem;
  min-height: 5rem;
  padding: .8rem;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--panel-2) 88%, transparent);
  cursor: pointer;
}
.campaign-system-choice:has(input:checked) {
  border-color: var(--accent);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 18%, transparent);
}
.campaign-system-choice input { margin-top: .2rem; }
.campaign-system-choice span { display: grid; gap: .25rem; }
.campaign-system-choice strong { color: var(--text); }
.campaign-system-choice small { color: var(--muted); line-height: 1.35; }

.nimble-turn-resources,
.nimble-player-resources,
.nimble-sheet-resources {
  border: 1px solid rgba(117, 204, 228, .4);
  border-radius: 12px;
  background: linear-gradient(145deg, rgba(27, 92, 118, .28), rgba(var(--panel-rgb), .78));
}
.nimble-turn-resources {
  display: grid;
  gap: .6rem;
  margin-top: .7rem;
  padding: .7rem;
}
.nimble-resource-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .6rem;
}
.nimble-resource-heading strong { color: #a9edff; }
.nimble-reset-turn {
  min-height: 2rem;
  padding: .3rem .6rem;
  font-size: .76rem;
}
.nimble-monster-activation p {
  margin: 0;
  color: var(--muted);
  font-size: .8rem;
  line-height: 1.35;
}
.nimble-activation-badge {
  padding: .25rem .55rem;
  border: 1px solid rgba(117, 204, 228, .5);
  border-radius: 999px;
  color: #dff8ff;
  background: rgba(30, 115, 143, .3);
  font-size: .72rem;
  font-weight: 800;
}
.nimble-toggle-monster-order { width: 100%; }
.nimble-active-group {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
  gap: .7rem;
  width: 100%;
}
.nimble-active-group > article {
  display: grid;
  gap: .4rem;
  padding: .65rem;
  border: 1px solid rgba(117, 204, 228, .35);
  border-radius: 12px;
  background: rgba(20, 67, 82, .25);
}
.nimble-action-gems,
.nimble-reaction-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .4rem;
}
.nimble-action-gem,
.nimble-reaction {
  min-width: 0;
  min-height: 2.45rem;
  padding: .35rem;
  border-color: rgba(117, 204, 228, .55);
  background: rgba(30, 115, 143, .38);
  color: #e2faff;
}
.nimble-action-gem.used,
.nimble-reaction.used {
  opacity: .42;
  filter: grayscale(.7);
}
.nimble-reaction { display: grid; gap: .1rem; }
.nimble-reaction b { font-size: 1.05rem; }
.nimble-reaction span { overflow: hidden; font-size: .68rem; text-overflow: ellipsis; }
.nimble-player-resources {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .55rem;
  margin-top: .45rem;
  padding: .42rem .6rem;
  color: #dff8ff;
  font-size: .78rem;
}
.nimble-player-resources span { letter-spacing: .08em; }
.nimble-sheet-resources {
  display: grid;
  grid-template-columns: minmax(9rem, .8fr) minmax(16rem, 1.8fr);
  gap: .8rem;
  padding: .8rem;
}
.nimble-sheet-actions { display: grid; gap: .3rem; }
.nimble-sheet-actions > span,
.nimble-sheet-reactions em { color: var(--muted); font-style: normal; font-size: .75rem; }
.nimble-sheet-actions > strong { color: #a9edff; font-size: 1.45rem; }
.nimble-sheet-actions > div { display: flex; gap: .25rem; }
.nimble-sheet-actions i {
  width: .72rem;
  height: .72rem;
  border-radius: 50%;
  background: #75cce4;
  box-shadow: 0 0 0 2px rgba(117, 204, 228, .2);
}
.nimble-sheet-actions i.used { background: var(--line); box-shadow: none; }
.nimble-sheet-reactions {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: .4rem;
}
.nimble-sheet-reactions > span {
  display: grid;
  place-items: center;
  gap: .15rem;
  padding: .5rem .25rem;
  border: 1px solid rgba(117, 204, 228, .42);
  border-radius: 10px;
  background: rgba(30, 115, 143, .24);
}
.nimble-sheet-reactions b { color: #a9edff; font-size: 1.1rem; }
.nimble-sheet-reactions > span.used { opacity: .42; }

@media (max-width: 760px) {
  .campaign-system-picker { grid-template-columns: 1fr; }
  .campaign-system-line { align-items: flex-start; flex-direction: column; }
  .campaign-system-line em { white-space: normal; }
  .nimble-sheet-resources { grid-template-columns: 1fr; }
  .nimble-player-resources { align-items: flex-start; flex-direction: column; }
}

/* V0.286.11 — correction finale de grille : les trois docks partagent toujours la même rangée */
@media (min-width: 1241px) {
  body.mode-exploration .layout-mj,
  body.mode-exploration.compact-ui .layout-mj,
  html.mj-combatants-2 body.mode-exploration .layout-mj {
    grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
    align-items: start;
  }
  body.mode-exploration .mj-left-dock {
    display: flex;
    grid-column: 1;
    grid-row: 1;
  }
  body.mode-exploration .encounter-panel {
    grid-column: 2;
    grid-row: 1;
  }
  body.mode-exploration .mj-right-dock {
    grid-column: 3;
    grid-row: 1;
  }
  html.mj-encounter-generator-open body.mode-exploration .layout-mj,
  html.mj-encounter-generator-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: minmax(25rem, 430px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  }
  html.mj-scene-notes-open body.mode-exploration .layout-mj,
  html.mj-scene-notes-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(23rem, 400px);
  }
  html.mj-roll-journal-open body.mode-exploration .layout-mj,
  html.mj-roll-journal-open body.mode-exploration.compact-ui .layout-mj,
  html.mj-player-images-open body.mode-exploration .layout-mj,
  html.mj-xp-award-open body.mode-exploration .layout-mj {
    grid-template-columns: var(--mj-drawer-tab-width-v69) minmax(0, 1fr) minmax(32rem, .92fr);
  }
}

/* V0.286.16 — la fenêtre Rencontres passe réellement devant toute la zone de jeu */
html.mj-encounter-generator-open body.mode-exploration .mj-left-dock {
  z-index: 100;
  isolation: isolate;
}
html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
  z-index: 101;
  background:
    radial-gradient(circle at 12% 8%, rgba(var(--accent-rgb), .14), transparent 32rem),
    linear-gradient(180deg, rgb(var(--panel-2-rgb)), rgb(var(--panel-rgb)));
  opacity: 1;
}
html.mj-encounter-generator-open body.mode-exploration .encounter-generator-body {
  position: relative;
  z-index: 102;
  background: transparent;
}
html.mj-encounter-generator-open body.mode-exploration .encounter-generator-tab {
  position: relative;
  z-index: 103;
}

/* V0.286.14 — Rencontres s’ouvre comme une grande fenêtre superposée */
@media (min-width: 1241px) {
  html.mj-encounter-generator-open body.mode-exploration .layout-mj,
  html.mj-encounter-generator-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: 2.35rem minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock {
    width: 2.35rem;
    min-width: 2.35rem;
    max-width: 2.35rem;
    height: auto;
    min-height: 0;
    max-height: none;
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
    position: fixed;
    z-index: 60;
    inset: 5.15rem .8rem .8rem .8rem;
    width: auto;
    min-width: 0;
    max-width: none;
    height: auto;
    min-height: 0;
    max-height: none;
    grid-template-columns: 2.35rem minmax(0, 1fr);
    border-color: rgba(var(--accent-rgb), .65);
    box-shadow: 0 24px 80px rgba(0,0,0,.72), 0 0 0 9999px rgba(0,0,0,.42);
  }
  html.mj-encounter-generator-open body.mode-exploration .encounter-generator-tab {
    height: 100%;
    min-height: 100%;
  }
  html.mj-encounter-generator-open body.mode-exploration .encounter-generator-body {
    height: 100%;
    min-height: 0;
    max-height: none;
    overflow: auto;
    padding: 1.2rem 1.35rem 1.4rem;
  }
  html.mj-encounter-generator-open .encounter-generator-form {
    grid-template-columns: repeat(4, minmax(10rem, 1fr));
  }
  html.mj-encounter-generator-open .encounter-generator-form .full {
    grid-column: 1 / -1;
  }
  html.mj-encounter-generator-open .encounter-detected-context {
    max-width: none;
  }
  html.mj-encounter-generator-open .encounter-suggestion-card {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
  }
  html.mj-encounter-generator-open .encounter-suggestion-card > header,
  html.mj-encounter-generator-open .encounter-budget,
  html.mj-encounter-generator-open .encounter-suggestion-actions {
    grid-column: 1 / -1;
  }
}

/* V0.286.12 — exploration contenue dans la fenêtre, onglet Rencontres plus discret */
body.mode-exploration {
  overflow-x: hidden;
  overflow-x: clip;
}
body.mode-exploration .layout-mj {
  width: 100%;
  max-width: 100%;
  min-width: 0;
}
body.mode-exploration .layout-mj > *,
body.mode-exploration .encounter-panel,
body.mode-exploration .combatants-list,
body.mode-exploration .mj-combatant-column {
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1241px) {
  body.mode-exploration .layout-mj,
  body.mode-exploration.compact-ui .layout-mj,
  html.mj-combatants-2 body.mode-exploration .layout-mj {
    grid-template-columns: 2.35rem minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  }
  body.mode-exploration .mj-left-dock,
  body.mode-exploration .mj-left-dock .encounter-generator-panel.collapsed {
    width: 2.35rem;
    min-width: 2.35rem;
    max-width: 2.35rem;
  }
  body.mode-exploration .mj-left-dock .encounter-generator-panel,
  body.mode-exploration .mj-left-dock .encounter-generator-panel.collapsed {
    grid-template-columns: 2.35rem 0;
  }
  body.mode-exploration .encounter-generator-tab {
    width: 2.35rem;
    padding-inline: .08rem;
    font-size: .74rem;
  }
  html.mj-encounter-generator-open body.mode-exploration .layout-mj,
  html.mj-encounter-generator-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: minmax(23rem, 400px) minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock,
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
    width: 100%;
    min-width: 0;
    max-width: none;
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
    grid-template-columns: 2.35rem minmax(0, 1fr);
  }
}

/* V0.286.15 — priorité finale de la grande fenêtre Rencontres */
@media (min-width: 1241px) {
  html.mj-encounter-generator-open body.mode-exploration .layout-mj,
  html.mj-encounter-generator-open body.mode-exploration.compact-ui .layout-mj {
    grid-template-columns: 2.35rem minmax(0, 1fr) var(--mj-drawer-tab-width-v69);
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock {
    width: 2.35rem;
    min-width: 2.35rem;
    max-width: 2.35rem;
  }
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
    position: fixed;
    z-index: 60;
    inset: 5.15rem .8rem .8rem .8rem;
    width: auto;
    min-width: 0;
    max-width: none;
    height: auto;
    min-height: 0;
    max-height: none;
    grid-template-columns: 2.35rem minmax(0, 1fr);
  }
}

/* V0.286.17 — le contenu complet de la rencontre défile dans la grande fenêtre */
@media (min-width: 1241px) {
  html.mj-encounter-generator-open body.mode-exploration .mj-left-dock .encounter-generator-panel {
    overflow: hidden;
    align-items: stretch;
  }
  html.mj-encounter-generator-open body.mode-exploration .encounter-generator-body {
    box-sizing: border-box;
    align-self: stretch;
    height: auto;
    min-height: 0;
    max-height: calc(100vh - 6.75rem);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding-bottom: 3rem;
  }
  html.mj-encounter-generator-open body.mode-exploration .encounter-suggestion-result {
    min-height: min-content;
    padding-bottom: 1rem;
  }
}

/* V0.286.21 — réglages de rencontre compacts sur une seule ligne */
@media (min-width: 1241px) {
  html.mj-encounter-generator-open .encounter-generator-form {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    justify-content: flex-start;
    gap: .65rem .75rem;
  }
  html.mj-encounter-generator-open .encounter-generator-form > label:not(.full) {
    flex: 0 0 auto;
    width: auto;
  }
  html.mj-encounter-generator-open .encounter-generator-form select[name="difficulty"] { width: 9rem; }
  html.mj-encounter-generator-open .encounter-generator-form select[name="nature"] { width: 10rem; }
  html.mj-encounter-generator-open .encounter-generator-form select[name="scope"] { width: 11rem; }
  html.mj-encounter-generator-open .encounter-generator-form select[name="intent"] { width: 10rem; }
  html.mj-encounter-generator-open .encounter-generator-form select[name="reward"] { width: 9rem; }
  html.mj-encounter-generator-open .encounter-generator-form > .full {
    flex: 1 0 100%;
    width: 100%;
  }
}
.companion-manager-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.companion-manager-head h3{margin:0 0 4px}.companion-growth-guide{display:grid;grid-template-columns:repeat(5,minmax(135px,1fr));gap:8px;margin:12px 0}.companion-growth-guide article{display:flex;flex-direction:column;gap:3px;padding:11px;border:1px solid #8e7040;border-radius:12px;background:#201b17}.companion-growth-guide strong{color:#ffe29a}.companion-growth-guide span{font-weight:800}.companion-growth-guide small{color:#d7c6a4}.companion-workspace{margin-top:14px}.companion-sheet{margin-top:10px;padding:16px;border:2px solid #876b3e;border-radius:16px;background:#171411;color:#f5ead6}.companion-sheet-title{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.companion-sheet-title h3{margin:5px 0 2px;font-size:1.65rem}.companion-sheet-title p{margin:0;color:#dccaa8}.companion-badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#4b3270;color:#fff;font-weight:900}.companion-stat-grid{display:grid;grid-template-columns:repeat(6,minmax(110px,1fr));gap:8px;margin:14px 0}.companion-stat-grid span,.companion-attacks span{padding:10px;border:1px solid #69583b;border-radius:10px;background:#29231c;font-weight:800}.companion-training-box,.companion-incubation,.companion-attacks,.companion-history{margin-top:12px;padding:13px;border:1px solid #69583b;border-radius:12px;background:#211c17}.companion-training-box h4,.companion-attacks h4,.companion-history h4{margin:0 0 7px;color:#ffe19a}.companion-training-box p{margin:5px 0 10px}.companion-training-inputs{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px}.companion-attacks{display:flex;flex-wrap:wrap;gap:8px}.companion-attacks h4{flex-basis:100%}.companion-history p{margin:4px 0}.companion-ready{color:#71e894;font-weight:900}.companion-blocked{color:#ff8b83;font-weight:900}.companion-incubation{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.companion-manager-actions{display:flex;align-items:center;gap:10px}
.physical-training-rolls{display:grid;grid-template-columns:1fr 1fr 2fr;gap:10px;align-items:end}.physical-training-rolls input{font-size:1.25rem;font-weight:900;text-align:center}@media(max-width:700px){.physical-training-rolls{grid-template-columns:1fr 1fr}.physical-training-rolls button{grid-column:1/-1}}
@media(max-width:900px){.companion-growth-guide{grid-template-columns:repeat(2,minmax(140px,1fr))}.companion-stat-grid{grid-template-columns:repeat(2,minmax(120px,1fr))}.companion-training-inputs{grid-template-columns:1fr}.companion-sheet-title{flex-direction:column}}
.companion-quick-edit{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:9px;margin:12px 0;padding:12px;border:1px solid #69583b;border-radius:12px;background:#211c17}.companion-quick-edit button{align-self:end}@media(max-width:900px){.companion-quick-edit{grid-template-columns:repeat(2,minmax(130px,1fr))}}
.companion-title-actions{display:flex;flex-direction:column;align-items:flex-end;gap:9px}.companion-growth-history p{padding:7px 9px;border-left:4px solid #9c79ce;background:#181411}.companion-growth-history p strong{color:#ffe19a}
.player-companion-dialog{width:min(1100px,96vw)}.player-companion-card{max-height:92vh;overflow:auto}.player-companion-hero{display:grid;grid-template-columns:150px 1fr;gap:18px;align-items:center;padding:14px;border:2px solid #796044;border-radius:16px;background:#1d1915}.player-companion-hero img,.player-companion-placeholder{width:150px;height:150px;border-radius:18px;object-fit:cover}.player-companion-placeholder{display:grid;place-items:center;background:#382a49;font-size:4rem}.player-companion-hero h3{font-size:2rem;margin:0 0 5px}.player-companion-hero p,.player-companion-hero span{margin:3px 0;color:#dbc9a8}.player-companion-vitals{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin:12px 0;padding:12px;border-radius:12px;background:#251f19}.player-companion-vitals label{max-width:150px}.player-companion-vitals span{padding:11px;border:1px solid #77603e;border-radius:10px;font-weight:900}.player-companion-controls{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:10px}.player-companion-section{margin-top:12px;padding:13px;border:1px solid #705a3b;border-radius:12px;background:#211c17}.player-companion-section h4{margin:0 0 8px;color:#ffe19a}.player-companion-section article{display:flex;justify-content:space-between;gap:12px;padding:9px;margin:5px 0;border-radius:9px;background:#171411}.player-companion-section p{padding:7px;border-left:4px solid #9672c5}.player-companion-save{width:100%;margin-top:14px;font-size:1.15rem}@media(max-width:800px){.player-companion-hero{grid-template-columns:100px 1fr}.player-companion-hero img,.player-companion-placeholder{width:100px;height:100px}.player-companion-controls{grid-template-columns:repeat(2,minmax(120px,1fr))}}
.companion-help-button{min-width:52px;min-height:52px;border:2px solid #e3bf62;border-radius:50%;background:#3a2d1c;color:#ffe29a;font-size:1.65rem;font-weight:1000;line-height:1;cursor:pointer}.companion-help-button:hover,.companion-help-button[aria-expanded="true"]{background:#e3b84e;color:#17120b}.player-companion-hero{grid-template-columns:150px 1fr auto}.companion-help-panel{margin:12px 0;padding:16px;border:2px solid #b99143;border-radius:15px;background:#18130e;color:#f7ecd8}.companion-help-panel h4{margin:0 0 12px;color:#ffe29a;font-size:1.35rem}.companion-help-grid{display:grid;grid-template-columns:repeat(2,minmax(260px,1fr));gap:10px}.companion-help-grid article{padding:12px;border:1px solid #675333;border-radius:11px;background:#272019}.companion-help-grid strong{display:block;color:#ffe29a;font-size:1.05rem}.companion-help-grid p{margin:6px 0 0;line-height:1.45}@media(max-width:800px){.player-companion-hero{grid-template-columns:100px 1fr auto}.companion-help-grid{grid-template-columns:1fr}}

/* Rencontre au zoom : l'ambiance prend sa propre ligne au lieu de recouvrir Trier. */
@media (max-width: 1650px) {
  .encounter-panel::before { height: 11.5rem; }
  .encounter-title-row {
    grid-template-columns: minmax(0, 1fr) auto !important;
    grid-template-rows: auto auto;
  }
  .encounter-title-copy { grid-column: 1; grid-row: 1; }
  .encounter-title-row > .encounter-mode-actions { grid-column: 2; grid-row: 1; }
  .encounter-weather-impact-row {
    grid-column: 1 / -1;
    grid-row: 2;
    padding-top: 0;
  }
}
@media (max-width: 1180px) {
  .encounter-title-row {
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-rows: auto auto auto;
  }
  .encounter-title-copy,
  .encounter-weather-impact-row,
  .encounter-title-row > .encounter-mode-actions { grid-column: 1; }
  .encounter-title-copy { grid-row: 1; }
  .encounter-weather-impact-row { grid-row: 2; }
  .encounter-title-row > .encounter-mode-actions { grid-row: 3; }
}

/* Disposition stable à tout niveau de zoom : aucune colonne entre Trier et Ambiance. */
.encounter-panel::before { height: 11.5rem; }
.encounter-title-row {
  grid-template-columns: minmax(0, 1fr) auto !important;
  grid-template-rows: auto auto;
}
.encounter-title-copy {
  grid-column: 1;
  grid-row: 1;
}
.encounter-title-row > .encounter-mode-actions {
  grid-column: 2;
  grid-row: 1;
}
.encounter-weather-impact-row {
  grid-column: 1 / -1;
  grid-row: 2;
  padding-top: 0;
}
@media (max-width: 1180px) {
  .encounter-title-row {
    grid-template-columns: minmax(0, 1fr) !important;
    grid-template-rows: auto auto auto;
  }
  .encounter-title-copy,
  .encounter-weather-impact-row,
  .encounter-title-row > .encounter-mode-actions { grid-column: 1; }
  .encounter-title-copy { grid-row: 1; }
  .encounter-weather-impact-row { grid-row: 2; }
  .encounter-title-row > .encounter-mode-actions { grid-row: 3; }
}
.npc-travel-terrain-types{margin:.55rem 0;border:1px solid rgba(225,173,77,.35);border-radius:10px;padding:.45rem .55rem}.npc-travel-terrain-types summary{cursor:pointer;font-weight:700;color:#f2d18d}.npc-travel-terrain-types p{margin:.5rem 0;color:var(--muted,#d8c39b);font-size:.88rem}.npc-travel-terrain-types>div{display:flex;flex-wrap:wrap;gap:.4rem}.npc-travel-terrain-types button{padding:.4rem .6rem;border-radius:999px;font-size:.88rem;text-transform:capitalize}.npc-travel-terrain-types button.active{background:#356f45;border-color:#79d48f;color:#fff;box-shadow:0 0 0 1px #79d48f inset}
.npc-travel-terrain-types #npcTravelTerrainDone{display:block;width:100%;margin-top:.65rem;border-radius:8px;text-transform:none}
.npc-regional-projector-dialog{width:min(780px,94vw);max-height:88vh;padding:0;border:1px solid var(--gold,#d8b560);border-radius:1rem;background:#211a12;color:var(--text,#f6ecd1)}.npc-regional-projector-dialog::backdrop{background:rgba(0,0,0,.72)}.npc-regional-projector-dialog form{display:grid;gap:1rem;padding:1.2rem}.npc-regional-projector-dialog header,.npc-regional-projector-dialog footer{display:flex;align-items:center;gap:.7rem}.npc-regional-projector-dialog header>div{flex:1}.npc-regional-projector-dialog h2,.npc-regional-projector-dialog p{margin:.15rem 0}.npc-regional-projector-dialog fieldset{min-height:0;border:1px solid rgba(216,181,96,.45);border-radius:.7rem;padding:.7rem}.npc-regional-projector-dialog fieldset>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem;max-height:45vh;overflow:auto}.npc-regional-projector-dialog fieldset label{display:flex;align-items:center;gap:.65rem;padding:.6rem;border:1px solid rgba(255,255,255,.12);border-radius:.55rem;background:rgba(255,255,255,.035)}.npc-regional-projector-dialog fieldset label.secret{border-color:rgba(225,76,65,.55);background:rgba(100,20,16,.18)}.npc-regional-projector-dialog fieldset label span{display:grid;gap:.1rem}.npc-regional-projector-dialog fieldset label small{color:var(--muted,#c6b890)}.npc-projector-route{display:flex;align-items:center;gap:.55rem;padding:.75rem;border-radius:.6rem;background:rgba(216,181,96,.1)}#npcProjectorStatus{min-height:1.4em;color:#f4d487}.npc-regional-projector-dialog footer{justify-content:flex-end;flex-wrap:wrap}@media(max-width:700px){.npc-regional-projector-dialog fieldset>div{grid-template-columns:1fr}}
.initiative-swap-dialog .settings-card{width:min(620px,calc(100vw - 2rem))}.initiative-swap-choices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.initiative-swap-choice{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4.25rem;padding:1rem;text-align:left}.initiative-swap-choice strong{font-size:1.12rem}.initiative-swap-choice span{color:var(--muted)}@media(max-width:650px){.initiative-swap-choices{grid-template-columns:1fr}}

/* Tiroir de préparation : superposé, étroit et toujours rempli lorsqu'il est ouvert. */
html.mj-add-combatant-open #addCombatantPanel {
  position: fixed !important;
  inset: 5.35rem auto .65rem .65rem;
  z-index: 1400;
  display: grid !important;
  grid-template-columns: 4.25rem minmax(0,1fr) !important;
  width: min(48rem,calc(100vw - 1.3rem)) !important;
  max-width: min(48rem,calc(100vw - 1.3rem)) !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  overflow: hidden;
  background: linear-gradient(180deg,rgb(var(--panel-2-rgb)),rgb(var(--panel-rgb))) !important;
  border-color: rgba(var(--accent-rgb),.72);
  box-shadow: 0 18px 54px rgba(0,0,0,.62),0 0 0 1px rgba(var(--accent-rgb),.18) inset;
}
html.mj-add-combatant-open body .mj-left-dock {
  z-index: 10000 !important;
  isolation: isolate;
}
html.mj-add-combatant-open #addCombatantPanel #addCombatantBody,
html.mj-add-combatant-open #addCombatantPanel #addCombatantBody[hidden] {
  display: grid !important;
  min-width: 0;
  height: 100%;
  overflow: auto;
  padding: 1rem 1.05rem 1.2rem;
}
html.mj-add-combatant-open #addCombatantPanel #addCombatantToggle {
  width: 4.25rem;
  height: 100%;
  min-height: 100%;
}
html.mj-add-combatant-open #addForm label.checkbox.full {
  flex-wrap: wrap;
  align-items: center;
}
html.mj-add-combatant-open #addForm label.checkbox.full small {
  flex: 1 0 100%;
  margin-left: 1.55rem;
  line-height: 1.35;
}
html.mj-add-combatant-open body .layout-mj,
html.mj-add-combatant-open body.compact-ui .layout-mj {
  grid-template-columns: 4.25rem minmax(0,1fr) 4.25rem 4.25rem;
}
@media(max-width:700px){
  html.mj-add-combatant-open #addCombatantPanel{inset:.4rem;width:auto!important;max-width:none!important;grid-template-columns:3.2rem minmax(0,1fr)!important}
  html.mj-add-combatant-open #addCombatantPanel #addCombatantToggle{width:3.2rem}
}
