
:root {
  --ink:#2e2a24;
  --muted:#6f675c;
  --line:#cfc4b4;
  --paper:#ffffff;
  --accent:#7b6a4f;
  --green:#287a4b;
  --blue:#2f6f9c;
  --gray:#8c8c8c;
  --orange:#c2762f;
  --red:#b5332d;
  --panel:#ffffff;
  --soft:#f5f2ec;
}

* { box-sizing:border-box; }

body {
  margin:0;
  background:var(--soft);
  color:var(--ink);
  font-family: Georgia, "Times New Roman", serif;
}

.site-header {
  max-width:1180px;
  margin:0 auto;
  padding:28px 18px 10px;
}

.eyebrow {
  margin:0 0 6px;
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:12px;
}

h1, h2, h3 {
  margin:0;
  font-weight:normal;
}

.site-header h1 {
  font-size:34px;
  letter-spacing:.02em;
}

.lead {
  max-width:760px;
  color:var(--muted);
  font-size:16px;
  line-height:1.5;
}

.app-shell {
  display:grid;
  grid-template-columns:340px 1fr;
  gap:18px;
  max-width:1180px;
  margin:0 auto 40px;
  padding:0 18px;
}

.panel {
  background:var(--panel);
  border:1px solid #ddd4c7;
  box-shadow:0 10px 24px rgba(62,49,31,.08);
  padding:18px;
}

.panel h2 {
  font-size:20px;
  color:var(--accent);
  margin-bottom:14px;
}

.form-grid {
  display:grid;
  gap:12px;
}

.form-grid label {
  display:grid;
  gap:5px;
  font-size:13px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.06em;
}

input, select {
  width:100%;
  border:1px solid #cfc4b4;
  background:#ffffff;
  padding:9px 10px;
  font:15px Arial, sans-serif;
  color:var(--ink);
  border-radius:3px;
}

.checkbox-line {
  display:flex !important;
  align-items:center;
  gap:8px !important;
  text-transform:none !important;
  letter-spacing:0 !important;
  color:var(--ink) !important;
  font-size:14px !important;
}

.checkbox-line input {
  width:auto;
}

.actions {
  display:flex;
  gap:8px;
  margin-top:6px;
}

button {
  border:1px solid var(--accent);
  background:var(--accent);
  color:white;
  padding:10px 14px;
  font:700 13px Arial, sans-serif;
  text-transform:uppercase;
  letter-spacing:.06em;
  cursor:pointer;
  border-radius:3px;
}

button.secondary {
  background:white;
  color:var(--accent);
}

.note {
  margin:14px 0 0;
  color:var(--muted);
  font-size:13px;
  line-height:1.4;
}

.preview-panel {
  overflow:auto;
  min-height:70vh;
}

.preview-head {
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.preview-head p {
  margin:0;
  color:var(--muted);
  font-size:13px;
}

.print-area {
  display:grid;
  gap:12px;
  justify-content:center;
}

/* Pages imprimables */
@page { size:A4 portrait; margin:0; }

.page {
  width:210mm;
  height:297mm;
  background:var(--paper);
  border:1px solid #d8d0c3;
  page-break-after:always;
  overflow:hidden;
  position:relative;
}

.page-inner {
  padding:4.8mm;
  height:100%;
}

.page-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:3.6mm;
  height:100%;
}

.overview,
.day,
.intro-page {
  border:1px solid var(--line);
  padding:2.6mm;
  min-height:0;
  background:var(--paper);
}

.cover-page {
  background:white;
}

