/* Styles propres aux écrans « domaine-publication-securite » de l’interface /v2 :
   Mon nom de domaine, Mettre en ligne / Historique des versions, Santé et sécurité.
   Tout est préfixé par l’identifiant de la vue ou par « dps- » pour ne rien
   modifier ailleurs. */

/* ---------- Commun ---------- */
#view-domains, #view-deployments, #view-security { --dps-max: 1360px; }
#view-domains > *, #view-deployments > *, #view-security > * { max-width: var(--dps-max); margin-inline: auto; }
.dps-muted { margin: 4px 0 0; color: var(--muted); }
.dps-count { margin-top: 4px; font-size: 13px; }
.dps-readonly { align-items: center; margin: 0 auto 16px; }
.dps-readonly svg { flex: none; width: 18px; height: 18px; color: var(--blue-strong); }

.dps-next-step { margin-bottom: 18px; }
.dps-next-step .ns-text span { display: block; margin-top: 3px; color: var(--muted); font-size: 13.5px; }
.dps-next-icon { display: grid; flex: none; place-items: center; width: 42px; height: 42px; border-radius: var(--radius); color: var(--blue-strong); background: var(--surface); box-shadow: var(--shadow-sm); }
.dps-next-icon svg { width: 21px; height: 21px; }
.dps-next-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.dps-next-actions:empty { display: none; }
.dps-next-actions .button { white-space: nowrap; }

#view-domains .panel-heading p, #view-deployments .panel-heading p, #view-security .panel-heading p { margin: 3px 0 0; font-size: 13px; }

/* ---------- Mon nom de domaine ---------- */
.dps-guide { margin-bottom: 18px; }
.dps-guide .card-body { padding: 20px 22px; }
.dps-guide h2 { margin: 0; font-size: 18px; font-weight: 800; }
.dps-guide-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 12px; }
.dps-guide-head > div { flex: 1 1 320px; min-width: 0; }
.dps-guide-head h2 { overflow-wrap: anywhere; }
.dps-picker { display: grid; gap: 4px; color: var(--muted); font-size: 12.5px; font-weight: 700; }
.dps-picker select { min-width: 200px; max-width: 100%; }

/* Fil d’étapes : l’élément marquant de l’écran. Une ligne relie les pastilles. */
.dps-steps { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin: 22px 0 18px; padding: 0; list-style: none; counter-reset: none; }
.dps-steps::before { position: absolute; top: 16px; right: 12.5%; left: 12.5%; height: 3px; border-radius: 3px; background: var(--line); content: ""; }
.dps-steps li { position: relative; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center; }
.dps-steps li > span:last-child { display: flex; flex-direction: column; gap: 2px; }
.dps-steps strong { font-size: 13.5px; }
.dps-steps small { color: var(--muted); font-size: 12px; line-height: 1.35; }
.dps-step-dot { position: relative; z-index: 1; display: grid; place-items: center; width: 34px; height: 34px; border: 3px solid var(--line); border-radius: 50%; color: var(--muted); background: var(--surface); font-weight: 800; }
.dps-step-dot svg { width: 17px; height: 17px; stroke-width: 3; }
.dps-steps li.done .dps-step-dot { border-color: var(--green); color: #fff; background: var(--green); }
.dps-steps li.current .dps-step-dot { border-color: var(--blue); color: var(--blue-strong); background: var(--surface-blue); box-shadow: 0 0 0 5px color-mix(in srgb, var(--blue) 14%, transparent); }
.dps-steps li.current strong { color: var(--blue-strong); }

.dps-lines { padding: 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface-2); }
.dps-lines h3 { margin: 0 0 4px; font-size: 16px; }
.dps-lines > p { margin: 0 0 12px; color: var(--ink); }
.dps-record { display: grid; gap: 0; margin: 0 0 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); }
.dps-record > div { display: grid; grid-template-columns: 150px minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--line); }
.dps-record > div:last-child { border-bottom: 0; }
.dps-record dt { color: var(--muted); font-size: 12.5px; font-weight: 700; }
.dps-record dd { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; margin: 0; }
.dps-record code { padding: 4px 8px; border-radius: var(--radius-xs); background: var(--surface-3); font: 500 13.5px/1.4 var(--font-mono); overflow-wrap: anywhere; word-break: break-all; }
.dps-copy { min-height: 32px; }
.dps-why { display: flex; align-items: flex-start; gap: 8px; margin: 0 0 14px; color: var(--ink); font-size: 13px; }
.dps-why svg { color: var(--blue-strong); }
.dps-why svg { flex: none; width: 16px; height: 16px; margin-top: 2px; }
.dps-verify { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin-bottom: 14px; }
.dps-verify-status { flex: 1 1 260px; margin: 0; color: var(--muted); font-size: 13px; }
.dps-verify-status.is-error { color: var(--red); font-weight: 600; }
.dps-registrars { margin-bottom: 12px; background: var(--surface); }
.dps-registrars ul { margin: 0 0 12px; padding-left: 18px; }
.dps-registrars li { margin: 4px 0; overflow-wrap: anywhere; }
.dps-soon, #domainGuide .callout { align-items: flex-start; margin: 0; }
#domainGuide .callout svg { flex: none; width: 18px; height: 18px; margin-top: 1px; }
.dps-soon .badge { margin-left: 4px; }

.dps-choices { margin-top: 14px; }
.dps-choices .choice { min-height: 120px; text-decoration: none; }
.dps-choices .choice svg { width: 22px; height: 22px; color: var(--blue-strong); }
.dps-choices .choice:disabled { opacity: .55; cursor: not-allowed; }

