/* Espace public / visiteurs */
.public-auth-card { width: min(440px, calc(100vw - 30px)); }
.public-auth-separator { display:flex; align-items:center; gap:12px; margin:24px 0 14px; color:var(--faded); font-size:13px; }
.public-auth-separator::before,.public-auth-separator::after { content:""; height:1px; flex:1; background:var(--line); }
.public-auth-create,.public-auth-back { display:block; text-align:center; text-decoration:none; }
.public-auth-create { padding:11px 14px; border:1px solid var(--line); border-radius:12px; color:var(--mist); background:color-mix(in srgb,var(--surface) 78%,transparent); }
.public-auth-create:hover { border-color:var(--peach); }
.public-auth-back { margin-top:16px; color:var(--faded); font-size:14px; }
.public-field-help { display:block; margin:-6px 0 12px; color:var(--faded); }
.public-auth-warning { margin:12px 0; padding:10px 12px; border:1px solid color-mix(in srgb,#e8c98c 60%,var(--line)); border-radius:10px; color:#e8c98c; background:color-mix(in srgb,#e8c98c 10%,transparent); font-size:13px; }

.public-status-page { min-height:100vh; display:grid; place-items:center; padding:28px; }
.public-status-card { width:min(620px,100%); padding:34px; text-align:center; background:var(--surface); border:1px solid var(--line); border-radius:28px; box-shadow:0 24px 70px rgba(0,0,0,.24); }
.public-status-paws { width:min(190px,42vw); max-height:180px; object-fit:contain; margin-bottom:10px; }
.public-status-card h1 { margin:4px 0 14px; }
.public-status-card p { color:var(--faded); line-height:1.55; }
.public-status-kicker { margin:0; color:var(--peach)!important; text-transform:uppercase; letter-spacing:.13em; font-size:12px; font-weight:700; }
.public-status-pill { display:inline-flex; margin:12px 0 20px; padding:8px 13px; border:1px solid var(--line); border-radius:999px; background:var(--night); color:var(--mist); font-size:13px; }

.public-home-head { max-width:760px; margin:34px 0 24px; }
.public-home-head h1 { margin:5px 0 8px; }
.public-home-head > p:last-child { color:var(--faded); }
.public-share-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:16px; padding-bottom:40px; }
.public-share-card { min-height:155px; display:flex; flex-direction:column; justify-content:flex-end; gap:7px; padding:22px; border:1px solid var(--line); border-radius:20px; background:color-mix(in srgb,var(--surface) 92%,transparent); text-decoration:none; color:var(--mist); transition:transform .14s ease,border-color .14s ease; }
.public-share-card:hover { transform:translateY(-2px); border-color:var(--peach); }
.public-share-card strong { font-family:"Fraunces",serif; font-size:25px; }
.public-share-card > span:last-child { color:var(--peach); font-size:13px; }
.public-share-system { color:var(--faded); font-size:12px; text-transform:uppercase; letter-spacing:.11em; }

.public-empty-share { min-height:calc(100vh - 120px); display:grid; place-items:center; align-content:center; gap:12px; text-align:center; }
.public-empty-paws { width:min(300px,60vw); max-height:310px; object-fit:contain; }
.public-empty-bubble { position:static!important; max-width:560px; margin:0 auto; font-size:17px; line-height:1.45; }

/* Admin — Paramètres publics */
.public-admin-layout { display:grid; grid-template-columns:minmax(280px,420px) minmax(0,1fr); gap:22px; align-items:start; }
.public-admin-card { padding:20px; border:1px solid var(--line); border-radius:20px; background:color-mix(in srgb,var(--surface) 92%,transparent); }
.public-admin-card h2 { margin-bottom:6px; }
.public-admin-card .section-sub { margin-bottom:18px; }
.public-page-toggle-list { display:grid; gap:10px; }
.public-page-toggle { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:13px 14px; border:1px solid var(--line); border-radius:14px; background:var(--night); }
.public-page-toggle input { width:22px; height:22px; accent-color:var(--peach); }
.public-page-save { margin-top:14px; width:100%; }
.public-visitor-toolbar { display:flex; gap:10px; align-items:center; justify-content:space-between; margin-bottom:12px; }
.public-visitor-toolbar input { max-width:300px; }
.public-visitor-list { display:grid; gap:10px; }
.public-visitor-row { display:grid; grid-template-columns:minmax(130px,1fr) minmax(180px,1.3fr) 128px auto; gap:9px; align-items:center; padding:12px; border:1px solid var(--line); border-radius:14px; background:var(--night); }
.public-visitor-row input,.public-visitor-row select { min-width:0; }
.public-visitor-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.public-visitor-status { display:inline-flex; align-items:center; gap:5px; font-size:12px; }
.public-admin-message { margin-top:10px; min-height:20px; color:var(--faded); font-size:13px; }
.public-admin-message.is-error { color:var(--rose); }
.public-admin-message.is-ok { color:var(--sage); }

body[data-public-visitor="1"] .private-only { display:none!important; }
body[data-public-visitor="1"] .tree-node { cursor:pointer; }

@media (max-width:900px) {
  .public-admin-layout { grid-template-columns:1fr; }
  .public-visitor-row { grid-template-columns:1fr; }
  .public-visitor-actions { justify-content:flex-start; }
}

/* V4.10.1 — permissions publiques individualisées */
.public-visitor-row {
  display: block;
  padding: 14px;
}
.public-visitor-main {
  display: grid;
  grid-template-columns: minmax(140px,.8fr) minmax(210px,1.35fr) minmax(150px,.65fr);
  gap: 10px;
  align-items: end;
}
.public-visitor-field {
  display: grid;
  gap: 5px;
}
.public-visitor-field > span {
  color: var(--faded);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.public-visitor-permissions {
  margin-top: 13px;
  padding: 13px;
  border: 1px solid color-mix(in srgb,var(--line) 85%,transparent);
  border-radius: 13px;
  background: color-mix(in srgb,var(--surface) 48%,transparent);
}
.public-permission-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.public-permission-head > div {
  display: grid;
  gap: 2px;
}
.public-permission-head small {
  color: var(--faded);
}
.public-permission-count {
  min-width: 44px;
  padding: 5px 9px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--peach);
  background: var(--night);
  font-size: 12px;
  font-weight: 700;
  text-align: center;
}
.public-permission-list {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 8px;
}
.public-permission-toggle {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 62px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--night);
}
.public-permission-toggle > span {
  display: grid;
  gap: 3px;
}
.public-permission-toggle small {
  color: var(--faded);
  line-height: 1.25;
}
.public-permission-toggle input {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  accent-color: var(--peach);
}
.public-permission-toggle.is-global-locked {
  opacity: .52;
  border-style: dashed;
}
.public-permission-toggle.is-global-locked input {
  cursor: not-allowed;
}
.public-visitor-row.has-unsaved-changes {
  border-color: color-mix(in srgb,var(--peach) 70%,var(--line));
  box-shadow: inset 0 0 0 1px color-mix(in srgb,var(--peach) 24%,transparent);
}
.public-visitor-row .public-visitor-actions {
  margin-top: 12px;
  justify-content: flex-start;
}