.cover-page img {
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.cover-data {
  position:absolute;
  top:111mm;
  left:42mm;
  right:42mm;
  min-height:18mm;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:3mm 5mm;
  background:rgba(255,255,255,.985);
  border:1px solid rgba(184,168,145,.9);
  color:var(--ink);
  font-family:Georgia, "Times New Roman", serif;
}

.cover-data .period {
  font-size:15pt;
  letter-spacing:.03em;
}

 .cover-data .details {
  margin-top:1.2mm;
  color:#6a5841;
  font-size:10.5pt;
}

.fire-dot {
  display:inline-block;
  position:relative;
  width:11px;
  height:11px;
  border-radius:50%;
  vertical-align:middle;
  margin:0 3px;
  border:.45px solid rgba(0,0,0,.22);
  box-shadow:inset 0 1px 2px rgba(255,255,255,.65), inset 0 -1px 2px rgba(0,0,0,.18);
  line-height:0;
}
.fire-dot.very_good { background:var(--green); }
.fire-dot.good { background:var(--blue); }
.fire-dot.neutral { background:var(--gray); }
.fire-dot.bad { background:var(--orange); }
.fire-dot.very_bad { background:var(--red); }
.fire-dot.neutral::after {
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:5.8px;
  height:1.5px;
  border-radius:1px;
  background:rgba(255,255,255,.95);
  transform:translate(-50%, -50%);
}

.moon-icon {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:14px;
  height:14px;
  font-size:14px;
  line-height:1;
  vertical-align:-2px;
}

.overview h1 {
  margin:0;
  font-size:16.2pt;
  letter-spacing:.05em;
  text-transform:uppercase;
}

.overview-head {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:3mm;
  margin-bottom:.8mm;
}

.overview-head h1 {
  flex:0 0 auto;
}

.week-meta {
  flex:1 1 auto;
  max-width:58mm;
  min-width:42mm;
  text-align:left;
  font-size:6.85pt;
  line-height:1.18;
  color:var(--muted);
  padding-top:.25mm;
}

.week-meta div {
  white-space:normal;
  overflow-wrap:anywhere;
}

.week-meta strong {
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.045em;
  font-size:6.15pt;
  font-weight:normal;
}

.place-name,
.client-name { color:var(--ink); }
.coords { white-space:nowrap; color:var(--muted); }

.subtitle {
  margin:1mm 0 3.5mm;
  color:var(--ink);
  font-size:10.1pt;
  letter-spacing:.025em;
}

.overview h3 {
  margin:2.7mm 0 1.3mm;
  font-size:8.6pt;
  text-transform:uppercase;
  letter-spacing:.08em;
  color:var(--accent);
  border-bottom:1px solid var(--line);
  padding-bottom:.7mm;
}

.week-table {
  width:100%;
  border-collapse:collapse;
  font-size:8.45pt;
  table-layout:fixed;
}

.week-table th,
.week-table td {
  border-bottom:1px solid var(--line);
  padding:1.55mm .45mm;
  text-align:center;
  vertical-align:middle;
  line-height:1.12;
}

.week-table th:not(:last-child),
.week-table td:not(:last-child) {
  border-right:1px solid #d9cfc1;
}

.week-table th {
  font-size:6.85pt;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.04em;
  font-weight:normal;
}

.week-table span {
  color:var(--muted);
  font-size:7.1pt;
}

.week-table th:nth-child(1),
.week-table td:nth-child(1) { width:18%; }
.week-table th:nth-child(2),
.week-table td:nth-child(2) { width:10%; }
.week-table th:nth-child(3),
.week-table td:nth-child(3) { width:18%; }
.week-table th:nth-child(4),
.week-table td:nth-child(4) { width:32%; }
.week-table th:nth-child(5),
.week-table td:nth-child(5) { width:22%; }

.phase-word {
  display:block;
  font-size:7.0pt !important;
  line-height:1.05 !important;
  color:#5f5a52;
  white-space:normal;
  overflow-wrap:anywhere;
}

.phase-text {
  display:block;
  margin-top:.5mm;
  font-size:6.4pt !important;
  line-height:1.05;
  color:#5f5a52;
  overflow-wrap:anywhere;
}

.phase-cell .moon-icon {
  width:16px;
  height:16px;
  font-size:16px;
}

.fire-flow {
  display:inline-flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  white-space:normal;
}

.fire-flow .arrow {
  display:inline-block;
  line-height:1;
  margin:0 3px;
  color:var(--muted);
}

.time-small {
  display:block;
  flex-basis:100%;
  text-align:center;
  margin-top:.6mm;
  color:var(--muted);
  font-size:7.4pt;
  line-height:1;
}

.fire-periods {
  margin:1mm 0 0;
  padding:0;
  list-style:none;
  font-size:8.1pt;
  line-height:1.32;
}

.fire-periods li {
  border-bottom:1px solid rgba(207,196,180,.65);
  padding:.65mm 0;
}

.legend,
.mansion-legend,
.week-events {
  margin-top:2.0mm;
  padding:1.8mm;
  border:1px solid var(--line);
  font-size:6.75pt;
  line-height:1.25;
  background:transparent;
}

.legend strong,
.mansion-legend strong,
.week-events strong {
  display:block;
  font-size:7.55pt;
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.055em;
  margin-bottom:.8mm;
}

.legend-line {
  font-size:6.75pt;
  line-height:1.25;
  margin:.25mm 0;
}

.mansion-legend .m-line {
  font-size:6.55pt;
  line-height:1.16;
  padding:.35mm 0;
}

.week-events-grid {
  margin-top:.7mm;
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:repeat(10, auto);
  column-gap:2.0mm;
  row-gap:.25mm;
}

.w-event-cell {
  font-size:6.75pt;
  line-height:1.14;
  min-height:3.25mm;
  overflow:hidden;
  letter-spacing:.01em;
}

.day {
  display:flex;
  flex-direction:column;
  gap:1.15mm;
}

.day-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  border-bottom:1px solid var(--line);
  padding-bottom:1.15mm;
}

