:root{--fond: #14100b;--fond-eleve: #1f1810;--fond-survol: #2a20153a;--texte: #ece2c9;--texte-att: #a89878;--accent: #c08a3e;--accent-att: #8c6428;--accent-secondaire: #6f8f6a;--bordure: #382c1d;--rouge: #b5483d;--vert: #6f9b6f;--ombre: 0 6px 28px rgba(0, 0, 0, .55);--rayon: 10px;--rayon-petit: 6px;--police-titre: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--police-corps: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--police-ui: -apple-system, "Segoe UI", system-ui, sans-serif;--barre-basse-h: 68px}:root[data-theme=clair]{--fond: #ece0c4;--fond-eleve: #f8f0da;--fond-survol: #00000012;--texte: #2b2013;--texte-att: #6b5a3a;--accent: #8a5a2b;--accent-att: #6b4620;--accent-secondaire: #4f6b4a;--bordure: #cdba8c;--ombre: 0 6px 24px rgba(60, 40, 10, .14)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") repeat,radial-gradient(ellipse 900px 500px at 50% -10%,color-mix(in srgb,var(--accent) 12%,transparent),transparent),radial-gradient(ellipse 800px 600px at 50% 110%,color-mix(in srgb,black 18%,transparent),transparent),var(--fond);color:var(--texte);font-family:var(--police-corps);-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button,input,textarea,select{font-family:var(--police-ui);color:inherit}button{cursor:pointer;background:none;border:none}a{color:var(--accent)}.ecran{min-height:100%;padding-bottom:calc(var(--barre-basse-h) + 24px)}.conteneur{max-width:720px;margin:0 auto;padding:16px}.carte-ui{background:var(--fond-eleve);border:1px solid var(--bordure);border-radius:var(--rayon);padding:16px;box-shadow:inset 0 1px color-mix(in srgb,var(--texte) 4%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--accent) 4%,transparent)}.titre-h1{position:relative;display:inline-block;font-family:var(--police-titre);font-size:1.7rem;letter-spacing:.01em;margin:0 0 18px;padding-bottom:9px;color:var(--texte)}.titre-h1:after{content:"";position:absolute;left:1px;bottom:0;width:46px;height:2px;background:linear-gradient(90deg,var(--accent),transparent)}.titre-h2{font-family:var(--police-ui);font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.11em;color:var(--accent-att);margin:0 0 10px}.texte-att{color:var(--texte-att);font-size:.9rem}.champ{width:100%;padding:10px 12px;background:var(--fond);border:1px solid var(--bordure);border-radius:var(--rayon-petit);font-size:1rem;font-family:var(--police-corps)}.champ:focus{outline:2px solid var(--accent);outline-offset:-1px}.bouton{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:var(--rayon-petit);background:var(--fond-eleve);border:1px solid var(--bordure);font-size:.92rem;font-family:var(--police-ui);transition:border-color .15s ease,color .15s ease}.bouton:hover{border-color:var(--accent-att)}.bouton:active{background:var(--fond-survol)}.bouton-accent{background:linear-gradient(180deg,var(--accent),var(--accent-att));color:#1c1206;border-color:var(--accent-att);font-weight:600;box-shadow:inset 0 1px #ffffff2e}.bouton-icone{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--fond-eleve);border:1px solid var(--bordure)}.pastille{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;background:var(--fond-survol);font-size:.78rem;font-family:var(--police-ui)}.scroll-x{overflow-x:auto}.trait-orne{height:1px;margin:20px 0;background:linear-gradient(90deg,transparent,var(--bordure) 20%,var(--accent-att) 50%,var(--bordure) 80%,transparent);opacity:.7}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--bordure);border-radius:4px}.barre-basse{position:fixed;left:0;right:0;bottom:0;height:var(--barre-basse-h);display:flex;background:var(--fond-eleve);border-top:1px solid var(--bordure);box-shadow:0 -1px color-mix(in srgb,var(--accent) 12%,transparent);z-index:40;padding-bottom:env(safe-area-inset-bottom)}.barre-basse a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--texte-att);text-decoration:none;font-size:.68rem;font-family:var(--police-ui);padding:0 2px}.barre-basse a span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.barre-basse a.actif{color:var(--accent)}.barre-basse svg{width:21px;height:21px;stroke-width:1.75}.entete-app{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top));background:color-mix(in srgb,var(--fond) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--bordure)}.entete-app .gauche,.entete-app .droite{display:flex;align-items:center;gap:8px}.bouton-roue-flottant{position:fixed;right:16px;bottom:calc(var(--barre-basse-h) + 16px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:999px;background:var(--accent);color:#14140f;display:flex;align-items:center;justify-content:center;box-shadow:var(--ombre);z-index:50}.tiroir-fond{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:60}.tiroir{position:fixed;top:0;bottom:0;left:0;width:min(85vw,340px);background:var(--fond-eleve);border-right:1px solid var(--bordure);z-index:61;overflow-y:auto;padding:16px;padding-top:calc(16px + env(safe-area-inset-top))}.arbre-noeud{display:flex;align-items:center;gap:6px;padding:6px 4px;border-radius:var(--rayon-petit)}.arbre-noeud:active{background:var(--fond-survol)}.arbre-enfants{margin-left:18px;border-left:1px solid var(--bordure);padding-left:8px}.panneau-lateral{position:fixed;top:0;bottom:0;right:0;width:min(90vw,380px);background:var(--fond-eleve);border-left:1px solid var(--bordure);z-index:61;overflow-y:auto;padding:16px;padding-top:calc(16px + env(safe-area-inset-top))}.feuille-basse{position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--fond-eleve);border-top:1px solid var(--bordure);border-radius:var(--rayon) var(--rayon) 0 0;padding:16px;padding-bottom:calc(16px + env(safe-area-inset-bottom));max-height:80vh;overflow-y:auto;box-shadow:var(--ombre)}.overlay-plein{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--fond);z-index:70;overflow-y:auto}.grille-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.liste-simple{display:flex;flex-direction:column;gap:8px}.ligne-entre{display:flex;align-items:center;justify-content:space-between;gap:8px}.eirval-hero{position:relative;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 8%,var(--fond-eleve)),var(--fond-eleve));border:1px solid var(--bordure);border-radius:var(--rayon);padding:22px;box-shadow:var(--ombre),inset 0 0 40px color-mix(in srgb,var(--accent) 6%,transparent)}.eirval-hero:before,.eirval-hero:after{content:"";position:absolute;width:16px;height:16px;border:2px solid color-mix(in srgb,var(--accent) 70%,transparent);pointer-events:none}.eirval-hero:before{top:7px;left:7px;border-right:none;border-bottom:none;border-radius:3px 0 0}.eirval-hero:after{bottom:7px;right:7px;border-left:none;border-top:none;border-radius:0 0 3px}.eirval-hero-titre{display:flex;align-items:center;gap:10px;font-family:var(--police-titre);font-size:1.9rem;letter-spacing:.015em;color:var(--accent);margin-bottom:10px}.eirval-hero-texte{white-space:pre-wrap;line-height:1.65;color:var(--texte)}.journal-liste{position:relative;padding-left:20px}.journal-liste:before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(180deg,var(--accent-att),var(--bordure))}.journal-entree{position:relative;margin-bottom:18px}.journal-entree:before{content:"";position:absolute;left:-20px;top:6px;width:9px;height:9px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}.journal-date{font-family:var(--police-ui);font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent-secondaire);margin-bottom:2px}.journal-titre{font-family:var(--police-titre);font-size:1.1rem;margin-bottom:4px}.journal-texte{white-space:pre-wrap;line-height:1.55;color:var(--texte-att)}.grille-tuiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tuile-codex{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px 8px;background:var(--fond-eleve);border:1px solid var(--bordure);border-radius:var(--rayon);color:var(--texte);text-align:center;font-size:.78rem;font-family:var(--police-ui);box-shadow:inset 0 1px color-mix(in srgb,var(--texte) 5%,transparent)}.tuile-codex:active{background:var(--fond-survol);border-color:var(--accent-att)}.tuile-codex svg{color:var(--accent)}.grille-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat-tuile{background:var(--fond-eleve);border:1px solid var(--bordure);border-radius:var(--rayon);padding:14px 10px;text-align:center;box-shadow:inset 0 1px color-mix(in srgb,var(--texte) 5%,transparent)}.stat-tuile .valeur{font-family:var(--police-titre);font-size:1.5rem;color:var(--accent);display:block}.stat-tuile .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--texte-att)}.codex-epingles{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px;margin-bottom:18px}.codex-epingle-item{flex:0 0 auto;min-width:108px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 10px;background:var(--fond-eleve);border:1px solid var(--accent-att);border-radius:var(--rayon);color:var(--texte);text-align:center;font-size:.82rem}.roue-pointeur{width:0;height:0;border-left:9px solid transparent;border-right:9px solid transparent;border-top:14px solid var(--accent);filter:drop-shadow(0 2px 2px rgba(0,0,0,.4))}.segmente{display:flex;gap:8px;margin-bottom:16px}.segmente button{flex:1}
