/* ZS-SCELLES-REGISTRE-V1 · 5 septembre 2026 · session PAGES-2 · ligne L119 ========================================================================= POURQUOI · le script de /scelles/ a ete ecrit AVANT L26 · il peint les empreintes, les titres et les echeances, et RIEN de ce que /api/scelles sert depuis · ni la cote, ni la source, ni l hypothese, ni l arene, ni le taux attendu, ni les mal formes, ni les manquees par silence, ni le temoin de persistance, ni le formulaire de contestation. Les points 4 et 6 de la section 6 de l ŒUVRE I etaient tenus A L API et absents DE LA PAGE. ------------------------------------------------------------------------- ⛔ CE MODULE N ECRIT AUCUN NOMBRE. Pas un seuil, pas un compte, pas un taux, pas un libelle de cote · tout se lit en direct sur /api/scelles. Un chiffre recopie dans une page est un chiffre qui divergera, et le jour ou il divergera personne ne le saura. ⛔ IL NE PEINT QUE CE QUE L API A SERVI · un champ absent ne fabrique pas une ligne. La ou l API rend null, la page se tait, elle n invente pas un zero · un zero rendu par une absence est indiscernable d un zero vrai (constante 5 ter). ⛔ LE PLANCHER DE SEIZE PIXELS TIENT ICI AUSSI · les seules choses servies sous seize sont des etiquettes de rang L, trois mots au plus, sans verbe et sans ponctuation de phrase. ⛔ AUCUN text-transform:uppercase · toute classe qui met en capitales renverse un jour la marque z/S (constante 16). Marche arriere · retirer la balise ZS-SCELLES-REGISTRE-V1 du codeinjection_head de /scelles/ · les conteneurs restent vides et muets. z/S SYSTEMS · HYPOTHESIS · PROPHECY · NUMBER ========================================================================= */ (function () { 'use strict'; var API = 'https://zoesagan-oracle-v2.vercel.app'; var R = document.documentElement; if (R.getAttribute('data-zs-scelles-registre')) return; R.setAttribute('data-zs-scelles-registre', 'v1'); var CSS = [ '#zscl-regle{margin:0 auto;padding:0}', '#zscl-regle .zsr-bloc{margin:0 0 34px}', '#zscl-regle .zsr-k{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:16px;', ' letter-spacing:.18em;line-height:1.5;color:#FFD480;-webkit-text-fill-color:#FFD480;', ' margin:0 0 12px;text-transform:none;font-style:normal}', '#zscl-regle .zsr-p{font-family:"Newsreader",Georgia,serif;font-size:17px;line-height:1.62;', ' color:#E8DCCB;-webkit-text-fill-color:#E8DCCB;margin:0 0 12px;max-width:62ch;font-style:normal}', '#zscl-regle .zsr-cotes,#zscl-regle .zsr-dom{display:grid;gap:10px;margin:0 0 8px;', ' grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr))}', '#zscl-regle .zsr-c,#zscl-regle .zsr-d{border:1px solid rgba(255,212,128,.26);border-radius:10px;', ' padding:13px 15px;background:rgba(255,245,230,.025)}', '#zscl-regle .zsr-c b,#zscl-regle .zsr-d b{display:block;font-family:"JetBrains Mono",ui-monospace,monospace;', ' font-size:16px;letter-spacing:.12em;color:#B8E0FF;-webkit-text-fill-color:#B8E0FF;font-weight:400;margin:0 0 6px}', '#zscl-regle .zsr-c span,#zscl-regle .zsr-d span{display:block;font-family:"Newsreader",Georgia,serif;', ' font-size:17px;line-height:1.5;color:#FFF5E6;-webkit-text-fill-color:#FFF5E6}', '#zscl-regle .zsr-cadre{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;margin:0 0 12px}', '#zscl-regle table{border-collapse:collapse;width:100%;min-width:320px;', ' font-family:"JetBrains Mono",ui-monospace,monospace}', '#zscl-regle th,#zscl-regle td{border-bottom:1px solid rgba(255,212,128,.2);padding:9px 14px 9px 0;', ' text-align:left;vertical-align:top;font-size:16px;line-height:1.5;color:#DCD0C4;-webkit-text-fill-color:#DCD0C4}', '#zscl-regle th{color:#B8E0FF;-webkit-text-fill-color:#B8E0FF;font-weight:400}', '#zscl-regle td.n{color:#FFD480;-webkit-text-fill-color:#FFD480;font-variant-numeric:tabular-nums}', '#zscl-regle .zsr-fiche{border:1px solid rgba(255,212,128,.3);border-radius:12px;padding:18px 18px 14px;', ' margin:0 0 14px;background:rgba(255,245,230,.025)}', '#zscl-regle .zsr-fiche h3{font-family:"Fraunces",Georgia,serif;font-size:clamp(21px,4vw,28px);', ' font-weight:600;line-height:1.16;color:#FFF5E6;-webkit-text-fill-color:#FFF5E6;margin:0 0 10px}', '#zscl-regle .zsr-l{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:16px;letter-spacing:.1em;', ' color:#FF1F8B;-webkit-text-fill-color:#FF1F8B;margin:0 0 8px;text-transform:none}', '#zscl-regle .zsr-champ{margin:0 0 8px;font-family:"Newsreader",Georgia,serif;font-size:17px;line-height:1.55;', ' color:#DCD0C4;-webkit-text-fill-color:#DCD0C4}', '#zscl-regle .zsr-champ b{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:16px;', ' letter-spacing:.1em;color:#B8E0FF;-webkit-text-fill-color:#B8E0FF;font-weight:400}', '#zscl-regle a{color:#FFD480;-webkit-text-fill-color:#FFD480}', '#zscl-regle form{border:1px solid rgba(184,224,255,.34);border-radius:12px;padding:18px;', ' background:rgba(184,224,255,.03);max-width:640px}', '#zscl-regle label{display:block;font-family:"JetBrains Mono",ui-monospace,monospace;font-size:16px;', ' letter-spacing:.1em;color:#B8E0FF;-webkit-text-fill-color:#B8E0FF;margin:0 0 6px;text-transform:none}', '#zscl-regle input,#zscl-regle textarea{display:block;width:100%;box-sizing:border-box;margin:0 0 14px;', ' padding:11px 12px;font-family:"Newsreader",Georgia,serif;font-size:17px;line-height:1.5;', ' color:#FFF5E6;-webkit-text-fill-color:#FFF5E6;background:rgba(5,0,16,.6);', ' border:1px solid rgba(255,245,230,.22);border-radius:6px}', '#zscl-regle textarea{min-height:96px;resize:vertical}', '#zscl-regle button{font-family:"JetBrains Mono",ui-monospace,monospace;font-size:16px;letter-spacing:.14em;', ' color:#12000c;-webkit-text-fill-color:#12000c;background:linear-gradient(90deg,#FFD480,#FF1F8B);', ' border:0;border-radius:999px;padding:13px 24px;cursor:pointer;text-transform:none}', '#zscl-regle .zsr-reponse{margin:12px 0 0;font-family:"Newsreader",Georgia,serif;font-size:17px;', ' line-height:1.55;color:#FFF5E6;-webkit-text-fill-color:#FFF5E6}', /* ⛔ MESURÉ AU BANC DU REGARD À 356 ET 386 px · le bouton d envoi peignait quatre cent cinq pixels dans un viewport de trois cent cinquante six · il sortait de l ecran SANS que la page defile, et personne ne pouvait le ramener · c est le defaut exact que L168 venait de reparer sur .zscl, et je l avais refabrique en ajoutant ma propre section. Une addition centree se mesure a la plus petite largeur, jamais a la plus grande. */ '#zscl-regle button{max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.4}', '#zscl-regle .zsr-cadre table{min-width:0}', '@media(max-width:430px){#zscl-regle button{letter-spacing:.06em;padding:13px 14px}', ' #zscl-regle .zsr-k{letter-spacing:.1em;overflow-wrap:anywhere}', ' #zscl-regle label{overflow-wrap:anywhere}}', '#zscl-regle .zsr-muet{font-family:"Newsreader",Georgia,serif;font-size:17px;line-height:1.6;', ' color:#B9A8CC;-webkit-text-fill-color:#B9A8CC;margin:0;font-style:italic}' ].join('\n'); function poserFeuille() { if (document.getElementById('zs-scelles-registre-v1')) return; var s = document.createElement('style'); s.id = 'zs-scelles-registre-v1'; s.textContent = CSS; document.head.appendChild(s); } var E = function (s) { return String(s == null ? '' : s) .replace(/&/g, '&').replace(//g, '>') .replace(/"/g, '"'); }; var $ = function (i) { return document.getElementById(i); }; /* ⭐ UN NOMBRE SERVI SE PEINT TEL QUEL · on ne l arrondit pas, on ne le complete pas, on ne lui invente pas une unite. Absent, la ligne se tait. */ function nb(v) { return (v === null || v === undefined || v === '') ? null : String(v); } function ligne(cle, valeur) { if (valeur === null) return ''; return '' + E(cle) + '' + E(valeur) + ''; } function peindreCotes(d) { var c = d && d.cotes; if (!c) return; var h = ''; Object.keys(c).forEach(function (k) { h += '
' + E(k) + '' + E(c[k]) + '
'; }); var n = $('zscl-cotes'); if (n) n.innerHTML = h; } function peindreDomaines(d) { var l = d && d.domaines; if (!l || !l.length) return; var h = ''; l.forEach(function (x) { h += '
' + E(x.code) + '' + E(x.nom) + '
'; }); var n = $('zscl-domaines'); if (n) n.innerHTML = h; var n2 = $('zscl-domaines-liste'); if (n2) n2.innerHTML = l.map(function (x) { return E(x.nom); }).join(' · '); } function peindreRegistre(d) { var r = d && d.registre; if (!r) return; var t = '
'; t += ligne('déposés', nb(r.deposes)); t += ligne('jugés', nb(r.juges)); t += ligne('vérifiées', nb(r.verifiees)); t += ligne('manquées', nb(r.manquees)); t += ligne('manquées par silence', nb(r.manquees_par_silence)); t += ligne('mal formés', nb(r.mal_formes)); t += ligne('taux obtenu', nb(r.taux_obtenu)); t += ligne('taux attendu', nb(r.taux_attendu)); t += '
'; if (r.sous_le_seuil) t += '

' + E(r.sous_le_seuil) + '

'; var n = $('zscl-registre'); if (n) n.innerHTML = t; var tm = r.temoin; if (tm) { var h = ''; if (tm.regle) h += '

' + E(tm.regle) + '

'; h += '
'; h += ligne('déposés', nb(tm.deposes)); h += ligne('jugés', nb(tm.juges)); h += ligne('vérifiées', nb(tm.verifiees)); h += ligne('manquées', nb(tm.manquees)); h += ligne('manquées par silence', nb(tm.manquees_par_silence)); h += ligne('taux du témoin', nb(tm.taux_temoin)); h += '
'; if (tm.sous_le_seuil) h += '

' + E(tm.sous_le_seuil) + '

'; if (r.temoin_note) h += '

' + E(r.temoin_note) + '

'; if (tm.note) h += '

' + E(tm.note) + '

'; var n2 = $('zscl-temoin'); if (n2) n2.innerHTML = h; } } /* ⛔ LA SOURCE, L HYPOTHESE ET L ARENE SONT DES CHAMPS DE SCELLE · ils ne paraissent que quand un office porte des scelles. L hypothese ne sort qu a l ouverture · avant, l API rend null, et la page le DIT au lieu de laisser un blanc qui ressemble a un oubli. */ function fiche(s) { var h = '
'; var rang = []; if (s.n != null) rang.push('n° ' + E(s.n)); if (s.domaineLibelle) rang.push(E(s.domaineLibelle)); if (s.temoin) rang.push('témoin de persistance'); if (rang.length) h += '

' + rang.join(' · ') + '

'; if (s.titre) h += '

' + E(s.titre) + '

'; if (s.coteLibelle) h += '

cote · ' + E(s.coteLibelle) + '

'; if (s.source) { var org = s.source.organe || s.source.nom || ''; var adr = s.source.adresse || s.source.url || s.source.lien || ''; var v = E(org); if (adr) v += (org ? ' · ' : '') + '' + E(adr) + ''; if (!org && !adr && typeof s.source === 'string') v = E(s.source); h += '

source · ' + v + '

'; } if (s.arene) h += '

arène · ' + E(s.arene) + '

'; if (s.echeance) h += '

échéance · ' + E(s.echeance) + (s.heure ? ' · ' + E(s.heure) : '') + '

'; if (s.hypothese) h += '

hypothèse · ' + E(s.hypothese) + '

'; else if (!s.ouvert) h += '

hypothèse · scellée avec le texte · elle paraît à l ouverture

'; if (s.verdict && s.verdict.verdict) { h += '

verdict · ' + E(s.verdict.verdict); if (s.verdict.lien) h += ' · la source lue'; h += '

'; } h += '
'; return h; } function peindreOffice(d) { var o = (d && d.dernier_ouvert) || (d && d.en_cours) || null; var n = $('zscl-office'); if (!n) return; if (!o) { n.innerHTML = '

Aucun office ne porte encore de scellé. Cette page ne montrera jamais une cote, une source ou une arène qui n existent pas.

'; return; } var h = ''; if (o.taux_attendu_de_l_office !== null && o.taux_attendu_de_l_office !== undefined) { h += '
' + ligne('taux attendu de cet office', nb(o.taux_attendu_de_l_office)) + '
'; } (o.scelles || []).forEach(function (s) { h += fiche(s); }); (o.temoins || []).forEach(function (s) { h += fiche(s); }); if (!h) h = '

Cet office ne porte encore aucun scellé.

'; n.innerHTML = h; var f = $('zscl-contest-office'); if (f && o.id) { f.value = o.id; } } /* ⛔ LE FORMULAIRE NE PROMET RIEN · la fenetre, le refus et le motif du refus sont rendus par l API. Une page qui ecrit elle meme la regle finit par mentir le jour ou la regle change. */ function armerContestation() { var f = $('zscl-contest'); if (!f) return; f.addEventListener('submit', function (ev) { ev.preventDefault(); var rep = $('zscl-contest-reponse'); var corps = { office: ($('zscl-contest-office') || {}).value || '', n: ($('zscl-contest-n') || {}).value || '', source: ($('zscl-contest-source') || {}).value || '', motif: ($('zscl-contest-motif') || {}).value || '', qui: ($('zscl-contest-qui') || {}).value || '' }; if (rep) rep.textContent = 'Envoi en cours.'; fetch(API + '/api/scelles/contester', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(corps) }).then(function (r) { return r.json().then(function (j) { return { code: r.status, j: j }; }); }) .then(function (x) { if (!rep) return; if (x.j && x.j.message) { rep.textContent = x.j.message; return; } if (x.j && x.j.refus && x.j.refus.length) { rep.textContent = x.j.refus.join(' · '); return; } if (x.j && x.j.error) { rep.textContent = x.j.error; return; } rep.textContent = 'Le registre a répondu sans message.'; }) .catch(function () { if (rep) rep.textContent = 'Le registre ne répond pas à cette heure. Rien n a été enregistré.'; }); }); } function pret(f) { if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', f); else f(); } pret(function () { if (!$('zscl-regle')) return; poserFeuille(); armerContestation(); fetch(API + '/api/scelles', { headers: { Accept: 'application/json' } }) .then(function (r) { return r.json(); }) .then(function (d) { if (!d || d.ok !== true) throw new Error('api'); peindreCotes(d); peindreDomaines(d); peindreRegistre(d); peindreOffice(d); R.setAttribute('data-zs-scelles-registre-peint', 'oui'); }) .catch(function () { var n = $('zscl-registre'); if (n) n.innerHTML = '

Le registre ne répond pas à cette heure. La page ne montre pas de chiffre qu elle n a pas lu.

'; }); }); })();