.day h2 {
  margin:0;
  font-size:10.9pt;
  text-transform:uppercase;
  letter-spacing:.035em;
  line-height:1.03;
}

.day h2 span {
  font-weight:normal;
  color:var(--muted);
  font-size:9.5pt;
}

.day-head p {
  margin:.8mm 0 0;
  font-size:8.0pt;
  color:var(--accent);
}

.solar {
  text-align:right;
  font-size:7.0pt;
  line-height:1.18;
  color:var(--muted);
  white-space:nowrap;
}

.info-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:1.3mm;
}

.info-box,
.mansion,
.events {
  border:1px solid var(--line);
  background:transparent;
  padding:1.45mm;
  font-size:7.95pt;
  line-height:1.23;
}

.info-box strong,
.mansion strong,
.events strong {
  text-transform:uppercase;
  letter-spacing:.055em;
  color:var(--accent);
  font-size:6.8pt;
}

.moon-state {
  display:inline-block;
  margin-top:.55mm;
  font-size:7.8pt;
  color:var(--ink);
}

.mansion {
  min-height:22.2mm;
}

.mansion-names {
  margin-top:.55mm;
  font-size:7.8pt;
  color:var(--muted);
  font-style:italic;
}

.mansion-lines {
  margin-top:.7mm;
}

.mansion-line {
  font-size:7.25pt;
  line-height:1.22;
  padding:.22mm 0;
}

.events {
  min-height:25.5mm;
}

.events-grid {
  margin-top:.85mm;
  display:grid;
  grid-template-columns:1fr 1fr;
  grid-template-rows:repeat(5, auto);
  column-gap:2.0mm;
  row-gap:.35mm;
}

.event-cell {
  font-size:7.35pt;
  line-height:1.18;
  min-height:3.95mm;
  overflow:hidden;
  letter-spacing:.01em;
}

.hours-title {
  margin-top:.25mm;
  font-size:6.95pt;
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.075em;
  border-bottom:1px solid var(--line);
  padding-bottom:.45mm;
}

.hours {
  width:100%;
  border-collapse:collapse;
  table-layout:fixed;
  font-size:7.45pt;
}

.hours td {
  padding:.35mm .28mm;
  vertical-align:middle;
}

.hours .time {
  width:22%;
  color:var(--muted);
  white-space:nowrap;
  letter-spacing:-.04em;
  font-size:7.35pt;
}

.hours .planet {
  width:28%;
  color:var(--ink);
  letter-spacing:-.02em;
  font-size:7.5pt;
  white-space:nowrap;
}

.hours .glyph {
  font-size:10.7pt;
  vertical-align:-.7px;
  display:inline-block;
  min-width:9px;
}

.hours .keyword {
  display:inline-block;
  margin-left:.9mm;
}

.hours .appointment {
  width:50%;
  padding:0;
}

.write-dots {
  width:100%;
  height:100%;
  border-bottom:1px dotted #9f9487;
}

.day-hours .hour-main td {
  height:3.25mm;
  border-bottom:none;
}

.day-hours .hour-main .appointment {
  padding-left:.7mm;
}

.day-hours .hour-main .write-dots {
  height:2.6mm;
}

.day-hours .write-row td {
  height:3.25mm;
  border-bottom:none;
  padding:0;
}

.day-hours .write-row .write-dots {
  height:2.6mm;
}

.night-hours td {
  height:4.25mm;
  border-bottom:none;
  padding-top:.48mm;
  padding-bottom:.48mm;
}

.night-hours .time { width:23%; }
.night-hours .planet { width:28%; }
.night-hours .appointment { width:49%; }

.legal-line {
  margin-top:.8mm;
  padding-top:.55mm;
  border-top:.45px solid rgba(207,196,180,.65);
  text-align:center;
  font-size:6.9pt;
  line-height:1.18;
  font-weight:500;
  color:var(--ink);
  letter-spacing:.015em;
}

/* Introduction */
.intro-page {
  padding:10mm 14mm;
}

.intro-page h2 {
  color:var(--accent);
  font-size:22pt;
  margin:0 0 8mm;
  letter-spacing:.03em;
}

.intro-page h3 {
  color:var(--accent);
  font-size:13.5pt;
  margin:6mm 0 2mm;
  letter-spacing:.03em;
}

