/* Domogénie : jetons de la maquette v1 validée (charte Urbanicia). Nuit par défaut. */
:root{--bg:#FFF9F2;--surface:#FFFFFF;--sunken:#FBF3E8;--sb:#132E32;--sb-t:#FFF9F2;--sb-m:#9FB0AC;--sb-a:rgba(255,255,255,.08);
--text:#051A1D;--text2:#3D4A55;--muted:#7D8599;--border:#D9D9D9;--bs:#5C6478;
--accent:#75B72A;--accent-t:#051A1D;--accent-fg:#4A7A17;--accent-bg:#EEF7E0;
--ok:#1F8A4C;--ok-bg:#E3F3E6;--warn:#A8710A;--warn-bg:#FAEDD3;--danger:#B3261E;--danger-bg:#F8DEDC;
--shadow:0 1px 2px rgba(5,26,29,.06),0 1px 8px rgba(5,26,29,.04);--r:14px;color-scheme:light}
:root[data-theme=nuit]{--bg:#051A1D;--surface:#132E32;--sunken:#0D2529;--text:#FFF9F2;--text2:#C9D3D0;--muted:#93A5A1;
--border:rgba(255,249,242,.12);--bs:#4A7A80;--accent-fg:#75B72A;--accent-bg:rgba(117,183,42,.14);
--ok:#6FD69A;--ok-bg:rgba(111,214,154,.14);--warn:#F0B854;--warn-bg:rgba(240,184,84,.14);--danger:#F0827C;--danger-bg:rgba(240,130,124,.14);
--shadow:0 1px 2px rgba(0,0,0,.24),0 1px 8px rgba(0,0,0,.18);color-scheme:dark}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;background:var(--bg);color:var(--text);font:400 13px/1.45 Inter,system-ui,sans-serif}
h1,h2,h3{font-family:Outfit,Inter,sans-serif;color:var(--text);margin:0}
a{color:var(--accent-fg)}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
.cache{display:none!important}

/* connexion */
.connexion{min-height:100%;display:grid;place-items:center;padding:16px}
.connexion .card{width:min(380px,100%);padding:28px}
.connexion h1{font-size:22px;margin-bottom:4px}
.connexion p{margin:0 0 16px;color:var(--text2)}
label{display:block;margin:12px 0 4px;font-size:12px;color:var(--text2)}
input[type=email],input[type=password],input[type=search]{width:100%;padding:9px 12px;border-radius:6px;border:1px solid var(--bs);background:var(--surface);outline:0}
input:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.err{color:var(--danger);margin:10px 0 0;min-height:1.4em}