@media (max-width:900px) {
  .public-visitor-main,
  .public-permission-list { grid-template-columns:1fr; }
}


/* V4.10.2 — accès visiteurs uniquement par compte */
.public-admin-layout-single {
  display: block;
}
.public-admin-layout-single > .public-admin-card {
  width: 100%;
}
.public-permission-list-single {
  grid-template-columns: 1fr;
}

/* ===== Arbre relationnel commun : double consentement Sector + Nöstrædìøẋ ===== */
.public-shared-card { display: grid; gap: 14px; }
.public-shared-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}
.public-shared-head h2 { margin: 2px 0 5px; }
.public-shared-ready {
  flex: 0 0 auto;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--faded);
  background: color-mix(in srgb, var(--night) 72%, var(--surface));
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}
.public-shared-ready.is-ready {
  color: var(--sage);
  border-color: color-mix(in srgb, var(--sage) 48%, var(--line));
}
.public-shared-consent {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 13px 15px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: color-mix(in srgb, var(--surface) 76%, var(--night));
}
.public-shared-consent > span { display: grid; gap: 3px; min-width: 0; }
.public-shared-consent strong { color: var(--mist); }
.public-shared-consent small { color: var(--faded); line-height: 1.35; }
.public-shared-consent input {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
  accent-color: var(--peach);
}
.public-shared-votes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.public-shared-vote {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: color-mix(in srgb, var(--night) 76%, var(--surface));
}
.public-shared-vote span { color: var(--faded); font-size: 12px; font-weight: 800; }
.public-shared-vote strong { color: var(--peach); font-size: 12px; }
.public-shared-vote strong.is-ok { color: var(--sage); }
.public-shared-note { margin: 0; color: var(--faded); font-size: 13px; line-height: 1.45; }

/* La page publique du graphe utilise tout l'espace disponible. */
.public-relation-graph-page .relation-graph-admin { margin-top: 18px; }
.public-relation-graph-page .relation-graph-stage { min-height: 600px; }

@media (max-width: 720px) {
  .public-shared-head { flex-direction: column; }
  .public-shared-votes { grid-template-columns: 1fr; }
  .public-shared-consent { align-items: flex-start; }
}


/* ===== Arbre relationnel : double validation PAR VISITEUR ===== */
.public-permission-toggle-shared {
  align-items: flex-start;
}
.public-permission-toggle-shared > span {
  display: grid;
  gap: 8px;
}
.public-relation-approval {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 3px;
  padding: 8px 10px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: color-mix(in srgb, var(--night) 74%, var(--surface));
}
.public-relation-approval-votes {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}
.public-relation-approval-votes span {
  padding: 4px 7px;
  border: 1px solid var(--line);
  border-radius: 999px;
  color: var(--peach);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}
.public-relation-approval-votes span.is-ok {
  color: var(--sage);
  border-color: color-mix(in srgb, var(--sage) 45%, var(--line));
}
.public-relation-approval > strong {
  color: var(--peach);
  font-size: 11px;
  white-space: nowrap;
}
.public-relation-approval.is-ready > strong {
  color: var(--sage);
}
@media (max-width: 640px) {
  .public-relation-approval {
    align-items: flex-start;
    flex-direction: column;
  }
}