.intro-page p,
.intro-page li {
  font-size:11pt;
  line-height:1.45;
}

.intro-page ul {
  margin:2mm 0 4mm;
  padding-left:6mm;
}

.memo-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2.6mm;
  margin-top:4mm;
}

.memo-card {
  border:1px solid var(--line);
  padding:2.2mm;
  font-size:9.3pt;
  line-height:1.32;
}

.memo-card strong {
  color:var(--accent);
  display:block;
  margin-bottom:.8mm;
}

.mansion-memo-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2mm 3mm;
}

.mansion-memo-item {
  border-bottom:1px solid rgba(207,196,180,.65);
  padding:1mm 0;
  font-size:8.6pt;
  line-height:1.25;
}

.mansion-memo-item strong {
  color:var(--accent);
}

@media (max-width:980px) {
  .app-shell { grid-template-columns:1fr; }
  .print-area { justify-content:start; overflow:auto; }
}

@media print {
  body { background:white; }
  .site-header, .panel:not(.preview-panel), .preview-head { display:none !important; }
  .app-shell, .preview-panel, .print-area { display:block; margin:0; padding:0; max-width:none; box-shadow:none; border:none; background:white; }
  .page { margin:0; border:none; box-shadow:none; }
}


/* V2 : autocomplétion commune + calcul natal */
.place-field {
  position:relative;
}

