:root{--paper:#f2f0e9;--paperlight:#faf9f5;--ink:#24362d;--green:#607a67;--deep:#20382e;--muted:#738178;--quiet:#9b9e93;--rule:#d2d4ca;--warm:#897d70;--glass:rgba(250,249,245,.93);--serif:Georgia,'Times New Roman',serif;--mono:'Courier New',monospace;--sans:'Helvetica Neue',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}a{color:inherit}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid #a57950;outline-offset:4px}button{color:inherit}img{display:block;width:100%}p,h1,h2,h3,figure{margin:0}.shell{width:min(100% - 90px,1480px);margin-inline:auto}.smallcaps{font:10px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.085em}.skip{position:absolute;top:-100px;left:15px;padding:14px;background:white;z-index:100}.skip:focus{top:15px}
.site-head{height:88px;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;gap:20px}.site-brand{text-decoration:none;display:flex;align-items:baseline;gap:19px}.site-brand strong{font:700 14px/1.2 var(--sans);letter-spacing:.075em}.site-brand strong i{font-style:normal;color:#95a394}.site-brand span{font:10px var(--mono);color:var(--muted);letter-spacing:.035em}.site-nav{display:flex;gap:36px;align-items:center}.site-nav a{text-decoration:none;font:13px var(--sans);padding:12px 0;border-bottom:1px solid transparent}.site-nav a:hover{border-color:#66836d;color:#466754}.nav-toggle{display:none;border:1px solid var(--rule);background:transparent;padding:10px 12px;border-radius:2px;font:11px var(--mono)}
.intro{display:grid;grid-template-columns:minmax(0,.95fr) minmax(240px,.65fr);gap:80px;align-items:end;padding:68px 0 47px}.intro .smallcaps{color:#617a67;display:flex;gap:10px;align-items:center}.intro .smallcaps:before{content:'';height:6px;width:6px;border-radius:50%;background:#879d83}.intro h1{font:normal clamp(56px,5.3vw,91px)/.99 var(--serif);letter-spacing:-.075em;margin:27px 0 0;max-width:740px}.intro h1 em{font-weight:normal;color:var(--warm)}.intro-desc{padding-bottom:6px;max-width:385px;font:15px/1.8 var(--sans);color:#68786e}.intro-desc p+p{margin-top:12px}.intro-desc .process{color:#344c3c}
.map-head{padding:17px 0;border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:center;gap:15px}.map-head .smallcaps{color:#6c7e70}.map-head-right{display:flex;align-items:center;gap:15px}.map-meta{color:#8b968a}.reset-map,.text-link{background:transparent;border:0;border-bottom:1px solid #9caa9c;padding:6px 0;text-decoration:none;font:11px var(--mono);white-space:nowrap}.reset-map:hover,.text-link:hover{color:#557d60}.map-grid{display:grid;grid-template-columns:minmax(0,1fr) 342px;border:1px solid #ccd2c6;background:#f7f7f2;min-height:728px}.map-viewport{position:relative;overflow:hidden;min-width:0;min-height:700px;background-color:#eaece5;background-image:linear-gradient(rgba(100,124,106,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(100,124,106,.065) 1px,transparent 1px);background-size:27px 27px;isolation:isolate}.map-viewport:before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 51% 46%,rgba(245,247,239,.74),rgba(236,238,229,.23) 60%,rgba(210,222,206,.23));pointer-events:none}.map-underlay{position:absolute;inset:0;z-index:1;width:100%;height:100%;pointer-events:none;overflow:visible}.map-underlay path{fill:none;stroke:#9cac9d;stroke-width:1.1;stroke-linecap:round;opacity:.56;vector-effect:non-scaling-stroke}.map-underlay path.active{stroke:#627f69;stroke-width:1.9;opacity:.98}.map-underlay circle{fill:#72927a;opacity:.95}.map-floater{position:absolute;inset:auto auto 16px 20px;z-index:10;color:#87978a;pointer-events:none}.map-index{position:absolute;left:23px;top:20px;z-index:2;color:#7e8b7e}.map-mark{position:absolute;right:24px;top:21px;color:#819484;font:italic 15px var(--serif);z-index:2}.node{position:absolute;z-index:3;width:167px;background:rgba(250,249,245,.96);border:1px solid rgba(122,146,122,.48);padding:7px;box-shadow:0 8px 23px rgba(29,45,33,.09);text-align:left;transform:translate(-50%,-50%);transition:opacity .55s,box-shadow .3s,border-color .3s,filter .55s;will-change:left,top;cursor:pointer}.node:hover,.node:focus-visible{border-color:#688a73;box-shadow:0 17px 27px #22392b25;z-index:9}.node .thumb{height:100px;overflow:hidden;background:#d8ded6}.node .thumb img{height:100%;object-fit:cover;filter:saturate(.78) contrast(.97);transition:filter .35s,transform .6s}.node:hover img,.node.active img{filter:saturate(.98);transform:scale(1.015)}.node .caption{padding:10px 3px 4px;min-height:54px}.node .type{display:block;font:8px/1.5 var(--mono);color:#69816e;letter-spacing:.08em;text-transform:uppercase}.node .name{font:17px/1.12 var(--serif);letter-spacing:-.03em;margin-top:4px;display:block}.node.active{border-color:#3e6f4c;box-shadow:0 20px 36px #253b2a29;z-index:8}.node.active .name{color:#294b32}.node.is-distant{opacity:0;pointer-events:none;filter:blur(1px)}.connection-label{position:absolute;z-index:2;white-space:nowrap;transform:translate(-50%,-50%);pointer-events:none;background:rgba(245,247,241,.92);padding:5px 8px;border:1px solid rgba(128,154,131,.28);font:9px/1.25 var(--mono);color:#5b785f;opacity:0;transition:opacity .3s}.connection-label.visible{opacity:1}
.inspect{border-left:1px solid #cbd2c7;background:var(--paperlight);padding:31px 28px 27px;display:flex;flex-direction:column;min-height:0}.inspect .kicker{font:9px var(--mono);color:#79877a;letter-spacing:.12em}.inspect h2{font:normal 43px/1.05 var(--serif);letter-spacing:-.066em;margin:22px 0 20px}.inspect h2 em{color:#8d8072}.inspect .description{font:14px/1.8 var(--sans);color:#65776a;min-height:104px}.inspect .tipline{font:11px/1.65 var(--mono);color:#8b958c;margin-top:15px}.relations{margin-top:24px;border-top:1px solid #cbd2c7;padding-top:22px}.relations-heading{color:#7c8b7d;margin-bottom:15px}.relation{display:block;text-align:left;width:100%;border:0;background:none;border-bottom:1px solid #dcded6;padding:13px 0 16px}.relation:hover .relation-title{color:#4e8561}.relation-label{font:9px/1.5 var(--mono);color:#65816b;letter-spacing:.04em}.relation-title{display:flex;justify-content:space-between;gap:12px;align-items:center;font:normal 20px/1.2 var(--serif);letter-spacing:-.04em;margin:7px 0}.relation-title .arrow{font:15px var(--sans)}.relation-note{display:block;font:12px/1.5 var(--sans);color:#7e8b7f}.open-page{display:flex;align-items:center;justify-content:space-between;gap:12px;text-decoration:none;border-top:1px solid #b9c6ba;margin-top:auto;padding-top:22px;font:11px/1.3 var(--mono);letter-spacing:.03em;color:#406b4c}.open-page:hover{color:#253d2b}.open-page[hidden]{display:none}.inspect .empty-rel{margin-top:19px;color:#829184;font:12px/1.65 var(--sans)}
.trail-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 2px 11px;min-height:46px}.trail-bar[hidden]{display:none}.trail-list{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.trail-list button{border:0;background:none;font:10px/1.5 var(--mono);padding:3px;color:#56795d;text-decoration:underline;text-decoration-color:#b1c5b4;text-underline-offset:4px}.trail-list span{font-size:12px;color:#9fab9c}.trail-caption{color:#8c998d}.map-foot{display:flex;justify-content:space-between;align-items:start;gap:60px;padding:20px 0 48px}.map-foot p{max-width:650px;color:#79867b;font:12px/1.7 var(--sans)}.map-foot .links{display:flex;gap:28px}.map-foot .links a{text-decoration:none;font:11px var(--mono);border-bottom:1px solid #a3b5a4;padding-bottom:5px;white-space:nowrap}.site-footer{background:#23382c;color:#dce7d9;padding:33px 0}.footer-inner{display:flex;justify-content:space-between;align-items:center;gap:20px}.footer-inner span{font:10px/1.8 var(--mono);letter-spacing:.03em;color:#c7d4c7}.footer-inner a{font:11px var(--mono);color:#dce7d9;text-decoration:none;border-bottom:1px solid #9cb79f;padding-bottom:4px}
@media(max-width:1120px){.shell{width:min(100% - 50px,1480px)}.map-grid{grid-template-columns:minmax(0,1fr) 310px}.node{width:143px}.node .thumb{height:86px}.node .name{font-size:15px}.node .caption{min-height:49px}.inspect{padding:27px 21px}.inspect h2{font-size:37px}.intro{gap:34px}}
@media(max-width:790px){.shell{width:min(100% - 38px,1480px)}.site-head{height:74px}.site-brand span{display:none}.site-nav{display:none;position:absolute;z-index:40;right:19px;left:19px;top:73px;background:var(--paperlight);padding:14px 25px;box-shadow:0 14px 35px #2d43231d;border:1px solid var(--rule);gap:4px;flex-direction:column;align-items:stretch}.site-nav.open{display:flex}.site-nav a{padding:12px 3px}.nav-toggle{display:block}.intro{grid-template-columns:1fr;padding:48px 0 32px;gap:26px}.intro h1{font-size:clamp(54px,12vw,80px);margin-top:20px}.intro-desc{max-width:580px}.map-meta{display:none}.map-grid{grid-template-columns:1fr}.map-viewport{min-height:0;height:auto;padding:52px 13px 19px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px}.map-viewport:before{opacity:.6}#map-nodes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-column:1/-1;gap:12px}.map-underlay,.map-floater,.map-mark,.connection-label{display:none}.map-index{top:16px;left:16px}.node{position:relative!important;left:auto!important;top:auto!important;transform:none!important;width:100%;max-width:none;box-shadow:none;opacity:1!important;filter:none!important;pointer-events:auto!important}.node .thumb{height:clamp(95px,22vw,180px)}.node .name{font-size:19px}.node .caption{min-height:60px}.node.active{box-shadow:0 2px 0 #4c7b56}.inspect{min-height:340px;border-left:0;border-top:1px solid #cbd2c7;padding:29px}.inspect .description{min-height:0}.inspect h2{font-size:43px}.inspect .open-page{margin-top:29px}.relations{margin-top:20px}.relation{padding:13px 0}.map-foot{gap:20px;flex-wrap:wrap}.map-foot .links{flex-wrap:wrap}}
@media(max-width:440px){.map-viewport{gap:9px;padding:48px 10px 13px}#map-nodes{gap:9px}.node{padding:5px}.node .thumb{height:96px}.node .caption{min-height:58px;padding:9px 3px 3px}.node .name{font-size:17px}.node .type{font-size:7px}.map-head .smallcaps{font-size:9px}.intro h1{font-size:clamp(51px,13vw,64px)}.site-footer .footer-inner{align-items:start;flex-direction:column}.map-foot{padding-bottom:36px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

/* V2 / intentional separation between opening a work and exploring its relations */
.node{padding:7px;overflow:hidden}
.node-select{display:block;width:100%;padding:0;border:0;background:transparent;text-align:left;color:inherit;cursor:pointer}
.node-select:focus-visible{outline:2px solid #577d61;outline-offset:-1px}
.node-select:hover .thumb img{filter:saturate(.98);transform:scale(1.02)}
.node-open-link{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;padding:8px 4px 3px;border-top:1px solid #d9ded5;text-decoration:none;font:9px/1.15 var(--mono);letter-spacing:.045em;color:#3f6548;transition:color .2s,background-color .2s}
.node-open-link span:last-child{font:14px/1 var(--sans)}
.node-open-link:hover,.node-open-link:focus-visible{color:#1c4528;background:#e8efe7}
.node.active .node-open-link{font-weight:700;color:#244f31;border-color:#acc4ae}
.node.active .node-open-link span:last-child{font-weight:700}
/* Relationship language is readable in the inspector only. Never layer captions over cards. */
.connection-label,#map-labels{display:none!important}
.inspect .description{min-height:0}
.inspect .open-page{margin:20px 0 4px;padding:16px 15px;min-height:52px;border:1px solid #365a40;background:#365a40;color:#fff;border-radius:1px;display:flex;align-items:center;justify-content:space-between;gap:15px;font:11px/1.4 var(--mono);font-weight:700;text-decoration:none}
.inspect .open-page:hover,.inspect .open-page:focus-visible{background:#254831;border-color:#254831;color:#fff}
.inspect .open-page[hidden]{display:none}
.inspect .open-page span:last-child{font:20px/1 var(--sans)}
.relations{margin-top:22px}
.relation{position:relative;border:1px solid #d9dfd5;background:#f5f7f1;padding:13px 15px 13px;margin:0 0 10px;transition:background .2s,border-color .2s}
.relation:hover,.relation:focus-visible{border-color:#93af99;background:#edf3eb}
.relation-label{color:#58735d;font-weight:bold;font-size:10px}
.relation-title{font-size:20px;margin:9px 0 7px}
.relation-note{font-size:12px;line-height:1.6;color:#657b69}
.preview-open{overflow:hidden}
.standalone-page[hidden]{display:none}
.standalone-page{position:fixed;z-index:1000;inset:0;background:rgba(20,37,27,.78);display:flex;align-items:center;justify-content:center;padding:3vw}
.standalone-page-sheet{background:#f2f0e9;width:min(100%,1030px);max-height:94vh;overflow-y:auto;box-shadow:0 22px 80px #1424198a}
.standalone-page-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #cbd2c7;padding:16px 26px;gap:20px}
.standalone-page-body{padding:27px;display:grid;grid-template-columns:1fr 1fr;gap:35px}
.standalone-page-image{height:440px;background:#d1dad1}
.standalone-page-image img{height:100%;object-fit:cover}
.standalone-page-copy{display:flex;flex-direction:column;align-items:flex-start;padding:12px 0}
.standalone-page-copy h2{font:normal clamp(41px,4.5vw,70px)/1.05 var(--serif);letter-spacing:-.055em;margin:20px 0 23px}
.standalone-page-copy>p{font:15px/1.8 var(--sans);color:#52675a}
.standalone-page-hint{margin-top:auto;padding-top:20px}
.standalone-page-hint code{display:block;margin:6px 0 15px;font:12px/1.4 var(--mono);word-break:break-word}
.standalone-page-hint p{color:#738276;font:12px/1.65 var(--sans)}
.return-link{margin-top:18px;background:transparent;border:0;border-bottom:1px solid #78957a;padding:8px 0;color:#335b3f}
@media(max-width:790px){.node .thumb{height:clamp(95px,22vw,180px)}.node .caption{min-height:64px}.node-open-link{min-height:31px}.inspect .open-page{margin:20px 0 4px}.standalone-page-body{grid-template-columns:1fr}.standalone-page-image{height:190px}.standalone-page-copy{padding:0}.standalone-page-copy h2{margin:12px 0 14px}.standalone-page-hint{margin-top:18px}.standalone-page{padding:3vw}}
@media(max-width:440px){.node .thumb{height:88px}.node .caption{min-height:61px}.node-open-link{font-size:8px;padding-top:7px}.standalone-page-top{padding:12px}.standalone-page-body{padding:15px;gap:15px}}