/* Mise en page des listes : adresses | sites, la liaison en cours sous les sites. */
#view-domains .domains-layout { grid-template-columns: minmax(270px, 340px) minmax(0, 1fr); grid-template-areas: "list dest" "list conn"; align-items: start; max-width: var(--dps-max); }
#view-domains .domain-list-panel { grid-area: list; min-height: 0; }
#view-domains .destination-zone { grid-area: dest; }
#view-domains .connection-panel { grid-area: conn; min-height: 0; }
#view-domains .connection-panel:has(#connectionProgress[hidden]) { display: none; }
#view-domains .connection-empty { display: none; }
#view-domains .section-heading-inline { align-items: flex-start; gap: 12px; }
#view-domains .section-heading-inline h2 { margin: 0; font-size: 16.5px; }
#view-domains .project-destinations { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
#view-domains .destination-header { padding: 14px; }
#view-domains .domain-card { cursor: grab; }
#view-domains .domain-card-actions .button { white-space: nowrap; }
.dps-site-current { display: inline-flex; margin: 0 14px; padding: 2px 8px; border-radius: var(--radius-pill); color: var(--blue-strong); background: var(--surface-blue); font-size: 11.5px; font-weight: 750; }
#view-domains .domain-add-row { margin: 10px 12px 12px; width: calc(100% - 24px); }