/* coque */
.app{display:flex;min-height:100%}
aside.sb{width:240px;flex:none;background:var(--sb);color:var(--sb-t);padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.logo{display:flex;align-items:center;gap:10px;font-family:Outfit;font-weight:700;font-size:15px;letter-spacing:.04em;margin-bottom:28px}
.logo i{width:26px;height:26px;border-radius:7px;background:var(--accent);display:block}
.nav{display:flex;flex-direction:column;gap:4px}
.nav a{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:8px;font-size:14px;font-weight:500;color:var(--sb-m);text-decoration:none}
.nav a.act{background:var(--sb-a);color:var(--sb-t)}
.sb .bas{margin-top:auto;font-size:12px;color:var(--sb-m)}
.col{flex:1;min-width:0;display:flex;flex-direction:column}
header.haut{display:flex;align-items:center;gap:16px;padding:12px 32px}
.recherche{flex:1;max-width:560px}
.recherche input{border-radius:999px;padding:9px 18px;font-size:14px}
.pastille{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:6px 14px;font-weight:500}
.sp{flex:1}
main{padding:0 32px 32px}
.pt{padding:4px 0 16px}.pt h1{font-size:24px;font-weight:700}.pt p{margin:2px 0 0;color:var(--text2);font-size:14px}
.fil{font-size:13px;margin-bottom:8px;color:var(--text2)}

/* composants */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);padding:16px 18px}
.btn{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:8px 20px;font-size:14px;font-weight:600;border:1px solid transparent;background:var(--accent);color:var(--accent-t)}
.grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
a.secteur{display:block;text-decoration:none;color:inherit}
a.secteur:hover{border-color:var(--accent)}
.secteur .code{font:700 12px Outfit;color:var(--accent-fg);letter-spacing:.06em}
.secteur h3{font-size:16px;margin:4px 0 10px}
.secteur .n{font:700 24px Outfit}
.secteur small{color:var(--text2)}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;font-size:12px;color:var(--text2);font-weight:600;padding:8px 12px;border-bottom:1px solid var(--border)}
td{padding:9px 12px;border-bottom:1px solid var(--border)}
tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums}
.tag{display:inline-block;border-radius:999px;padding:1px 10px;font-size:12px;font-weight:600;background:var(--sunken);border:1px solid var(--border)}
.tag.a{background:var(--accent-bg);border-color:var(--accent)}
.tag.hors{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
.vide{color:var(--muted);padding:20px 0}
h2.sous{font-size:16px;margin:20px 0 10px}

@media (max-width:820px){
  .app{flex-direction:column}
  aside.sb{width:100%;height:auto;position:static;flex-direction:row;align-items:center;padding:10px 16px;gap:16px}
  .logo{margin:0}.sb .bas{display:none}
  header.haut{padding:10px 16px;flex-wrap:wrap}
  main{padding:0 16px 24px}
  .card.tableau{overflow-x:auto}
}

/* fiches du bâti */
.code-fiche{font:700 12px Outfit;color:var(--accent-fg);letter-spacing:.06em}
.miroir{margin:0 0 12px;color:var(--text2)}
.chapo{margin-bottom:12px;font-size:15px;line-height:1.6}
.chapo p{margin:0}
.genie{color:var(--text2);margin:0 0 16px}
.fiche{display:flex;flex-direction:column;gap:16px;max-width:860px}
.rubrique h2{font-size:17px;margin-bottom:10px}
.rubrique h2 .n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--accent-bg);color:var(--accent-fg);font-size:13px;margin-right:10px}
.texte{font-size:15px;line-height:1.65}
.texte p{margin:0 0 12px}
.texte h3{font-size:15px;margin:18px 0 6px}
.texte ul,.texte ol{margin:0 0 12px;padding-left:22px}
.texte table{margin:8px 0 14px;font-size:14px}
.texte th,.texte td{vertical-align:top}
.texte .piege,.texte .encadre,.texte .alimente,.texte .limite,.texte .terrain{border-left:4px solid var(--accent);background:var(--accent-bg);border-radius:8px;padding:10px 14px;margin:12px 0}
.texte .piege{border-color:var(--warn);background:var(--warn-bg)}
.texte .etiquette{display:inline-block;font:700 11px Outfit;letter-spacing:.06em;text-transform:uppercase;margin-bottom:4px}
a.resultat{display:block;text-decoration:none;color:inherit;margin-bottom:10px}
a.resultat:hover{border-color:var(--accent)}
a.resultat p{margin:6px 0 0;color:var(--text2);font-size:13px}
a.resultat .rub{color:var(--text2)}

/* méthode */
.onglets{display:flex;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.onglets a{border:1px solid var(--border);border-radius:999px;padding:6px 16px;font-weight:500;text-decoration:none;color:var(--text2);background:var(--surface)}
.onglets a.act{background:var(--accent-bg);border-color:var(--accent);color:var(--text)}
.filtres{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 4px}
.filtres a.tag{text-decoration:none;color:var(--text)}
.muted{color:var(--muted)}
.avertissement{background:var(--warn-bg);border:1px solid var(--warn);border-radius:8px;padding:10px 14px;margin:8px 0 16px;color:var(--text)}
tr.detail td{border-bottom:1px solid var(--border);padding-top:0}
details summary{cursor:pointer;color:var(--accent-fg);font-weight:500}
details pre{white-space:pre-wrap;font:12.5px/1.5 ui-monospace,Consolas,monospace;background:var(--sunken);border-radius:8px;padding:12px;margin:8px 0 0}