.coord-row {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

.suggestions {
  position:absolute;
  z-index:20;
  top:100%;
  left:0;
  right:0;
  margin-top:3px;
  background:#ffffff;
  border:1px solid var(--line);
  box-shadow:0 8px 18px rgba(62,49,31,.16);
  max-height:230px;
  overflow:auto;
  display:none;
  text-transform:none;
  letter-spacing:0;
  color:var(--ink);
}

.suggestions.open {
  display:block;
}

.suggestion-item {
  padding:8px 9px;
  border-bottom:1px solid rgba(207,196,180,.5);
  cursor:pointer;
  font:13px Arial, sans-serif;
}

.suggestion-item:hover,
.suggestion-item.active {
  background:#ffffff;
}

.suggestion-item strong {
  font-weight:700;
  color:var(--ink);
}

.suggestion-item span {
  color:var(--muted);
  font-size:12px;
}

.small-status {
  margin:-4px 0 2px;
  padding:7px 8px;
  border:1px solid rgba(207,196,180,.7);
  background:#ffffff;
  color:var(--muted);
  font-size:12.5px;
  line-height:1.35;
}

.small-status.warn {
  color:#8b4b1f;
  border-color:#d4aa79;
  background:#ffffff;
}

.small-status.ok {
  color:#2b6846;
  border-color:#91bea2;
  background:#ffffff;
}


.hidden-natal-fields{display:none !important;}


/* V4 : sélection intelligente des périodes */
.period-fieldset {
  border:1px solid var(--line);
  padding:10px;
  margin:2px 0 0;
  background:#ffffff;
}

.period-fieldset legend {
  padding:0 6px;
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:13px;
}

.period-type-grid {
  display:grid;
  gap:8px;
}

.type-card {
  display:grid !important;
  grid-template-columns:auto 1fr;
  gap:2px 8px !important;
  align-items:center;
  border:1px solid rgba(207,196,180,.9);
  padding:9px;
  background:white;
  cursor:pointer;
  text-transform:none !important;
  letter-spacing:0 !important;
  color:var(--ink) !important;
}

.type-card input {
  grid-row:1 / span 2;
  width:auto;
  margin:0;
}

.type-card .type-title {
  font-size:14px;
  font-weight:700;
  color:var(--ink);
}

.type-card .type-note {
  font-size:12.2px;
  color:var(--muted);
  line-height:1.25;
}

.type-card.active {
  border-color:var(--accent);
  background:#ffffff;
  box-shadow:inset 0 0 0 1px rgba(123,106,79,.28);
}

.period-summary {
  border:1px solid rgba(207,196,180,.85);
  background:#ffffff;
  padding:9px 10px;
  color:var(--muted);
  font-size:13px;
  line-height:1.35;
}

.period-summary strong {
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.05em;
  font-size:12px;
}

.period-year,
.period-month,
.period-week {
  transition:opacity .15s ease;
}


/* V5 : retour aux fonds blancs pour économiser l’encre */
.page,
.page-inner,
.overview,
.day,
.intro-page,
.cover-page,
.info-box,
.mansion,
.events,
.legend,
.mansion-legend,
.week-events {
  background:#ffffff !important;
}

.cover-data {
  background:rgba(255,255,255,.985) !important;
}

@media print {
  .page,
  .page-inner,
  .overview,
  .day,
  .intro-page,
  .info-box,
  .mansion,
  .events,
  .legend,
  .mansion-legend,
  .week-events {
    background:#ffffff !important;
  }
}


/* V6 : pages d’introduction complètes et sobres */
.intro-full-page,
.intro-title-page {
  position:relative;
  border:1px solid var(--line);
  padding:11mm 13mm 10mm;
  background:#ffffff !important;
  overflow:hidden;
}

.intro-title-page {
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
}

.intro-title-block {
  max-width:150mm;
  border:1px solid rgba(207,196,180,.9);
  padding:16mm 14mm;
}

.intro-title-block h2 {
  font-size:26pt;
  line-height:1.06;
  margin:0 0 7mm;
  color:var(--ink);
}

.intro-title-block p {
  font-size:12.4pt;
  line-height:1.48;
  color:var(--muted);
}

.intro-signature {
  margin-top:7mm;
  color:var(--accent) !important;
  font-style:italic;
}

.intro-page-head {
  border-bottom:1px solid var(--line);
  padding-bottom:3mm;
  margin-bottom:4mm;
}

.intro-kicker {
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:7.2pt;
  margin-bottom:1.8mm;
}

.intro-full-page h2 {
  font-size:18.6pt;
  line-height:1.08;
  color:var(--ink);
  margin:0;
}

.intro-subtitle {
  margin-top:1.2mm;
  color:var(--muted);
  font-size:8.6pt;
  font-style:italic;
}

.intro-body {
  column-count:2;
  column-gap:8.2mm;
  column-rule:1px solid rgba(207,196,180,.55);
  font-size:8.55pt;
  line-height:1.28;
  color:var(--ink);
}

.intro-body h3 {
  break-after:avoid;
  color:var(--accent);
  font-size:10pt;
  line-height:1.15;
  text-transform:uppercase;
  letter-spacing:.04em;
  margin:0 0 1.5mm;
  padding-top:1.25mm;
}

.intro-body p {
  margin:0 0 1.85mm;
  text-align:justify;
  hyphens:auto;
}

.intro-body ul,
.intro-body ol {
  margin:0 0 2mm 4.4mm;
  padding:0;
}

.intro-body li {
  margin:0 0 .8mm;
  padding-left:.45mm;
}

.intro-retain {
  border:1px solid rgba(207,196,180,.85);
  padding:1.8mm;
  margin:2.1mm 0 !important;
  color:#4f463b;
  background:#ffffff !important;
  break-inside:avoid;
}

.intro-table {
  width:100%;
  border-collapse:collapse;
  margin:1.35mm 0 2.7mm;
  font-size:7.8pt;
  line-height:1.18;
  break-inside:avoid;
}

.intro-table th,
.intro-table td {
  border:1px solid rgba(207,196,180,.9);
  padding:1.05mm 1.25mm;
  vertical-align:top;
}

.intro-table th {
  color:var(--accent);
  text-transform:uppercase;
  letter-spacing:.04em;
  font-size:7pt;
  font-weight:normal;
  background:#ffffff !important;
}

.intro-table td:first-child,
.intro-table th:first-child { width:28%; }
.mansion-table td:first-child,
.mansion-table th:first-child { width:9%; text-align:center; }
.mansion-table td:nth-child(2),
.mansion-table th:nth-child(2) { width:28%; }

.intro-wide .intro-body {
  column-count:1;
  column-rule:none;
  font-size:8.25pt;
}

.intro-wide .intro-table { font-size:8pt; }
.intro-wide .mansion-table td,
.intro-wide .mansion-table th { padding:1.05mm 1.2mm; }

.intro-footer {
  position:absolute;
  left:13mm;
  right:13mm;
  bottom:5.8mm;
  border-top:1px solid rgba(207,196,180,.85);
  padding-top:1.35mm;
  text-align:center;
  color:var(--muted);
  font-size:7pt;
}

@media print {
  .intro-full-page,
  .intro-title-page,
  .intro-body,
  .intro-table th { background:#ffffff !important; }
}


/* V7 : introduction paginée plus dense et cohérente */
.intro-full-page,
.intro-title-page {
  padding:8.5mm 10.5mm 7.8mm !important;
}

.intro-page-head {
  padding-bottom:2.1mm !important;
  margin-bottom:2.6mm !important;
  break-after:avoid;
}

.intro-full-page h2 {
  font-size:16.8pt !important;
  line-height:1.05 !important;
}

.intro-subtitle {
  margin-top:.7mm !important;
  font-size:7.7pt !important;
}

.intro-body {
  column-gap:6.1mm !important;
  column-rule:1px solid rgba(207,196,180,.45) !important;
  font-size:8.05pt !important;
  line-height:1.22 !important;
}

.intro-body h3 {
  font-size:9.05pt !important;
  line-height:1.08 !important;
  margin:0 0 .95mm !important;
  padding-top:.85mm !important;
  break-after:avoid;
  break-inside:avoid;
}

.intro-body p {
  margin:0 0 1.25mm !important;
  text-align:justify;
  hyphens:auto;
}

.intro-body ul,
.intro-body ol {
  margin:0 0 1.35mm 4mm !important;
}

.intro-body li {
  margin:0 0 .42mm !important;
}

.intro-table {
  font-size:7.05pt !important;
  line-height:1.08 !important;
  margin:1mm 0 1.55mm !important;
}

.intro-table th,
.intro-table td {
  padding:.72mm .9mm !important;
}

.intro-wide .intro-body {
  font-size:7.2pt !important;
  line-height:1.11 !important;
}

.intro-wide .intro-table {
  font-size:7.0pt !important;
  line-height:1.08 !important;
}

.intro-wide .mansion-table td,
.intro-wide .mansion-table th {
  padding:.72mm .85mm !important;
}

.intro-retain {
  padding:1.25mm !important;
  margin:1.3mm 0 !important;
}

.intro-footer {
  left:10.5mm !important;
  right:10.5mm !important;
  bottom:3.6mm !important;
  padding-top:.85mm !important;
  font-size:6.5pt !important;
}

.intro-title-block {
  max-width:156mm !important;
  padding:13mm 13mm !important;
}


/* V8 : pagination des introductions repensée */
.intro-open-page .intro-open-head {
  border-bottom:1px solid var(--line);
  margin-bottom:3mm !important;
  padding-bottom:3mm !important;
}

.intro-open-page .intro-title-block,
.intro-open-head .intro-title-block {
  border:none !important;
  padding:0 !important;
  max-width:none !important;
  text-align:left !important;
}

.intro-open-head .intro-kicker {
  margin-bottom:1.2mm !important;
}

.intro-open-head h2 {
  font-size:20.5pt !important;
  line-height:1.05 !important;
  margin:0 0 2.2mm !important;
}

.intro-open-head p {
  max-width:170mm;
  font-size:9pt !important;
  line-height:1.28 !important;
  margin:0 0 1.25mm !important;
  color:var(--muted);
}

.intro-open-head .intro-signature {
  margin-top:1.7mm !important;
  color:var(--accent) !important;
  font-style:italic;
}

.intro-dense .intro-body {
  column-count:2;
  column-gap:6mm !important;
  column-rule:1px solid rgba(207,196,180,.45);
  font-size:7.7pt !important;
  line-height:1.16 !important;
}

.intro-dense .intro-body p {
  margin:0 0 1mm !important;
}

.intro-dense .intro-body h3 {
  font-size:8.45pt !important;
  line-height:1.05 !important;
  margin:0 0 .72mm !important;
  padding-top:.6mm !important;
  break-after:avoid;
}

.intro-dense .intro-body ul,
.intro-dense .intro-body ol {
  margin:0 0 1mm 3.5mm !important;
}

.intro-dense .intro-body li {
  margin:0 0 .25mm !important;
}

.intro-compact .intro-body {
  font-size:7.45pt !important;
  line-height:1.13 !important;
}

.intro-compact .intro-body h3 {
  font-size:8.1pt !important;
  margin-bottom:.55mm !important;
  padding-top:.5mm !important;
}

.intro-memo-page .intro-body,
.intro-mansion-memo .intro-body {
  column-count:1 !important;
  column-rule:none !important;
}

.intro-memo-page .intro-body {
  font-size:7.55pt !important;
}

.intro-memo-page .intro-table {
  font-size:7.05pt !important;
  line-height:1.08 !important;
  margin:.8mm 0 1.5mm !important;
}

.intro-memo-page .intro-table th,
.intro-memo-page .intro-table td {
  padding:.68mm .9mm !important;
}

.intro-mansion-memo .intro-table {
  font-size:6.82pt !important;
  line-height:1.06 !important;
  margin:.8mm 0 1.1mm !important;
}

.intro-mansion-memo .intro-table th,
.intro-mansion-memo .intro-table td {
  padding:.62mm .75mm !important;
}

.intro-mansion-memo .mansion-table td:first-child,
.intro-mansion-memo .mansion-table th:first-child {
  width:7% !important;
}

.intro-mansion-memo .mansion-table td:nth-child(2),
.intro-mansion-memo .mansion-table th:nth-child(2) {
  width:25% !important;
}

.intro-full-page {
  padding:7.6mm 9.5mm 7mm !important;
}

.intro-page-head {
  padding-bottom:1.7mm !important;
  margin-bottom:2mm !important;
}

.intro-footer {
  bottom:3.2mm !important;
}


/* V9 : pagination sémantique et anti-débordement */
.intro-v9 {
  padding:8.2mm 10mm 7.3mm !important;
}

.intro-v9 .intro-page-head {
  padding-bottom:1.8mm !important;
  margin-bottom:2.2mm !important;
  break-after:avoid;
}

.intro-v9 h2 {
  font-size:16.5pt !important;
  line-height:1.06 !important;
}

.intro-v9 .intro-body {
  column-count:2 !important;
  column-gap:6.4mm !important;
  column-rule:1px solid rgba(207,196,180,.42) !important;
  font-size:7.95pt !important;
  line-height:1.18 !important;
}

.intro-v9 .intro-body p {
  margin:0 0 1.08mm !important;
  text-align:justify;
  hyphens:auto;
}

.intro-v9 .intro-body h3 {
  font-size:8.75pt !important;
  line-height:1.08 !important;
  margin:0 0 .82mm !important;
  padding-top:.7mm !important;
  break-after:avoid;
}

.intro-v9 .intro-body ul,
.intro-v9 .intro-body ol {
  margin:0 0 1.15mm 3.8mm !important;
  padding:0 !important;
}

.intro-v9 .intro-body li {
  margin:0 0 .35mm !important;
}

.intro-v9 .intro-retain {
  padding:1.25mm !important;
  margin:1.2mm 0 !important;
}

.intro-v9 .intro-table {
  font-size:7.15pt !important;
  line-height:1.08 !important;
  margin:.85mm 0 1.35mm !important;
}

.intro-v9 .intro-table th,
.intro-v9 .intro-table td {
  padding:.62mm .85mm !important;
}

.intro-open-page .intro-body {
  font-size:8.05pt !important;
  line-height:1.21 !important;
}

.intro-feux-page .intro-body {
  font-size:8.05pt !important;
  line-height:1.2 !important;
}

.intro-aspects .intro-body {
  column-count:1 !important;
  max-width:160mm;
  margin:0 auto;
  font-size:9.2pt !important;
  line-height:1.35 !important;
}

.intro-memo-page .intro-body {
  column-count:1 !important;
  column-rule:none !important;
}

.intro-memo-page .intro-table {
  font-size:7.3pt !important;
}

.intro-mansion-memo .intro-body {
  column-count:1 !important;
}

.intro-mansion-memo .intro-table {
  font-size:6.85pt !important;
  line-height:1.06 !important;
}

.intro-mansion-memo .intro-table th,
.intro-mansion-memo .intro-table td {
  padding:.6mm .75mm !important;
}

.intro-mansion-memo .mansion-table td:first-child,
.intro-mansion-memo .mansion-table th:first-child {
  width:7% !important;
}

.intro-mansion-memo .mansion-table td:nth-child(2),
.intro-mansion-memo .mansion-table th:nth-child(2) {
  width:25% !important;
}


/* V10 : mémo des 28 demeures sur une seule page */
.intro-mansion-all .intro-body {
  column-count:1 !important;
  column-rule:none !important;
  font-size:6.35pt !important;
  line-height:1.06 !important;
}

.intro-mansion-all .intro-body > p {
  margin:0 0 .8mm !important;
  font-size:6.55pt !important;
  line-height:1.12 !important;
}

.mansion-two-col {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:2.2mm;
  align-items:start;
}

.intro-mansion-all .compact-mansion-table {
  font-size:5.75pt !important;
  line-height:1.02 !important;
  margin:0 !important;
}

.intro-mansion-all .compact-mansion-table th,
.intro-mansion-all .compact-mansion-table td {
  padding:.32mm .45mm !important;
  vertical-align:top;
}

.intro-mansion-all .compact-mansion-table td:first-child,
.intro-mansion-all .compact-mansion-table th:first-child {
  width:6.5% !important;
}

.intro-mansion-all .compact-mansion-table td:nth-child(2),
.intro-mansion-all .compact-mansion-table th:nth-child(2) {
  width:27% !important;
}

.intro-mansion-all .intro-retain {
  margin:.95mm 0 0 !important;
  padding:.85mm 1mm !important;
  font-size:6.35pt !important;
  line-height:1.1 !important;
}

.intro-mansion-all .intro-page-head {
  margin-bottom:1.4mm !important;
  padding-bottom:1.2mm !important;
}

.intro-mansion-all h2 {
  font-size:15pt !important;
}


/* V11 : mémo des demeures lunaires empilé sur une seule page */
.intro-mansion-all .mansion-two-col {
  display:block !important;
}

.intro-mansion-all .compact-mansion-table {
  width:100% !important;
  font-size:6.95pt !important;
  line-height:1.04 !important;
  margin:0 0 1.15mm 0 !important;
}

.intro-mansion-all .compact-mansion-table th,
.intro-mansion-all .compact-mansion-table td {
  padding:.36mm .62mm !important;
  vertical-align:top;
}

.intro-mansion-all .compact-mansion-table td:first-child,
.intro-mansion-all .compact-mansion-table th:first-child {
  width:6% !important;
}

.intro-mansion-all .compact-mansion-table td:nth-child(2),
.intro-mansion-all .compact-mansion-table th:nth-child(2) {
  width:23% !important;
}

.intro-mansion-all .intro-body {
  font-size:7pt !important;
  line-height:1.08 !important;
}

.intro-mansion-all .intro-body > p {
  font-size:7pt !important;
  line-height:1.12 !important;
  margin:0 0 .75mm !important;
}

.intro-mansion-all .intro-retain {
  font-size:7pt !important;
  line-height:1.12 !important;
  margin:.65mm 0 0 !important;
  padding:.7mm .9mm !important;
}

.intro-mansion-all .intro-page-head {
  margin-bottom:1.2mm !important;
  padding-bottom:1mm !important;
}

.intro-mansion-all h2 {
  font-size:14.8pt !important;
}


/* V12 : mémo des demeures ajouté sous les premiers tableaux du mémo rapide */
.intro-memo-page .memo-mansion-embed {
  margin-top:1.2mm;
}

.intro-memo-page .memo-mansion-embed .mansion-two-col {
  display:block !important;
}

.intro-memo-page .memo-mansion-embed .compact-mansion-table {
  width:100% !important;
  font-size:6.95pt !important;
  line-height:1.04 !important;
  margin:0 0 1.15mm 0 !important;
}

.intro-memo-page .memo-mansion-embed .compact-mansion-table th,
.intro-memo-page .memo-mansion-embed .compact-mansion-table td {
  padding:.36mm .62mm !important;
  vertical-align:top;
}

.intro-memo-page .memo-mansion-embed .compact-mansion-table td:first-child,
.intro-memo-page .memo-mansion-embed .compact-mansion-table th:first-child {
  width:6% !important;
}

.intro-memo-page .memo-mansion-embed .compact-mansion-table td:nth-child(2),
.intro-memo-page .memo-mansion-embed .compact-mansion-table th:nth-child(2) {
  width:23% !important;
}

.intro-memo-page .memo-mansion-embed p {
  font-size:7pt !important;
  line-height:1.12 !important;
  margin:0 0 .75mm !important;
}

.intro-memo-page .memo-mansion-embed .intro-retain {
  font-size:7pt !important;
  line-height:1.12 !important;
  margin:.65mm 0 0 !important;
  padding:.7mm .9mm !important;
}


/* Final v2 : aide initiale et indications de génération */
.generate-hint {
  margin:2px 0 0;
  padding:8px 9px;
  border:1px solid rgba(207,196,180,.8);
  background:#ffffff;
  color:var(--muted);
  font-size:13px;
  line-height:1.35;
}

button:disabled {
  opacity:.55;
  cursor:not-allowed;
}

.help-page .intro-body,
.loading-page .intro-body {
  column-count:1 !important;
  column-rule:none !important;
  max-width:166mm;
  margin:0 auto;
  font-size:10.2pt !important;
  line-height:1.42 !important;
}

.help-page .intro-body h3,
.loading-page .intro-body h3 {
  color:var(--accent);
  font-size:11.2pt !important;
  text-transform:uppercase;
  letter-spacing:.06em;
  margin:5mm 0 1.5mm !important;
}

.help-page .intro-body ol,
.help-page .intro-body ul {
  margin:2mm 0 3mm 6mm !important;
}

.help-page .intro-body li {
  margin:0 0 1.1mm !important;
}

.help-card {
  border:1px solid var(--line);
  padding:3mm;
  margin:3mm 0;
  background:#ffffff;
}

.help-card strong {
  color:var(--accent);
}

.loading-spinner {
  display:inline-block;
  width:18px;
  height:18px;
  border:2px solid rgba(123,106,79,.25);
  border-top-color:var(--accent);
  border-radius:50%;
  vertical-align:-4px;
  margin-right:7px;
  animation:spin .9s linear infinite;
}

@keyframes spin {
  to { transform:rotate(360deg); }
}
