:root{--paper:#f2eee4;--ink:#20231e;--forest:#26372e;--clay:#a95035;--line:#c9c1b1;--muted:#706d64}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif}header{position:sticky;top:0;z-index:10;background:rgba(242,238,228,.94);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:space-between;padding:18px 5vw;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:inherit;display:flex;gap:14px;align-items:baseline}.brand span{font-weight:800}.brand strong{font-family:Georgia,serif;font-weight:400}nav{display:flex;gap:22px}nav a{color:inherit;text-decoration:none;font-size:14px}#menuBtn{display:none;background:none;border:0;font-size:24px}section{padding:90px 7vw;border-bottom:1px solid var(--line)}.hero{min-height:86vh;display:flex;flex-direction:column;justify-content:center}.eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:800;color:var(--clay)}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:400}h1{font-size:clamp(48px,7.4vw,108px);line-height:.92;max-width:1200px;margin:18px 0 28px}h1 em,h2 em{color:var(--clay);font-weight:400}.lede{font-size:21px;line-height:1.5;max-width:680px}.search{display:flex;max-width:780px;margin:35px 0 22px;border-bottom:2px solid var(--ink)}input,select,textarea{font:inherit;background:transparent;border:0;border-bottom:1px solid var(--line);padding:14px;color:inherit}.search input{flex:1;border:0;font-size:19px}.search button,.donate button{border:0;background:var(--ink);color:var(--paper);padding:14px 24px;font-weight:700}.actions{display:flex;gap:24px;align-items:center}.button{background:var(--clay);color:white;text-decoration:none;padding:14px 18px}.textlink{color:inherit}.stats{display:flex;gap:50px;margin-top:60px}.stats div{display:flex;flex-direction:column}.stats b{font:42px Georgia,serif}.stats span{color:var(--muted)}.section-head h2{font-size:clamp(42px,6vw,78px);line-height:1;margin:12px 0 35px}.chips{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 40px}.chip{border:1px solid var(--ink);border-radius:30px;padding:9px 14px;background:none;cursor:pointer}.chip:hover,.chip.active{background:var(--ink);color:var(--paper)}.catalog-tools{display:grid;grid-template-columns:2fr 1fr 1fr;gap:15px;margin:30px 0}.book-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.book{background:var(--paper);padding:26px;min-height:260px;cursor:pointer}.book:hover{background:#e9e2d4}.book .id{font-size:11px;color:var(--muted)}.book h3{font-size:28px;margin:28px 0 8px}.book .author{font-size:14px}.book .tags{font-size:13px;color:var(--muted);margin-top:30px;line-height:1.6}.dark{background:var(--forest);color:#f4f0e7}.dark .eyebrow{color:#d98a70}.bigquote{font:clamp(28px,4vw,52px)/1.2 Georgia,serif;max-width:950px}.voice-stats{display:flex;flex-wrap:wrap;gap:10px;margin:40px 0}.voice-stats div{border:1px solid #8d9a91;padding:15px 18px}.voice-stats b{font-size:28px;margin-right:7px}.dark article{max-width:760px;margin-top:70px}.dark article h3{font-size:38px}.dark article p,#story{font-size:18px;line-height:1.7}.ghost{border:1px solid #f4f0e7;color:#f4f0e7;background:none;padding:12px 16px}.path-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.path-grid article{border-top:1px solid var(--ink);padding-top:18px}.path-grid h3{font-size:32px}.graph-section{display:grid;grid-template-columns:1fr 1.2fr;gap:60px;align-items:center}.graph-section h2{font-size:60px}.mini-graph{height:420px;position:relative;border:1px solid var(--line);overflow:hidden}.node{position:absolute;width:76px;height:76px;border-radius:50%;background:var(--clay);color:white;display:grid;place-items:center;text-align:center;font-size:10px;padding:8px}.edge{position:absolute;height:1px;background:#948b7c;transform-origin:0 0}.donate{background:#d7c8aa}.donate h2{font-size:clamp(46px,7vw,90px);margin:15px 0}.donate>p{max-width:700px;font-size:20px}.needs{display:flex;flex-wrap:wrap;gap:10px;margin:35px 0}.needs span{border:1px solid var(--ink);padding:9px 13px;border-radius:30px}.donate form{display:grid;max-width:700px;gap:12px}.donate textarea{min-height:120px}.visit h2{font-size:70px;margin:10px 0}.visit p{font-size:20px;line-height:1.7}footer{padding:40px 7vw;display:flex;justify-content:space-between;gap:20px;color:var(--muted)}.modal{position:fixed;inset:0;background:#0009;z-index:30;padding:4vh 5vw;overflow:auto}.modal-card{background:var(--paper);max-width:900px;margin:auto;padding:40px;position:relative}.modal-card>button{position:absolute;right:18px;top:14px;border:0;background:none;font-size:30px}.modal h2{font-size:50px;margin:12px 0}.modal .meta{color:var(--muted)}.modal .why{font:24px/1.45 Georgia,serif;border-left:3px solid var(--clay);padding-left:20px}.modal .rel{border-top:1px solid var(--line);padding:12px 0}@media(max-width:800px){nav{display:none;position:absolute;top:64px;left:0;right:0;background:var(--paper);padding:20px;flex-direction:column}nav.open{display:flex}#menuBtn{display:block}.book-grid,.path-grid,.graph-section{grid-template-columns:1fr}.catalog-tools{grid-template-columns:1fr}.stats{gap:25px}.stats b{font-size:30px}section{padding:65px 6vw}footer{flex-direction:column}.mini-graph{height:350px}}
.voice-note{max-width:760px;font-size:17px;line-height:1.6;color:#d9d4c8}
.book{border:0;text-align:left;font:inherit;color:inherit;width:100%}
.book .area{font-size:12px;color:var(--muted)}
:focus-visible{outline:3px solid var(--clay);outline-offset:3px}
.dark :focus-visible{outline-color:#f0b49e}
.badge{display:inline-block;font-size:12px;border:1px solid var(--muted);color:var(--muted);border-radius:20px;padding:2px 9px;margin-left:8px;vertical-align:middle;white-space:nowrap}
.modal h3{margin:30px 0 10px;font-size:24px}
.modal .voice{font:20px/1.4 Georgia,serif;margin:18px 0}
.modal .facets p{margin:6px 0;line-height:1.6}
.modal .central{font-weight:700}
.rel a{color:inherit}
.availability{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:16px 0;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.availability .loan{background:var(--forest);color:#f4f0e7;text-decoration:none;padding:10px 14px}
.why-draft{font-size:13px;color:var(--muted);margin-top:-6px}
.node{cursor:pointer;border:0;font:inherit;font-size:10px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
.graph-full .section-head h2{margin-bottom:16px}
.graph-intro{max-width:760px;font-size:18px;line-height:1.6;color:var(--muted)}
.graph-controls{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 16px}
.graph-controls .chip[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.graph-wrap{position:relative;border:1px solid var(--line);background:#f7f4ec}
#fullGraph{display:block;width:100%;height:min(75vh,720px);min-height:440px;touch-action:none;cursor:grab}
#fullGraph .link{stroke:#8a8273;stroke-width:1.4}
#fullGraph .link.ipotesi{stroke-opacity:.55}
#fullGraph .link.concept{stroke:#b9b09f;stroke-width:.8;stroke-dasharray:2 3}
#fullGraph .link.person{stroke:#7a8f86;stroke-width:1;stroke-dasharray:5 3}
#fullGraph .bnode{stroke:var(--paper);stroke-width:1.5;cursor:pointer}
#fullGraph .cnode{fill:#cfc6b4;stroke:#a89f8c}
#fullGraph .pnode{fill:#7a8f86}
#fullGraph text{font:11px Arial,Helvetica,sans-serif;fill:var(--ink);pointer-events:none;paint-order:stroke;stroke:#f7f4ec;stroke-width:3px}
#fullGraph text.ctext{fill:var(--muted);font-style:italic;font-size:10px}
#fullGraph .dim{opacity:.12}
#fullGraph .bnode.sel{stroke:var(--ink);stroke-width:3}
#fullGraph g.node:focus-visible circle{stroke:var(--clay);stroke-width:3}
#fullGraph g.node:focus{outline:none}
.graph-legend{position:absolute;left:10px;bottom:10px;background:rgba(247,244,236,.92);padding:8px 10px;font-size:12px;line-height:1.7;max-width:60%}
.graph-legend span{display:inline-flex;align-items:center;gap:5px;margin-right:12px;white-space:nowrap}
.graph-legend i{width:10px;height:10px;border-radius:50%;display:inline-block}
.graph-info{margin-top:18px;border-top:1px solid var(--ink);padding-top:14px;max-width:900px}
.graph-info h3{font-size:30px;margin:6px 0}
.graph-info .meta{color:var(--muted);margin:0 0 10px}
.graph-info ul{list-style:none;padding:0;margin:10px 0}
.graph-info li{border-top:1px solid var(--line);padding:9px 0;line-height:1.5}
.graph-info li button{font:inherit;border:0;background:none;padding:0;text-decoration:underline;cursor:pointer;color:inherit;text-align:left}
.graph-info .open{background:var(--clay);color:#fff;border:0;padding:10px 14px;font:inherit;cursor:pointer;margin-top:6px}
@media(max-width:800px){.graph-legend{position:static;max-width:none;border-top:1px solid var(--line)}#fullGraph{min-height:380px}}
/* Scaffali */
.shelves{display:flex;flex-direction:column;gap:46px}
.shelf-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-bottom:1px solid var(--ink);padding-bottom:8px;margin-bottom:18px}
.shelf h3{font-size:clamp(26px,3vw,36px);margin:0}
.shelf-head span{color:var(--muted);font-size:14px;white-space:nowrap}
.shelf-row{--h:200px;display:flex;gap:18px;align-items:flex-start;overflow-x:auto;scroll-snap-type:x proximity;padding:6px 4px 16px;
  background:linear-gradient(to bottom,transparent calc(var(--h) + 6px),#8b6b4a calc(var(--h) + 6px),#6e5237 calc(var(--h) + 18px),transparent calc(var(--h) + 18px)) local;
  scrollbar-width:thin}
.shelf-row .book{flex:0 0 auto;width:auto;min-height:0;padding:0;background:none;display:flex;flex-direction:column;align-items:center;scroll-snap-align:start;cursor:pointer}
.shelf-row .book:hover{background:none}
.book .cover{height:var(--h);display:flex;align-items:flex-end}
.book .cover img{height:var(--h);width:auto;max-width:190px;object-fit:cover;display:block;box-shadow:0 1px 2px #0003,4px 6px 12px #0002;transition:transform .2s}
.book:hover .cover img,.book:focus-visible .cover img,.book:hover .drawn-cover,.book:focus-visible .drawn-cover{transform:translateY(-6px)}
.drawn-cover{height:var(--h);width:136px;background:var(--c);color:#f4f0e7;display:flex;flex-direction:column;justify-content:space-between;padding:16px 12px;box-shadow:0 1px 2px #0003,4px 6px 12px #0002;transition:transform .2s;border-left:6px solid #0003}
.drawn-cover b{font:400 18px/1.15 Georgia,serif}
.drawn-cover small{font-size:12px;opacity:.85}
.book .caption{width:136px;margin-top:22px;display:flex;flex-direction:column;gap:3px;text-align:left}
.book .caption b{font:400 15px/1.2 Georgia,serif;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.book .caption span{font-size:12px;color:var(--muted)}
.empty{color:var(--muted);font-size:18px}
.modal-cover{float:right;width:min(34%,220px);margin:0 0 18px 26px;box-shadow:4px 6px 14px #0003}
@media(max-width:800px){.shelf-row{--h:160px;gap:14px}.book .caption,.drawn-cover{width:110px}.book .cover img{max-width:150px}.modal-cover{width:38%;margin-left:16px}.modal h2{font-size:34px}}
@media (prefers-reduced-motion:reduce){.book .cover img,.drawn-cover{transition:none}}
@media(min-width:801px){.catalog-tools{grid-template-columns:2fr 1fr 1fr 1fr}}
.book .caption .genre{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--clay)}
.proto-note{max-width:760px;border-left:3px solid var(--clay);padding:6px 0 6px 14px;color:var(--muted);font-size:14px;line-height:1.5;margin:0 0 26px}
.paths{display:flex;flex-direction:column;gap:56px}
.path .path-head{display:grid;grid-template-columns:70px 1fr;gap:6px 18px;border-top:1px solid var(--ink);padding-top:16px;margin-bottom:18px}
.path .path-head span{grid-row:span 2;font:40px Georgia,serif;color:var(--clay)}
.path .path-head h3{font-size:clamp(26px,3vw,36px);margin:0}
.path .path-head p{margin:0;color:var(--muted);max-width:640px}
@media(max-width:800px){.path .path-head{grid-template-columns:44px 1fr}.path .path-head span{font-size:28px}}
/* Voci dei lettori */
.lettori{background:#e9e2d4}
.lettori .lede{max-width:760px}
.lettori-how{max-width:760px;font-size:16px;line-height:1.6;color:var(--muted)}
.lettori-status{margin:22px 0 6px;font:20px/1.4 Georgia,serif}
.aspettano-title{font-size:26px;margin:34px 0 14px}
.aspettano{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.aspetta{background:var(--paper);padding:20px;display:flex;flex-direction:column;gap:8px}
.aspetta h4{font:22px/1.2 Georgia,serif;margin:0}
.aspetta p{margin:0;font-size:14px;color:var(--muted);flex:1}
.aspetta .chip{align-self:flex-start}
.voci-count{display:inline-block;margin-top:14px;font-size:12px;color:var(--forest);border:1px solid var(--forest);border-radius:20px;padding:2px 9px}
.voci{margin-top:34px;border-top:2px solid var(--ink);padding-top:6px}
.voce{border-left:3px solid var(--forest);padding:4px 0 4px 16px;margin:16px 0}
.voce p{margin:6px 0;line-height:1.6}
.voce.mia{border-left-color:var(--clay)}
.voce-meta{font-size:14px;color:var(--muted)}
.voce-meta b{color:var(--ink)}
.voce-tags{display:flex;flex-wrap:wrap;gap:6px}
.voce-tags span{border:1px solid var(--muted);border-radius:20px;padding:2px 9px;font-size:13px}
.voce-tags span.nuova{border-style:dashed;border-color:var(--clay);color:var(--clay)}
.voce-vuota{color:var(--muted);font-style:italic}
.voci-form{margin-top:26px;background:#ebe5d8;padding:20px 22px}
.voci-form h3{margin-top:0}
.voce-intro{margin-top:0;line-height:1.6}
.letto-choice{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 18px}
.field{display:block;margin:14px 0}
.field span{display:block;font-size:14px;font-weight:700;margin-bottom:6px}
.field small{font-weight:400;color:var(--muted)}
.field textarea,.field input{width:100%;background:var(--paper);border:1px solid var(--line);padding:12px;font:16px/1.5 inherit}
.field textarea{min-height:120px;resize:vertical}
.check{display:flex;gap:8px;align-items:center;font-size:14px;margin:6px 0 10px}
.voce-note{font-size:13px;color:var(--muted);line-height:1.5}
.form-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:10px}
.send{border:0;background:var(--ink);color:var(--paper);padding:12px 18px;font:inherit;font-weight:700;cursor:pointer}
.ghost-small{border:1px solid var(--ink);background:none;padding:8px 12px;font:inherit;font-size:14px;cursor:pointer;color:inherit}
.vmsg{font-size:14px;color:var(--clay)}
.moderazione{background:#f7f4ec}
.mod-list{display:grid;gap:14px;max-width:900px}
.mod{border:1px solid var(--line);background:var(--paper);padding:16px 18px}
.mod p{margin:6px 0;line-height:1.6}
@media(max-width:800px){.aspettano{grid-template-columns:1fr}.voci-form{padding:16px}}
.caption .voci-count{margin-top:4px;align-self:flex-start;font-size:11px}