/* ---------- Mettre en ligne / Historique des versions ---------- */
.dps-how { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 auto 18px; padding: 0; list-style: none; }
.dps-how li { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.dps-how li > div { display: flex; flex-direction: column; gap: 2px; }
.dps-how li span:not(.dps-how-num) { color: var(--muted); font-size: 13px; }
.dps-how-num { display: grid; flex: none; place-items: center; width: 28px; height: 28px; border-radius: 50%; color: var(--blue-strong); background: var(--surface-blue); font-weight: 800; }

/* Frise des versions : une ligne verticale relie les pastilles d’état. */
#view-deployments .deployment-list-panel { overflow: hidden; }
#view-deployments .deployment-row { position: relative; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; align-items: start; gap: 14px; min-height: 0; padding: 16px 20px; border-bottom: 0; }
/* Le trait part du centre de la pastille et rejoint celle de la version suivante. */
#view-deployments .deployment-row::before { position: absolute; top: 33px; bottom: -33px; left: 36px; width: 2px; background: var(--line); content: ""; }
#view-deployments .deployment-row:not(:has(~ .deployment-row:not([hidden])))::before { display: none; }
#view-deployments .deploy-status { position: relative; z-index: 1; width: 34px; height: 34px; border: 3px solid var(--surface); }
#view-deployments .deployment-row.is-live, #view-deployments .deployment-row.featured { background: color-mix(in srgb, var(--surface-green) 55%, var(--surface)); }
.dps-release-main { min-width: 0; }
.dps-release-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.dps-release-title strong { font-size: 15px; }
.dps-release-main p { margin: 3px 0 0; overflow-wrap: anywhere; }
.dps-release-note { color: var(--ink); }
.dps-release-when, .dps-release-tech { color: var(--muted); font-size: 12.5px; }
.dps-release-tech .commit { display: inline-flex; align-items: center; gap: 3px; }
.dps-release-tech svg { width: 13px; height: 13px; }
#view-deployments .deployment-actions { align-self: center; flex-wrap: wrap; gap: 6px; }
#view-deployments .deployment-actions .button { width: auto; min-width: 0; padding-inline: 12px; font-size: 13px; }
#view-deployments .deployment-actions .rollback-button { display: inline-flex; }
#view-deployments #deploymentEmptyState { margin: 18px; }

/* Fenêtre de publication : liste de vérification lisible, verte quand c’est bon. */
#publishModal .modal-header p { margin: 4px 0 0; }
#publishPreflight > div > svg.lucide-check { color: var(--green); }
#publishPreflight > div > svg.lucide-circle-x { color: var(--red); }
#publishPreflight > div > svg.lucide-circle-dashed, #publishPreflight > div > svg.lucide-circle-help, #publishPreflight > div > svg.lucide-database { color: var(--muted); }
#publishPreflight > div[data-preflight-status="passed"] { background: color-mix(in srgb, var(--surface-green) 60%, transparent); }
#publishPreflight > div[data-preflight-status="failed"] { background: var(--surface-red); }
#publishPreflight > div[data-preflight-status="passed"] > svg { color: var(--green); }
#publishPreflight > div[data-preflight-status="failed"] > svg { color: var(--red); }
#publishPreflight > div[data-preflight-status="not_executed"] > svg, #publishPreflight > div[data-preflight-status="unavailable"] > svg { color: var(--muted); }
#publishPreflight > div[data-preflight-status="warning"] { background: var(--surface-amber, #fff7e6); }
#publishPreflight > div[data-preflight-status="warning"] > svg { color: var(--amber, #b45309); }
.dps-label-hint { color: var(--muted); font-weight: 500; }
#rollbackModal .rollback-comparison strong { font-size: 17px; }

/* ---------- Santé et sécurité ---------- */
#view-security .security-layout { max-width: var(--dps-max); }
#view-security .security-actions label { color: var(--ink); font-size: 12.5px; font-weight: 700; text-transform: none; }
.dps-score-label { color: var(--muted); font-size: 13px; font-weight: 500; }
#view-security .security-score-block h2 { margin: 4px 0 6px; }
.dps-plain { margin: 0 0 6px !important; color: var(--ink-2) !important; font-size: 15px; line-height: 1.5; max-width: 46ch; }
#view-security #scanStatusText { font-size: 12.5px; }
#view-security .security-progress-panel .dps-score-label { color: var(--blue-strong); }
#view-security .finding > div { min-width: 0; }
.dps-finding-title { margin: 0; font-size: 15px; font-weight: 750; }
.dps-finding-actions { margin-top: 10px; }
#view-security .finding-automation { display: block; margin-top: 6px; }
#view-security .finding-automation:not(.manual) { color: var(--blue-strong); font-weight: 600; }
#view-security .finding > span { padding-inline: 6px; font-size: 11px; }
#view-security .finding.critical > span, #view-security .finding.high > span { color: var(--red-strong); background: var(--surface-red); }
#view-security .finding.medium > span { color: var(--amber); background: var(--surface-amber); }
body.mode-simple #view-security .control-row small { display: none; }
body.mode-simple #view-security .control-row { min-height: 56px; }

/* ---------- Largeurs intermédiaires ---------- */
@media (max-width: 1100px) {
  #view-domains .domains-layout { grid-template-columns: minmax(0, 1fr); grid-template-areas: "list" "dest" "conn"; }
  #view-security .security-layout { grid-template-columns: minmax(0, 1fr); }
  /* Sur une seule colonne, ce qu’il faut corriger passe avant le détail des contrôles. */
  #view-security .findings-panel { order: 1; }
  #view-security .controls-panel { order: 2; }
}

/* ---------- Téléphone ---------- */
@media (max-width: 720px) {
  .dps-next-step { align-items: flex-start; }
  .dps-next-actions, .dps-next-actions .button { width: 100%; }
  .dps-next-actions .button { justify-content: center; white-space: normal; }
  .dps-guide .card-body { padding: 16px; }
  /* Étapes en colonne : la ligne devient verticale. */
  .dps-steps { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .dps-steps::before { top: 17px; bottom: 17px; left: 16px; right: auto; width: 3px; height: auto; }
  .dps-steps li { flex-direction: row; align-items: flex-start; gap: 12px; text-align: left; }
  .dps-step-dot { flex: none; }
  .dps-record > div { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .dps-lines { padding: 14px; }
  .dps-how { grid-template-columns: minmax(0, 1fr); }
  .dps-picker, .dps-picker select { width: 100%; }
  #view-deployments .deployment-row { grid-template-columns: 34px minmax(0, 1fr); padding: 14px; gap: 10px; }
  #view-deployments .deployment-row::before { top: 31px; bottom: -31px; left: 30px; }
  #view-deployments .deployment-actions { grid-column: 2; justify-content: flex-start; }
  #view-deployments .deployment-actions .button { width: auto; font-size: 13px; }
  #view-security .finding { grid-template-columns: minmax(0, 1fr); }
  #view-security .finding > span { justify-self: start; }
  #view-security .security-actions select { min-width: 0; width: 100%; }
  #view-domains .project-destinations { grid-template-columns: minmax(0, 1fr); }
}

@media (prefers-reduced-motion: reduce) {
  .dps-steps li.current .dps-step-dot { box-shadow: none; }
}

/* Anneau du score : rond quelle que soit la largeur, neutre tant qu’aucun score n’existe. */
#view-security .security-score-ring { flex: none; border-color: var(--line-strong); }
#view-security .security-score-block h2 { font-size: 22px; font-weight: 600; letter-spacing: -.02em; }
#view-security .control-row .control-result { color: var(--green); }
#view-security .control-row:has(.control-icon.unknown) .control-result { color: var(--muted); }
#view-security .control-row.failed .control-result { color: var(--red); }
#publishDomainOptions button.publish-domain-option { width: 100%; text-align: left; justify-content: flex-start; }
.dps-lines .dps-lines-second { margin-top: 18px; }
.dps-lines-route { margin-top: 14px; }
.dps-record small.dps-muted { margin: 0; }
.dps-release-failed { color: var(--red-strong); font-size: 13px; font-weight: 600; }
#buildLog .dps-detail-diagnostic { margin: 0 0 12px; color: inherit; line-height: 1.5; white-space: normal; }
.dps-detail-phases { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.dps-detail-phases li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,.12); }
.dps-detail-phases li.failed strong { color: #ffb3c0; }
.dps-detail-phases li.succeeded strong { color: #7ee2b8; }
.dps-detail-tech { margin: 12px 0 0; opacity: .85; }
#buildLog { font: 13px/1.5 inherit; font-family: inherit; }

/* Fenêtre de mise en ligne : adresse finale en clair et deux étapes distinctes. */
.publish-address { display: grid; gap: 4px; margin: 18px 22px 0; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-blue); }
.publish-address small { color: var(--muted); font-size: var(--text-sm); font-weight: 650; }
.publish-address strong { color: var(--ink); font-size: 18px; font-weight: 800; overflow-wrap: anywhere; }
.publish-address span { color: var(--muted); font-size: var(--text-sm); line-height: 1.45; }
.publish-steps { display: flex; gap: 8px; margin: 14px 22px 0; padding: 0; list-style: none; }
@media (max-width: 560px) { .publish-address { margin: 14px 16px 0; } .publish-steps { margin: 12px 16px 0; } }
.publish-steps li { display: flex; flex: 1; align-items: center; gap: 8px; min-height: 40px; padding: 0 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--muted); font-size: var(--text-md); font-weight: 700; }
.publish-steps li > span { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; color: var(--muted); background: var(--canvas); font-size: var(--text-xs); }
.publish-steps li[aria-current="step"] { border-color: var(--blue); color: var(--ink); background: var(--surface); }
.publish-steps li[aria-current="step"] > span { color: #fff; background: var(--blue); }
.publish-steps li.done { color: var(--green); }
.publish-steps li.done > span { color: #fff; background: var(--green); }
.domain-field-error { display: block; margin-top: 6px; color: var(--red); font-size: 13px; font-weight: 600; }
#newDomainName[aria-invalid="true"] { color: var(--red); }
/* 390 px : l’adresse du site dans la pastille « Site actif » ne doit pas élargir l’écran Domaine. */
#view-domains .page-heading > div:first-child { min-width: 0; max-width: 100%; }
#view-domains .page-heading [data-site-context] { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: top; }
/* D12 : tant que la prochaine étape propose d’ajouter le nom de domaine, elle est la seule entrée
   (pas de doublon dans l’en-tête ni dans la liste vide). */
#view-domains:has(#domainNextStep [data-dps-action="add-owned"]) :is(.page-heading [data-open-domain-modal], .domain-add-row) { display: none; }
#view-domains:has(#domainNextStep [data-dps-action="add-owned"]) .domain-list-panel:not(:has(.domain-card))::after { content: "Aucune adresse pour l’instant."; display: block; padding: 14px 18px 18px; color: var(--muted); font-size: 13.5px; }

/* Fenêtre de publication : le titre et le bouton Fermer restent visibles quand le contenu défile. */
#publishModal .modal-header { position: sticky; top: 0; z-index: 3; background: var(--surface); }
/* Site envoyé, adresse en cours d’activation : message clair, la fenêtre peut être fermée. */
.publish-sent { align-items: flex-start; margin: 14px 22px 0; }
.publish-sent > svg { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--blue-strong); }
.publish-sent p { margin: 2px 0 0; font-size: var(--text-sm); line-height: 1.45; }
@media (max-width: 560px) { .publish-sent { margin: 12px 16px 0; } }
/* Échec de mise en ligne : ce qui a échoué, pourquoi, quoi faire. */
.publish-error { align-items: flex-start; margin: 14px 22px 0; border: 1px solid color-mix(in srgb, var(--red) 35%, var(--line)); background: var(--surface-red); }
.publish-error > svg { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--red); }
.publish-error p { margin: 2px 0 0; font-size: var(--text-sm); line-height: 1.45; }
.publish-error .publish-error-next { color: var(--muted); }
@media (max-width: 560px) { .publish-error { margin: 12px 16px 0; } }
.publish-steps li.error { border-color: color-mix(in srgb, var(--red) 45%, var(--line)); color: var(--red); }
.publish-steps li.error > span { color: var(--surface); background: var(--red); }
@media (max-width: 560px) { .publish-steps li { min-width: 0; padding: 0 10px; white-space: nowrap; font-size: var(--text-sm); } }

/* =========================================================================
   Refonte : cartes à filet sans ombre, une seule couleur d’accent, chiffres alignés.
   ========================================================================= */
:is(#view-domains, #view-deployments, #view-security) .panel { border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: none; }
:is(#view-domains, #view-deployments, #view-security) .panel-heading h2 { font-size: 16px; font-weight: 600; letter-spacing: -.01em; }
:is(#view-domains, #view-deployments, #view-security) .panel-heading p { max-width: 65ch; color: var(--muted); }
/* Prochaine étape : fond bleu uni, sans dégradé ni ombre. */
:is(#view-domains, #view-deployments, #view-security) .next-step { border: 1px solid color-mix(in srgb, var(--blue) 22%, var(--line)); background: var(--surface-blue); box-shadow: none; }
:is(#view-domains, #view-deployments, #view-security) .dps-next-icon { border: 1px solid color-mix(in srgb, var(--blue) 18%, var(--line)); box-shadow: none; }
:is(#view-domains, #view-deployments, #view-security) .security-placeholder { min-height: 180px; color: var(--ink); }
:is(#view-domains, #view-deployments, #view-security) .security-placeholder svg { width: 24px; height: 24px; color: var(--muted); }
:is(#view-domains, #view-deployments, #view-security) .security-placeholder strong { font-weight: 600; }
:is(#view-domains, #view-deployments, #view-security) .security-placeholder span { max-width: 48ch; color: var(--muted); }

/* Comment se passe une publication : une bande en trois temps, pas trois cartes. */
.dps-how { gap: 0; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); }
.dps-how li { padding: 14px 18px; border: 0; border-radius: 0; background: transparent; }
.dps-how li + li { border-left: 1px solid var(--line); }
.dps-how li strong { font-weight: 600; }
.dps-how-num { width: 26px; height: 26px; color: var(--muted); background: var(--surface-3); font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; }
#view-deployments .deploy-summary { border-radius: var(--radius-lg); }
#view-deployments .deploy-summary strong { font-weight: 600; font-variant-numeric: tabular-nums; }
.dps-release-title strong { font-weight: 600; }
.dps-release-when, .dps-release-tech { font-variant-numeric: tabular-nums; }

/* Score de sécurité : carte claire, l’anneau porte la couleur d’état. */
#view-security .security-score-block { min-height: 0; padding: 24px; border: 1px solid var(--line); border-radius: var(--radius-lg); color: var(--ink); background: var(--surface); }
#view-security .security-score-block p { color: var(--muted); }
#view-security .security-score-ring { width: 120px; height: 120px; border-width: 10px; }
#view-security .security-score-ring span { color: var(--ink); font-size: 38px; font-weight: 600; letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
#view-security .security-score-ring small { color: var(--muted); }
#view-security #securityProgressValue { font-variant-numeric: tabular-nums; }
#view-security .security-layout { gap: 20px; }
#view-security .security-actions { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
#view-security .security-actions label { display: grid; gap: 6px; font-size: 13px; font-weight: 600; }
#view-security .security-actions select { min-height: var(--control-md); border-radius: var(--radius-sm); }

/* Domaines */
.dps-guide h2 { font-size: 17px; font-weight: 600; letter-spacing: -.01em; }
.dps-choices .choice { min-height: 104px; transition: border-color var(--dur-2) var(--ease-soft), background-color var(--dur-2) var(--ease-soft); }
.dps-choices .choice:hover { border-color: var(--line-hover); background: var(--surface-2); }
.dps-choices .choice:active { transform: translateY(1px); }
.dps-choices .choice strong { font-weight: 600; }
.dps-steps strong { font-weight: 600; }
.dps-step-dot { border-width: 2px; font-weight: 600; font-variant-numeric: tabular-nums; }
#view-domains .section-heading-inline h2 { font-weight: 600; }

@media (max-width: 720px) {
  .dps-how li + li { border-left: 0; border-top: 1px solid var(--line); }
  #view-security .security-score-block { padding: 18px; }
  #view-security .security-actions { flex-direction: column; align-items: stretch; }
  #view-security .security-actions, #view-security .security-actions label { width: 100%; }
  #view-security .security-actions .button { flex: 1 1 100%; justify-content: center; }
}

/* Historique des versions : chiffres techniques repliés sous la liste. */
#view-deployments .deploy-tech { max-width: 1550px; margin: 18px auto 0; }
#view-deployments .deploy-tech .deploy-summary { margin: 8px 0 0; }

/* Santé et sécurité : rapport complet replié sous les points à corriger. */
#view-security .security-tech { margin: 4px 18px 12px; }
#view-security .security-tech .security-report-summary { margin: 0; }
#view-security .security-tech .scan-engine { display: block; margin: 0; padding: 0; border: 0; color: var(--muted); font-size: var(--text-sm); }
#view-security .finding details.finding-proof { border-top: 0; }
#view-security .finding details.finding-proof > summary { min-height: 32px; padding: 2px 0; font-size: 12.5px; }

/* =========================================================================
   « Atelier calme » (docs/v2/REFONTE-DESIGN.md §4) : Mettre en ligne,
   Santé et sécurité, Nom de domaine. Plus de cartes ni d’encadré bleu :
   sections posées sur le fond, séparées par l’espace et un filet.
   ========================================================================= */
:is(#view-domains, #view-deployments, #view-security) > .at-page { max-width: var(--content-max); margin-inline: 0; }
:is(#view-domains, #view-deployments, #view-security) .at-page > .dps-readonly { margin: 0; }
:is(#view-domains, #view-deployments, #view-security) .at-page > .page-heading { max-width: none; margin: 0; }

/* ---------- Mettre en ligne ---------- */
#view-deployments .dps-publish { gap: var(--space-4); }
#view-deployments .dps-publish-title { font-size: 20px; letter-spacing: -.015em; }
#view-deployments .dps-next-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); }
#view-deployments .dps-next-actions .button.primary { min-width: 120px; justify-content: center; }
/* Historique : des lignes de liste, plus de frise ni de pastilles. */
#view-deployments .deployment-list-panel { max-width: none; margin: 0; overflow: visible; }
#view-deployments .deployment-list-panel .filters .button { padding-inline: 8px; color: var(--muted); }
#view-deployments .deployment-list-panel > .panel-heading { padding: 0; border: 0; }
#view-deployments .deployment-row.at-row { display: flex; align-items: flex-start; gap: var(--space-3); min-height: 56px; padding: 12px var(--space-2); border-bottom: 1px solid var(--line); background: transparent; }
#view-deployments .deployment-row.at-row:hover { background: var(--row-hover); }
#view-deployments .deployment-list-panel > .panel-heading + .deployment-row:not([hidden]),
#view-deployments .deployment-list-panel > .deployment-row[hidden] + .deployment-row:not([hidden]) { border-top: 1px solid var(--line); }
#view-deployments .deployment-row::before { display: none; }
#view-deployments .deployment-row:is(.is-live, .featured) { background: transparent; }
#view-deployments .deployment-row:is(.is-live, .featured) .at-row-title { font-weight: 600; }
#view-deployments .dps-release-title { gap: 4px var(--space-3); }
#view-deployments .dps-release-title .at-row-title { font-size: var(--text-md); }
#view-deployments .dps-release-main p { margin: 2px 0 0; }
#view-deployments .dps-release-note { color: inherit; }
#view-deployments .deployment-actions { align-self: center; flex-wrap: nowrap; gap: var(--space-4); }
#view-deployments .deployment-actions .icon-button { width: 32px; height: 32px; border-color: transparent; background: transparent; }
#view-deployments .deployment-actions .rollback-button { display: inline-flex; }
#view-deployments .deployment-actions .at-link:disabled { color: var(--subtle); cursor: not-allowed; text-decoration: none; }
#view-deployments #deploymentEmptyState { margin: 0; padding: var(--space-4) 0; border-top: 1px solid var(--line); }
#view-deployments .deploy-tech { max-width: none; margin: 0; }
#view-deployments .dps-checklist .at-row-title { white-space: normal; }

/* ---------- Téléphone ---------- */
@media (max-width: 720px) {
  #view-deployments .dps-next-actions .button.primary { flex: 1 1 100%; min-height: var(--touch-min); }
  #view-deployments .deployment-row.at-row { flex-wrap: wrap; row-gap: 6px; }
  #view-deployments .deployment-actions { flex-basis: 100%; justify-content: flex-start; }
  #view-deployments .deployment-actions :is(.at-link, .icon-button) { min-height: var(--touch-min); }
  #view-deployments .deployment-actions .icon-button { width: var(--touch-min); height: var(--touch-min); }
}

/* ---------- Santé et sécurité ---------- */
#view-security .security-layout.dps-security { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-6); max-width: 820px; margin: 0; }
#view-security .dps-security > .at-section:not([hidden]) ~ .at-section:not([hidden]) { padding-top: var(--space-6); border-top: 1px solid var(--line); }
#view-security .security-actions label { display: grid; gap: 4px; color: var(--ink); font-size: var(--text-sm); font-weight: 500; }
#view-security .security-actions select { min-width: 200px; }
/* Score : un grand chiffre souligné par la couleur d’état, puis une phrase. */
#view-security .security-score-block { display: grid; gap: var(--space-5); min-height: 0; padding: 0; border: 0; border-radius: 0; color: var(--ink); background: transparent; }
#view-security .dps-score { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-3) var(--space-7); }
#view-security .security-score-ring.dps-score-figure { display: inline-flex; align-items: baseline; gap: 4px; width: auto; height: auto; padding: 0 0 6px; border: 0 solid var(--line-strong); border-bottom-width: 3px; border-radius: 0; }
#view-security .dps-score-figure span { color: var(--ink); font-size: 56px; font-weight: 600; line-height: 1; letter-spacing: -.04em; font-variant-numeric: tabular-nums; }
#view-security .dps-score-figure small { color: var(--muted); font-size: var(--text-md); font-weight: 500; }
#view-security .dps-score-text { display: grid; flex: 1 1 280px; gap: 4px; min-width: 0; }
#view-security .dps-score-text h2.at-section-title { margin: 0; font-size: 20px; letter-spacing: -.015em; }
#view-security .dps-score-text .dps-plain { margin: 0 !important; max-width: 60ch; color: var(--ink-2) !important; font-size: var(--text-md); }
#view-security .dps-scan-meta { margin: 0; color: var(--muted); font-size: var(--text-xs); font-variant-numeric: tabular-nums; }
/* Ce qu’il faut faire maintenant : une phrase et une action, sans encadré. */
#view-security .dps-security-next { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3) var(--space-5); padding: 12px 0; border-block: 1px solid var(--line); }
#view-security .dps-security-next p { flex: 1 1 320px; margin: 0; color: var(--muted); font-size: var(--text-md); line-height: 1.5; }
#view-security .dps-security-next p strong { color: var(--ink); font-weight: 600; }
#view-security .dps-security-next .dps-next-actions:has(> [hidden]:only-child) { display: none; }
/* Analyse en cours : une barre fine, les phases en lignes. */
#view-security .security-progress-panel { padding: 0; border: 0; background: transparent; }
#view-security .security-progress-panel .panel-heading { padding: 0; border: 0; }
#view-security .security-progress { height: 4px; margin: 0; background: var(--surface-3); }
#view-security .security-progress i { background: var(--ink); }
#view-security .security-phases { gap: 6px; padding: 0; }
#view-security .security-phase { font-size: var(--text-sm); }
#view-security .security-phase.running { color: var(--ink); font-weight: 600; }
/* Sections « À corriger » et « Ce qui a été contrôlé » : titre de section, puis lignes. */
#view-security :is(.findings-panel, .controls-panel) { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
#view-security :is(.findings-panel, .controls-panel) > .panel-heading { align-items: baseline; padding: 0; border: 0; }
#view-security .dps-severity { display: grid; gap: var(--space-2); }
#view-security .dps-severity + .dps-severity { margin-top: var(--space-5); }
#view-security .dps-severity-title { display: flex; align-items: center; gap: var(--space-2); margin: 0; font-size: var(--text-sm); font-weight: 600; }
#view-security .dps-severity-title .at-status { color: var(--ink); font-weight: 600; }
#view-security .dps-severity-title .at-count { color: var(--muted); font-weight: 500; font-variant-numeric: tabular-nums; }
#view-security .finding.at-row { display: flex; grid-template-columns: none; align-items: flex-start; padding: 14px var(--space-2); }
#view-security .finding.at-row .at-row-main { gap: 4px; }
#view-security .finding .dps-finding-title { font-size: var(--text-md); font-weight: 600; white-space: normal; }
#view-security .finding :is(.dps-finding-detail, .dps-finding-todo) { color: var(--ink-2); font-size: var(--text-sm); line-height: 1.5; }
#view-security .finding .dps-finding-todo strong { font-weight: 600; }
#view-security .finding .finding-automation { margin: 0; font-size: var(--text-xs); }
#view-security .finding .finding-automation:not(.manual) { color: var(--ink-2); font-weight: 500; }
#view-security .finding details.finding-proof { margin: 0; }
#view-security .finding .dps-finding-actions { margin: 0; padding-top: 2px; }
#view-security .control-row.at-row { display: flex; grid-template-columns: none; min-height: 48px; padding: 10px var(--space-2); }
#view-security .control-row.at-row:last-child { border-bottom: 1px solid var(--line); }
#view-security .control-row .control-result.at-status { color: var(--ink-2); }
#view-security .control-row .at-row-title { white-space: normal; }
#view-security #securityControlCount { font-variant-numeric: tabular-nums; }
#view-security .security-tech { margin: var(--space-3) 0 0; }
@media (max-width: 720px) {
  #view-security .security-actions select { min-width: 0; width: 100%; }
  #view-security .dps-score-figure span { font-size: 48px; }
  #view-security .dps-security-next .dps-next-actions, #view-security .dps-security-next .button { width: 100%; justify-content: center; }
  #view-security .finding .dps-finding-actions .at-link, #view-deployments .at-row-actions .at-link { min-height: var(--touch-min); }
}
#view-security .dps-score-figure.scanning { animation: none; border-color: var(--blue); }

/* ---------- Nom de domaine ---------- */
/* Ce qu’il faut faire maintenant : une ligne entre deux filets, sans encadré bleu. */
#view-domains .dps-domain-next { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-3) var(--space-5); padding: 12px 0; border-block: 1px solid var(--line); }
#view-domains .dps-next-text { flex: 1 1 320px; margin: 0; color: var(--muted); font-size: var(--text-md); line-height: 1.5; }
#view-domains .dps-next-text strong { color: var(--ink); font-weight: 600; }
#view-domains .dps-next-actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
/* Guide : section posée sur le fond. */
#view-domains .dps-guide { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
#view-domains .dps-guide .card-body { display: grid; gap: var(--space-3); padding: 0; }
#view-domains .dps-guide h2 { margin: 0; font-size: var(--text-lg); font-weight: 600; letter-spacing: var(--tracking-snug); }
#view-domains .dps-guide .dps-muted { margin: 0; font-size: var(--text-sm); }
/* « Avez-vous déjà un nom de domaine ? » : trois lignes à choisir, pas trois cartes. */
#view-domains .dps-choices { margin: 0; }
#view-domains .dps-choice { width: 100%; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; color: inherit; background: transparent; font: inherit; text-align: left; text-decoration: none; cursor: pointer; }
#view-domains .dps-choice:hover { background: var(--row-hover); }
#view-domains .dps-choice:focus-visible { outline: 2px solid var(--blue); outline-offset: -2px; }
#view-domains .dps-choice:disabled { color: var(--muted); cursor: not-allowed; }
#view-domains .dps-choice .at-row-actions { color: var(--muted); }
#view-domains .dps-choice .at-row-actions svg { width: 16px; height: 16px; }
@media (max-width: 600px) { #view-domains .dps-choice .at-row-actions { display: none; } }
/* Étapes de connexion : un fil court et sobre (numéro ou coche, libellé, détail). */
#view-domains .dps-steps { gap: var(--space-3); margin: var(--space-2) 0 var(--space-2); }
#view-domains .dps-steps::before { top: 11px; height: 1px; border-radius: 0; background: var(--line-strong); }
#view-domains .dps-steps li { align-items: flex-start; gap: 6px; text-align: left; }
#view-domains .dps-steps li > span:last-child { gap: 1px; }
#view-domains .dps-step-dot { width: 22px; height: 22px; border: 1.5px solid var(--line-hover); color: var(--muted); background: var(--canvas); font-size: var(--text-xs); font-weight: 600; }
#view-domains .dps-step-dot svg { width: 12px; height: 12px; stroke-width: 3; }
#view-domains .dps-steps li.done .dps-step-dot { border-color: var(--ink-2); color: #fff; background: var(--ink-2); }
#view-domains .dps-steps li.current .dps-step-dot { border-color: var(--ink); color: var(--ink); background: var(--canvas); box-shadow: none; }
#view-domains .dps-steps li.current strong { color: var(--ink); }
#view-domains .dps-steps strong { font-size: var(--text-sm); font-weight: 600; }
#view-domains .dps-steps li.todo strong { color: var(--muted); font-weight: 500; }
/* Lignes à copier : un tableau en police à chasse fixe, copie en lien texte. */
#view-domains .dps-lines { padding: var(--space-4) 0 0; border: 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; }
#view-domains .dps-lines h3 { margin: 0 0 4px; font-size: var(--text-md); font-weight: 600; }
#view-domains .dps-lines > p { color: var(--ink-2); font-size: var(--text-sm); }
#view-domains .dps-record { border: 0; border-top: 1px solid var(--line); border-radius: 0; background: transparent; }
#view-domains .dps-record > div { grid-template-columns: 140px minmax(0, 1fr); gap: var(--space-4); padding: 10px var(--space-2); border-bottom: 1px solid var(--line); }
#view-domains .dps-record > div:last-child { border-bottom: 1px solid var(--line); }
#view-domains .dps-record dt { color: var(--muted); font-size: var(--text-sm); font-weight: 500; }
#view-domains .dps-record dd { justify-content: space-between; gap: var(--space-2) var(--space-4); }
#view-domains .dps-record code { padding: 0; border-radius: 0; color: var(--ink); background: transparent; font: 500 13.5px/1.5 var(--font-mono); user-select: all; }
#view-domains .dps-record dd > strong { font: 600 13.5px/1.5 var(--font-mono); }
#view-domains .dps-copy { min-height: 28px; }
#view-domains .dps-why { color: var(--muted); }
#view-domains .dps-why svg { color: var(--muted); }
#view-domains .dps-registrars { background: transparent; }
#view-domains #domainGuide .callout { padding: 0; border: 0; border-radius: 0; color: var(--ink-2); background: transparent; }
#view-domains #domainGuide .callout svg { color: var(--muted); }
#view-domains #domainGuide .callout.success svg { color: var(--green); }
#view-domains #domainGuide .callout.warning svg { color: var(--amber); }
#view-domains #domainGuide .callout .badge.info { color: var(--muted); }
/* Mise en page : adresses à gauche, sites à droite ; plus de panneaux encadrés. */
#view-domains .domains-layout { gap: var(--space-6) var(--space-9); max-width: none; margin: 0; padding-top: var(--space-6); border-top: 1px solid var(--line); }
#view-domains :is(.domain-list-panel, .connection-panel) { min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
#view-domains :is(.domain-list-panel, .connection-panel) > .panel-heading { align-items: flex-start; padding: 0 0 var(--space-3); border: 0; }
#view-domains .panel-heading h2 { font-size: var(--text-lg); }
#view-domains #domainFilter { width: 32px; height: 32px; border-color: transparent; background: transparent; }
/* Adresses : des lignes avec un état en texte et un point de couleur. */
#view-domains .domain-card { grid-template-columns: minmax(0, 1fr) auto auto; gap: var(--space-3); width: auto; max-width: none; min-height: 52px; margin: 0; padding: 8px var(--space-2); border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; transition: background-color var(--dur-2) var(--ease-soft); }
#view-domains .panel-heading + .domain-card, #view-domains .domain-list-panel > .domain-card:first-of-type { border-top: 1px solid var(--line); }
#view-domains .domain-card:hover { background: var(--row-hover); }
#view-domains .domain-card > .domain-icon, #view-domains .domain-card > svg.lucide-grip-vertical { display: none; }
#view-domains .domain-card > span:nth-child(2) strong { font-weight: 500; }
#view-domains .domain-card small { font-size: var(--text-xs); }
#view-domains .subdomain-card { margin: 0; padding-left: calc(var(--space-2) + 16px); border-left: 0; background: transparent; }
#view-domains .domain-card-connectable { grid-template-columns: minmax(0, 1fr) auto; }
#view-domains .domain-card-connectable > .domain-card-actions { grid-column: 1 / -1; justify-content: flex-start; }
#view-domains .domain-card-actions .icon-button { width: 32px; height: 32px; border-color: transparent; background: transparent; }
#view-domains :is(.domain-card, .destination-card) .state { display: inline-flex; align-items: center; gap: 6px; }
#view-domains :is(.domain-card, .destination-header) .state::before { width: 7px; height: 7px; flex: none; border-radius: 50%; background: var(--subtle); content: ""; }
#view-domains :is(.domain-card, .destination-header) .state.ok-state::before { background: var(--green); }
#view-domains :is(.domain-card, .destination-header) .state.danger-state::before { background: var(--red); }
#view-domains :is(.domain-card, .destination-header) .state.neutral-state::before { border: 1.5px solid var(--subtle); background: transparent; }
#view-domains :is(.domain-card, .destination-header) .state :is(.status-dot) { display: none; }
#view-domains .domain-add-row { justify-content: flex-start; width: auto; min-height: 40px; margin: var(--space-2) 0 0; padding: 0 var(--space-2); border: 0; border-radius: var(--radius-sm); color: var(--blue-strong); background: transparent; font-size: var(--text-sm); font-weight: 500; }
#view-domains .domain-add-row:hover { color: var(--ink); background: var(--row-hover); }
#view-domains .domain-add-row svg { width: 16px; height: 16px; }
#view-domains:has(#domainNextStep [data-dps-action="add-owned"]) .domain-list-panel:not(:has(.domain-card))::after { padding: var(--space-3) var(--space-2); border-top: 1px solid var(--line); font-size: var(--text-md); }
/* Sites : une ligne par site (nom, type, état), les adresses reliées dessous. */
#view-domains .section-heading-inline { margin-bottom: var(--space-3); }
#view-domains .section-heading-inline h2 { font-size: var(--text-lg); }
#view-domains .project-destinations, #view-domains .project-destinations.list-view { grid-template-columns: minmax(0, 1fr); gap: 0; border-top: 1px solid var(--line); }
#view-domains .destination-card, #view-domains .project-destinations.list-view .destination-card { display: block; overflow: visible; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; box-shadow: none; animation: none; }
#view-domains .destination-card.drop-active { background: var(--row-hover); box-shadow: inset var(--accent-bar) 0 0 var(--blue); }
#view-domains .destination-card > img { display: none; }
#view-domains .destination-header { min-height: 52px; padding: 8px var(--space-2); }
#view-domains .destination-header .project-favicon { display: none; }
#view-domains .destination-header strong { font-weight: 500; }
#view-domains .destination-header small { font-size: var(--text-xs); }
#view-domains .dps-site-current { margin: -4px 0 6px; padding: 0 var(--space-2); border-radius: 0; color: var(--muted); background: transparent; font-size: var(--text-xs); font-weight: 500; }
#view-domains .domain-drop-zone { margin: 0 var(--space-2) var(--space-2); border-color: var(--line-hover); border-radius: var(--radius-sm); color: var(--muted); font-size: var(--text-sm); }
#view-domains .connected-domain { min-height: 0; margin: 0 0 var(--space-2); padding: 0 var(--space-2); border-radius: 0; color: var(--ink-2); background: transparent; font-weight: 500; }
#view-domains .connected-domain.empty { min-height: 28px; padding: 0 var(--space-2); color: var(--muted); font-size: var(--text-sm); font-weight: 400; background: transparent; }
#view-domains .connected-domain.empty svg { width: 14px; height: 14px; }
#view-domains .connected-host-row { min-height: 36px; grid-template-columns: 16px minmax(0, 1fr) 32px; }
#view-domains .connected-host-row + .connected-host-row { border-top: 1px solid var(--line); }
#view-domains .connected-host-row > svg { width: 14px; height: 14px; color: var(--muted); }
#view-domains .connected-domain .host-summary strong { font-weight: 500; }
#view-domains .connected-domain .host-summary small { color: var(--muted); font-size: var(--text-xs); font-weight: 400; }
#view-domains .connected-domain .icon-button { width: 32px; height: 32px; }
/* Liaison en cours : sous les sites, sans carte. */
#view-domains .connection-panel .connection-target .domain-icon, #view-domains .connection-panel .project-favicon { display: none; }
@media (max-width: 720px) {
  #view-domains .domains-layout { padding-top: var(--space-5); }
  #view-domains .dps-domain-next .dps-next-actions, #view-domains .dps-domain-next .dps-next-actions .button { width: 100%; justify-content: center; }
  #view-domains .dps-record > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  #view-domains .dps-steps { gap: var(--space-3); }
  #view-domains .dps-steps::before { top: 11px; bottom: 11px; left: 10.5px; width: 1px; }
  #view-domains .dps-copy, #view-domains .domain-add-row { min-height: var(--touch-min); }
  #view-domains :is(.domain-card-actions .icon-button, .connected-domain .icon-button, #domainFilter) { width: var(--touch-min); height: var(--touch-min); }
}
#view-security :is(.findings-panel, .controls-panel) { grid-row: auto; min-height: 0; align-content: start; }
#view-security .dps-security-next { border-bottom: 0; }
#view-domains .dps-guide .card-body > h2 + .dps-muted { margin-top: -8px; }

/* =========================================================================
   Largeurs étroites : aucune page ne défile de côté.
   Une flexbox « colonne + retour à la ligne » envoie le bouton dans une
   deuxième colonne (Santé et sécurité : 503 px sur 320 px) et Chrome
   additionne alors la largeur des enfants.
   ========================================================================= */
:is(#view-domains, #view-deployments, #view-security) .at-page { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 860px) {
  :is(#view-domains, #view-deployments, #view-security) .at-page-head { flex-wrap: nowrap; }
}
@media (max-width: 720px) {
  #view-security .security-actions { flex-wrap: nowrap; }
  #view-security .security-actions .button { flex: none; width: 100%; }
}

/* Santé et sécurité : titres de section sans hauteur imposée ; sur grand écran,
   « À corriger » et « Ce qui a été contrôlé » côte à côte sous le score. */
#view-security :is(.findings-panel, .controls-panel) > .panel-heading { min-height: 0; }
@media (min-width: 1200px) {
  #view-security .security-layout.dps-security { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-6) var(--space-9); max-width: none; }
  #view-security .dps-security > .security-score-block,
  #view-security .dps-security > .security-progress-panel { grid-column: 1 / -1; }
  #view-security .dps-security > .findings-panel:not([hidden]) { grid-column: 1; }
  #view-security .dps-security > .controls-panel:not([hidden]) { grid-column: 2; }
  #view-security .dps-security > :is(.findings-panel, .controls-panel):not([hidden]) { padding-top: var(--space-6); border-top: 1px solid var(--line); }
  #view-security .dps-security > .findings-panel[hidden] + .controls-panel { grid-column: 1 / -1; }
}
