:root{--paper:#f2eee3;--ink:#29382f;--green:#172a27;--amber:#dfbe78;--mono:ui-monospace,SFMono-Regular,Consolas,monospace;--serif:Georgia,'Times New Roman',serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif)}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid #b7752e;outline-offset:5px}button{color:inherit}button:not(.object):not(.node):not(.lamp){border:0;background:transparent}a{color:inherit}header{min-height:100px;display:flex;align-items:center;gap:36px;padding:22px 4%;border-bottom:1px solid #29382f26}.identity{text-decoration:none;font-size:29px;letter-spacing:-1px;min-width:260px}.identity span{display:block;font:10px var(--mono);letter-spacing:1px;margin-top:8px}nav{display:flex;gap:8px;margin:auto}nav a{font:12px var(--mono);text-decoration:none;padding:12px 17px;border-radius:24px}nav a[aria-current=page]{background:var(--ink);color:var(--paper)}.utilities{display:flex;gap:16px;font:11px var(--mono);align-items:center}#edit-open{text-decoration:none;padding:8px 0}.workspace{display:flex;min-height:710px;height:calc(100svh - 159px)}.room{position:relative;flex:1;min-width:0;overflow:hidden;background:var(--green);color:var(--paper)}[hidden]{display:none!important}.intro{position:absolute;left:4.4%;top:38px;z-index:2;pointer-events:none}.eyebrow{font:10px var(--mono);letter-spacing:1.5px}.intro .eyebrow{color:var(--amber)}h1{font-size:clamp(30px,3.2vw,49px);font-weight:400;letter-spacing:-1.5px;margin:16px 0 13px}.intro p{font:12px/1.8 var(--mono);opacity:.6;margin:0}#map{position:absolute;inset:0;overflow:hidden;touch-action:none;background:radial-gradient(ellipse at 55% 48%,#375a4c45,transparent 62%);cursor:grab}#map.dragging{cursor:grabbing}#threads,#nodes{position:absolute;left:0;top:0;width:1280px;height:750px;transform-origin:0 0}#threads{overflow:visible}#threads line{stroke:#91a99a;stroke-opacity:.23;stroke-width:1}#threads line.active{stroke:var(--amber);stroke-opacity:.65}.map-bottom{position:absolute;bottom:25px;left:4.4%;right:4.4%;display:flex;justify-content:space-between;align-items:center;gap:15px;z-index:2;font:10px var(--mono);color:#b9c5bb}.map-controls{display:flex;border:1px solid #ffffff26;border-radius:4px;overflow:hidden;background:#172a27}.map-controls button{min-width:44px;min-height:40px;color:var(--paper)}footer{height:59px;display:flex;align-items:center;justify-content:space-between;padding:0 4%;font:10px var(--mono);color:#687065}#trail-open{font:10px var(--mono)}#trail-count{margin-left:12px;color:#996223}#reader{width:390px;flex-shrink:0;overflow-y:auto;padding:28px 32px;background:var(--paper);border-left:1px solid #344b3430}.reader-top{display:flex;align-items:center;justify-content:space-between;gap:15px}.reader-top button{font:10px var(--mono);min-height:36px}.piece-number{display:block;font:10px var(--mono);color:#908d7e;margin-top:48px}#piece-title{font-size:43px;font-weight:400;letter-spacing:-1.5px;margin:14px 0 26px}#piece-body{font-size:16px;line-height:1.8}#piece-body p,#piece-body ul,#piece-body ol{margin:0 0 18px}#piece-body h3{font-size:18px;font-weight:400;letter-spacing:-.3px;margin:8px 0 12px}#piece-body ul,#piece-body ol{padding-left:1.2em}#piece-body li{margin:0 0 8px}#piece-body img{display:block;width:100%;height:auto;margin:8px 0 18px;background:#efe8d2}#piece-body code{font:13px var(--mono);background:#e7e3d7;padding:1px 5px}#piece-body a{text-decoration-thickness:1px;text-underline-offset:3px}#piece-body button{padding:0;text-decoration:underline;text-underline-offset:3px;font:inherit;text-align:left}.places-frame{display:block;width:100%;height:540px;border:1px solid #29382f30;margin:8px 0 18px;background:#f6f3de}#piece-actions{display:flex;flex-wrap:wrap;gap:10px;margin:28px 0}#piece-actions button,.edit-link{font:10px var(--mono);padding:12px!important;border:1px solid #29382f45!important;border-radius:2px;text-decoration:none;display:inline-block}.connections{border-top:1px solid #29382f30;padding-top:25px;margin-top:30px}#related{display:flex;flex-direction:column;margin-top:15px}#related button{font:13px var(--serif);padding:13px 0;text-align:left;border-bottom:1px solid #29382f14!important}#related button::after{content:'↗';float:right;color:#827960}.reader-foot{font:9px var(--mono);opacity:.55;margin-top:40px}.skip{position:fixed;top:-100px;z-index:20;background:var(--paper);padding:20px}.skip:focus{top:0}
#workbench{background:#382d22;--lamp-x:86%;--lamp-y:22%}.bench-surface{position:absolute;inset:0;background:repeating-linear-gradient(2deg,transparent 0 13px,#180f0918 14px,transparent 16px 39px),linear-gradient(100deg,#564232,#715139 50%,#433328);transition:filter .3s}.bench-light{position:absolute;inset:0;background:radial-gradient(ellipse 58% 48% at var(--lamp-x) var(--lamp-y),#ffe3a052,transparent 64%);transition:opacity .3s;pointer-events:none}.lamp{position:absolute;left:var(--lamp-x);top:var(--lamp-y);width:80px;height:120px;border:0;background:none;transform:translate(-50%,-82%) rotate(-18deg);z-index:5;cursor:grab;touch-action:none}.lamp:active{cursor:grabbing}.lamp:before{content:'';position:absolute;left:33px;top:0;width:8px;height:95px;background:#222b26;box-shadow:5px 5px 6px #0005}.lamp span{position:absolute;bottom:0;left:0;width:78px;height:40px;background:#293b31;border-radius:55px 55px 4px 4px;box-shadow:0 7px 18px #ffda7955}.lamp-off .bench-light{opacity:0}.lamp-off .lamp span{box-shadow:0 7px 18px #0004}.bench-rule{position:absolute;bottom:120px;left:7%;width:38%;height:26px;transform:rotate(-7deg);background:repeating-linear-gradient(90deg,#382719 0 1px,transparent 1px 11px),#b79a66;box-shadow:6px 8px 8px #0005;border:5px solid #b79a66}.object{position:absolute;background:none;border:0;width:148px;height:155px;transform:translate(-50%,-50%) rotate(var(--turn,0deg));color:#eee4ce;transition:translate .2s;z-index:2}.object.tool{width:132px}.object:hover{translate:0 -7px}.object svg{width:100%;height:110px;filter:drop-shadow(8px 14px 8px #0006)}.object.has-photo img{width:100%;height:96px;object-fit:cover;border:6px solid #efe6cd;background:#efe6cd;box-shadow:8px 14px 10px #0006}.object span{display:block;font:10px var(--mono);padding-top:10px}.object.selected span{color:var(--amber);text-decoration:underline;text-underline-offset:6px}.bench-note{position:absolute;right:7%;bottom:125px;transform:rotate(5deg);background:#ddd3b3;color:#4d4b3b;padding:22px;font:italic 14px/1.7 var(--serif);box-shadow:4px 8px 10px #0004}#terminal{background:#24312c}.computer{position:absolute;left:50%;top:58%;transform:translate(-50%,-50%);width:min(820px,90%);padding:22px 24px 16px;background:#c6bda6;border:1px solid #e0d6bf;border-radius:15px 15px 28px 28px;box-shadow:0 24px 40px #0004,inset -5px -8px 0 #998f79;color:#3e493b}.computer-label{font:9px var(--mono);display:flex;justify-content:space-between;margin:0 3px 14px;letter-spacing:1px}.computer-label span{color:#456344}.screen{position:relative;background:radial-gradient(ellipse,#252c21,#111d18);color:var(--amber);border:12px solid #847c67;border-top-color:#6e6959;border-bottom-color:#ded5be;border-radius:12px;padding:20px 22px 16px;height:min(52vh,480px);overflow:auto;font:12px/1.65 var(--mono);scrollbar-color:#a5936c #19251c;caret-color:var(--amber)}.screen:after{content:'';pointer-events:none;position:absolute;inset:0;border-radius:4px;background:repeating-linear-gradient(to bottom,transparent 0 2px,#0003 2px 3px),radial-gradient(ellipse at center,transparent 55%,#0006 100%);z-index:2}.terminal-welcome{opacity:.85}#command-form{display:flex;gap:10px;margin-top:12px;align-items:baseline;position:relative;z-index:3}#prompt-label{font:12px var(--mono);color:#8faf90;white-space:nowrap}#prompt-label .cwd{color:var(--amber)}#command{width:100%;min-width:0;border:0;background:transparent;color:var(--amber);font:12px var(--mono);outline-offset:2px;caret-color:var(--amber)}#command::placeholder{color:#a4a07b}#terminal-output{position:relative;z-index:3}#terminal-output p{margin:12px 0 6px}#terminal-output .term-echo{color:#c9d6b8}#terminal-output .term-out{margin:0 0 10px;white-space:pre-wrap;font:inherit;color:inherit}#terminal-output .term-err{color:#e0b07a}#terminal-output .term-ls{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 10px}#terminal-output .term-dir{color:#9fd4a8}#terminal-output .term-file{color:var(--amber)}#terminal-output .term-img{color:#d7c07a}#terminal-output button{display:inline-block;padding:6px 10px 6px 0;color:var(--amber);font:11px var(--mono);text-decoration:underline}.crt-frame{margin:8px 0 12px;padding:6px;border:1px solid #dfbe7844;background:#0c1612;max-width:100%;position:relative;z-index:3}.crt-frame img,.crt-frame svg{display:block;width:100%;height:auto;max-height:220px;object-fit:contain;filter:sepia(1) hue-rotate(8deg) saturate(1.8) brightness(.82) contrast(1.2);mix-blend-mode:screen}.crt-frame figcaption{font:10px var(--mono);color:#8faf90;margin-top:6px}.crt-svg svg{height:140px;width:auto;margin:0 auto}.command-shortcuts{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}.command-shortcuts button{font:10px var(--mono);padding:8px!important;box-shadow:0 2px 0 #8c8570;background:#ded5be!important;border-radius:3px}.vents{margin:20px 0 0 auto;width:90px;height:12px;background:repeating-linear-gradient(90deg,#8a8371 0 3px,transparent 3px 6px)}dialog{border:1px solid #b9b6a8;background:var(--paper);color:var(--ink);width:min(600px,90vw);max-height:80svh;padding:30px;box-shadow:0 30px 90px #0005}dialog::backdrop{background:#0b1a16aa;backdrop-filter:blur(4px)}dialog h2{font-size:30px;font-weight:400}#search{display:block;width:100%;padding:15px 0;margin:15px 0 20px;border:0;border-bottom:1px solid #a9ab9b;background:transparent;color:var(--ink);font:15px var(--mono)}#index-results{display:grid;grid-template-columns:1fr 1fr;gap:8px}#index-results button{text-align:left;min-height:55px;padding:12px;background:#e7e3d7!important;font:16px var(--serif)}#index-results small{display:block;font:9px var(--mono);margin-top:5px;opacity:.6}
@media(min-width:1000px){body:has(#reader:not([hidden])) .intro p{display:none}body:has(#reader:not([hidden])) h1{font-size:35px}body:has(#reader:not([hidden])) .intro{top:25px}}
@media(max-width:900px){header{gap:16px;flex-wrap:wrap;padding:18px 5%}.identity{min-width:0;flex:1;font-size:25px}.identity span{font-size:8px}nav{order:3;width:100%;justify-content:center;margin-top:3px}nav a{font-size:11px;padding:10px 16px}.utilities{font-size:10px;gap:10px}.workspace{display:block;height:auto;min-height:0}.room{height:700px;min-height:70svh}#reader{width:100%;max-height:none;border-left:0;padding:28px max(6%,calc((100% - 650px)/2)) 45px}#piece-title{font-size:38px}.piece-number{margin-top:20px}.intro{left:6%;top:30px}h1{font-size:38px}.intro p{font-size:10px}footer{font-size:9px;padding:0 5%}.footer-right{display:none}.object{width:125px;height:130px}.object svg{height:90px}.bench-note{right:5%;bottom:115px;padding:16px;font-size:12px}.computer{padding:18px 14px;width:92%;top:60%}.screen{padding:17px;border-width:8px;font-size:11px;height:min(58vh,420px)}.computer-label{font-size:8px;letter-spacing:0}.command-shortcuts{gap:8px}.command-shortcuts button{font-size:9px}.map-bottom{font-size:9px}.map-bottom>span:nth-child(2){display:none}.lamp{scale:.75}#index-results{grid-template-columns:1fr}dialog{padding:22px}}
.trail-results{display:flex!important;flex-direction:column;gap:8px;max-height:307px;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;scrollbar-color:#9d8c66 #e5dfd0;padding-right:6px}.trail-results button{flex:0 0 55px;scroll-snap-align:end}.trail-results small{font-variant-numeric:tabular-nums}
.bench-note{top:50px;bottom:auto;right:20%;pointer-events:none}#command-form label{white-space:nowrap}#terminal .intro{top:18px;max-width:24%}#terminal h1{font-size:clamp(24px,2.6vw,36px);margin:10px 0 8px}#terminal .intro p{display:none}#command:focus-visible{outline:none}
@media(max-width:900px){.bench-note{display:none}.object{width:118px;height:120px}.object.tool{width:108px}.object svg,.object.has-photo img{height:78px}#terminal .intro{max-width:90%}#prompt-label{font-size:10px}}
.image-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:14px;width:100%;margin:8px 0 20px}.image-gallery .gallery-frame{position:relative;display:grid;place-items:center;min-width:0;background:#e8e1d1;text-decoration:none}.image-gallery .gallery-frame:after{content:attr(data-count);position:absolute;right:8px;bottom:8px;padding:4px 6px;background:#172a27d9;color:#f2eee3;font:9px var(--mono);letter-spacing:.04em}.image-gallery .gallery-frame img{width:100%;height:auto;max-height:none;object-fit:contain;margin:0;background:#e8e1d1}.image-gallery.single{display:block}.image-gallery.single .gallery-frame:after{display:none}.image-gallery.single .gallery-frame img{margin:0}
.object.has-photo img{object-fit:contain;background:#efe6cd}
.image-gallery.framed-gallery{padding:10px;border:1px solid #8d79554f;background:#dfd4bd}.image-gallery.framed-gallery .gallery-frame{aspect-ratio:1;overflow:hidden;padding:10px;border:1px solid #806a434d;background:#f5eddc;box-shadow:inset 0 0 0 3px #fff8e74d}.image-gallery.framed-gallery .gallery-frame img{width:100%;height:100%;min-height:0;object-fit:contain;background:transparent}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important;animation:none!important}}
body{text-transform:lowercase}
.video-embed{width:100%;aspect-ratio:16/9;margin:8px 0 10px;background:var(--green)}.video-embed iframe{display:block;width:100%;height:100%;border:0}.video-fallback{display:inline-block;margin:0 0 20px;font:11px var(--mono)}

/* A still, branching garden. Layout belongs to document flow, never a simulation. */
body[data-room=wander] .workspace{height:auto;min-height:calc(100svh - 159px);align-items:flex-start}
#wander{height:auto;min-height:0;overflow:visible;padding:54px clamp(24px,5vw,76px) 30px;background:radial-gradient(ellipse at 0 0,#344c3c80,transparent 55%),#172a27}
#wander .intro{position:static;margin:0;max-width:640px}
#wander h1{font-size:clamp(40px,4.4vw,62px);line-height:1.08;margin:16px 0;letter-spacing:-2px}
#wander .intro p{display:block;font-size:12px;color:#bfccc0;opacity:1}
.tree-guide{margin:30px 0 0;max-width:790px}
.tree-guide>.eyebrow{color:#cfbc90;font-size:10px}
.branch-menu{margin-top:8px}
.branch-menu summary{width:fit-content;cursor:pointer;min-height:44px;display:flex;align-items:center;gap:12px;list-style:none;font:16px var(--serif);color:#e3e6d8}
.branch-menu summary::-webkit-details-marker{display:none}
.branch-menu summary:focus-visible{outline:2px solid var(--amber);outline-offset:4px}
.branch-menu summary span{color:var(--amber)}
.branch-menu[open] summary{margin-bottom:8px}
#branch-jumps{display:flex;flex-wrap:wrap;gap:6px 10px}
#branch-jumps button{min-height:44px;padding:8px 12px;border:1px solid #b2c1a83b!important;border-radius:24px;font:11px var(--mono);color:#d6dfd1}
#branch-jumps button:hover,#branch-jumps button:focus-visible{background:#dfe7cd14;color:#fff4d5}
#map{position:relative;inset:auto;overflow:visible;touch-action:auto;background:none;cursor:auto;margin-top:38px}
#tree-root{position:relative;display:flex;justify-content:center;padding-bottom:44px}
#tree-root::after{content:'';position:absolute;bottom:0;left:50%;height:44px;border-left:1px solid #9fad825e}
#nodes{position:relative;left:auto;top:auto;width:auto;height:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:44px 36px;align-items:start}
#nodes::before{content:'';position:absolute;top:0;left:calc(16.666% - 12px);right:calc(16.666% - 12px);border-top:1px solid #9fad825e}
.tree-branch{min-width:0;position:relative;padding-top:32px}
.tree-branch::before{content:'';position:absolute;top:0;left:50%;height:24px;border-left:1px solid #9fad825e}
.tree-branch:nth-child(n+4){border-top:1px solid #9fad825e}
.tree-branch h2{position:relative;display:flex;align-items:baseline;gap:10px;font:25px/1.2 var(--serif);font-weight:400;letter-spacing:-.5px;margin:0;scroll-margin-top:28px}
.branch-number{font:10px var(--mono);letter-spacing:0;color:#c1a773}
.tree-branch h2 small{font:10px var(--mono);letter-spacing:0;color:#9cae9c;margin-left:auto}
.branch-note{font:10px/1.7 var(--mono);color:#aebcae;margin:10px 0 22px 25px;min-height:34px}
.branch-leaves{list-style:none;margin:0 0 0 7px;padding:0 0 0 23px;border-left:1px solid #8fa27d55}
.branch-leaves li{position:relative;margin:0 0 10px;min-width:0}
.branch-leaves li:last-child{margin-bottom:0}
.branch-leaves li::before{content:'';position:absolute;left:-24px;top:0;width:24px;height:27px;border:solid #8fa27d55;border-width:0 0 1px 1px;border-radius:0 0 0 12px}
#map .node{position:relative;left:auto;top:auto;display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:12px;width:100%;min-width:0;min-height:54px;padding:13px 15px;border:1px solid #afbd9b2e;border-radius:5px 17px 5px 17px;background:#e6ecd008;color:#e7eadb;font:17px/1.4 var(--serif);letter-spacing:0;box-shadow:none;outline-offset:4px;rotate:none;translate:none;scale:none;transform:none;filter:none;cursor:pointer;touch-action:auto;transition:none;animation:none}
#map .node::before{display:none}
#map .node .label{max-width:none;text-align:left;text-wrap:pretty;overflow-wrap:anywhere}
#map .node .dot{flex:0 0 7px;width:7px;height:7px;border:1px solid #b7bf93;border-radius:50%;background:transparent;box-shadow:none;animation:none;transform:none}
#map .node.portal{outline:none}
#map .node.portal .label::after{color:#c1ad7a;font-weight:400}
#map .node:hover,#map .node:focus-visible{border-color:#d6bf88;background:#e7e6bb12;color:#fff3d5}
#map .node.visited .dot{background:var(--amber);border-color:var(--amber)}
#map .node.selected{background:#d9bf7c1f;border-color:#d8bd7c;color:#f9e4ab}
#map .node.selected .dot{background:var(--amber);border-color:var(--amber)}
#map .node.connected{border-color:#acb88b88}
#tree-root .node{width:auto;min-width:164px;min-height:62px;justify-content:center;background:#c9cfac16;border-color:#b3c0988c;font-size:26px;border-radius:10px 30px 10px 30px;padding:14px 26px}
#wander .map-bottom{position:static;display:block;margin-top:42px;padding-top:22px;border-top:1px solid #b5c09a26;color:#a9b8a7;font:10px/1.8 var(--mono)}
body[data-room=wander] #reader{position:sticky;top:0;height:100svh;width:min(420px,36vw)}
body[data-room=wander]:has(#reader:not([hidden])) #nodes{grid-template-columns:repeat(2,minmax(0,1fr))}
body[data-room=wander]:has(#reader:not([hidden])) #nodes::before{left:25%;right:25%}
body[data-room=wander]:has(#reader:not([hidden])) .tree-branch:nth-child(n+3){border-top:1px solid #9fad825e}

/* One illustrated collection, and a lamp whose light visibly follows its handle. */
body[data-room=workbench] .workspace{height:auto;min-height:calc(100svh - 159px);align-items:flex-start}
#workbench{height:auto;min-height:0;padding:42px clamp(24px,5vw,76px) 25px;background:#30281f;--lamp-x:calc(100% - 64px);--lamp-y:90px}
#workbench .intro{position:static;margin-bottom:24px;max-width:620px}
#workbench .intro p{display:block;color:#d4c3a9;opacity:1}
/* Clear space for the corner lamp, without an instructional panel. */
.bench-surface{position:relative;isolation:isolate;border:1px solid #a7895b4d;border-radius:10px;overflow:hidden;padding:158px 32px 38px;background:repeating-linear-gradient(3deg,transparent 0 29px,#23170e18 30px,transparent 32px 64px),linear-gradient(110deg,#624a33,#785637 48%,#503c2b);transition:none}
#objects{position:relative;z-index:2;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;max-width:940px;margin:auto}
.object,.object.tool{position:relative;left:auto!important;top:auto!important;width:100%;height:auto;min-width:0;padding:0;transform:none;translate:none;rotate:none;transition:none;display:flex;flex-direction:column;align-items:center;gap:0;background:transparent;z-index:2}
.object:hover{translate:none}
.object.has-photo img,.object svg{display:block;width:100%;height:auto;aspect-ratio:1;max-width:240px;object-fit:contain;background:#efe6cd;border:0;border-radius:4px;box-shadow:0 5px 12px #25170e38;filter:none}
.object>span{display:block;font:14px/1.4 var(--serif);padding:12px 4px 4px;color:#f2e5c9;min-height:36px}
.object:hover>span,.object:focus-visible>span{color:#ffe5a8;text-decoration:underline;text-underline-offset:5px}
.object.selected img{outline:2px solid #dfbe78;outline-offset:4px}
.bench-light{z-index:3;inset:0;pointer-events:none;mix-blend-mode:screen;background:radial-gradient(ellipse 290px 240px at calc(var(--lamp-x) - 85px) calc(var(--lamp-y) + 180px),#ffd78b80 0%,#e6b75d3d 35%,#d7a64812 60%,transparent 80%);transition:none}
.lamp-beam{position:absolute;z-index:3;left:var(--lamp-x);top:calc(var(--lamp-y) + 6px);width:290px;height:300px;transform:translateX(-50%) skewX(-24deg);transform-origin:50% 0;clip-path:polygon(40% 0,60% 0,100% 100%,0 100%);background:linear-gradient(#ffe3a14a,#ffe3a11f 65%,transparent);pointer-events:none}
.lamp-off .bench-light,.lamp-off .lamp-beam{opacity:0}
.lamp{z-index:5;left:var(--lamp-x);top:var(--lamp-y);width:108px;height:122px;padding:0;transform:translate(-50%,-64%);scale:1;touch-action:none;user-select:none;-webkit-user-select:none;border-radius:12px}
.lamp::before{display:none}
#lamp-drag{position:absolute;inset:0;width:100%;height:100%;padding:0;border-radius:12px;cursor:grab;touch-action:none}
#lamp-drag:active{cursor:grabbing}
.lamp .lamp-arm{position:absolute;left:47px;top:0;width:12px;height:62px;background:#273b2f;border:2px solid #b49c66;border-radius:6px;box-shadow:3px 3px 0 #201b1480;transform:rotate(-20deg);transform-origin:bottom}
.lamp .lamp-shade{position:absolute;left:13px;top:41px;bottom:auto;width:82px;height:42px;border:2px solid #af9d68;border-bottom:6px solid #ffe0a0;background:linear-gradient(100deg,#53654b,#293e32);border-radius:40px 40px 8px 8px;box-shadow:0 5px 18px #ffd57a66}
.lamp .lamp-grip{position:absolute;left:16px;top:86px;bottom:auto;display:grid;place-items:center;width:76px;height:34px;background:#2b352a;border:1px dashed #e6cc94;border-radius:8px;box-shadow:none;color:#ffe2a4;font:11px var(--mono)}
#lamp-drag:hover .lamp-grip,#lamp-drag:focus-visible .lamp-grip,.lamp.is-dragging .lamp-grip{background:#e2c58e;color:#293b31;border-style:solid}
.lamp-off .lamp-shade{border-bottom-color:#8c8768;box-shadow:0 4px 10px #231c1655}
/* A tiny fitting on the shade, not a wall switch. Its 48px touch area is invisible. */
#lamp-switch{position:absolute;z-index:1;left:calc(50% - 11px);top:35px;width:48px;height:48px;padding:0;touch-action:manipulation;border-radius:8px}
#lamp-switch .switch-socket{position:absolute;left:19.5px;top:24px;bottom:auto;width:9px;height:9px;border:1px solid #a39368;border-radius:50%;background:radial-gradient(circle,#25382d 0 40%,#ac9967 48%,#cabb8c 70%,#85774f);box-shadow:0 1px 2px #16251db0}
#lamp-switch .switch-lever{position:absolute;left:22px;top:19px;bottom:auto;width:4px;height:10px;border:1px solid #d5c79e;border-radius:3px;background:linear-gradient(90deg,#aa9870,#f0e6c9 60%,#c1ae80);box-shadow:1px 2px 1px #17251c70;transform:rotate(-16deg);transform-origin:50% 85%}
#lamp-switch[aria-checked=false] .switch-lever{top:26px;transform:rotate(16deg);transform-origin:50% 15%}
#lamp-switch:hover .switch-lever{border-color:#fff0c5}
#lamp-switch:focus-visible{outline:2px solid #ffe4ac;outline-offset:2px}
#workbench .map-bottom{position:static;margin-top:22px;color:#d4c3a9;font-size:10px}
body[data-room=workbench] #reader{position:sticky;top:0;height:100svh}

@media(max-width:1100px){
 header{gap:18px}.identity{min-width:130px}.utilities{gap:10px}nav a{padding:12px}
 #nodes{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 28px}
 #nodes::before{left:25%;right:25%}.tree-branch:nth-child(n+3){border-top:1px solid #9fad825e}
 .tree-branch h2{font-size:23px}
}
@media(max-width:900px){
 header{display:grid;grid-template-columns:1fr auto;gap:14px 12px;padding:20px 6% 14px}
 .identity{min-width:0;font-size:28px}.identity span{font-size:9px;white-space:nowrap;margin-top:6px;letter-spacing:.6px}
 header nav{grid-column:1 / -1;grid-row:2;margin:0;justify-content:flex-start;gap:8px}
 header nav a{min-height:44px;padding:14px 16px}
 .utilities{justify-content:flex-end;gap:10px;flex-wrap:wrap;max-width:180px;font-size:10px}
 .utilities button{min-height:32px;padding:0 2px}.utilities a[rel=alternate]{font-size:9px}
 #wander{padding:30px 6% 26px}
 #wander h1{font-size:43px}#wander .intro p{font-size:11px}
 .tree-guide{margin-top:22px}
 #branch-jumps{gap:6px}#branch-jumps button{font-size:10px;padding:8px 11px}
 #map{margin-top:30px}
 #tree-root{padding-bottom:32px}#tree-root::after{height:32px}
 #tree-root .node{font-size:24px;min-height:58px}
 #workbench{padding:30px 6% 24px}
 #workbench h1{font-size:35px;max-width:300px}
 .bench-surface{padding:158px 16px 24px}
 #objects{gap:22px 14px}
 .object>span{font-size:14px}
 #workbench .map-bottom{line-height:1.8}
}
@media(max-width:600px){
 #nodes,body[data-room=wander]:has(#reader:not([hidden])) #nodes{grid-template-columns:minmax(0,1fr);gap:32px;padding-left:15px;border-left:1px solid #9fad825e;margin-left:8px}
 #nodes::before{left:-1px;right:50%;border-radius:0 0 0 12px}
 #tree-root::after{left:50%}
 .tree-branch,.tree-branch:nth-child(n){padding:28px 0 0;border:0}
 .tree-branch::before{left:-16px;top:0;width:36px;height:40px;border:solid #9fad825e;border-width:0 0 1px 1px;border-radius:0 0 0 16px}
 .tree-branch h2{font-size:25px;padding-left:12px}
 .branch-note{margin-left:37px;margin-bottom:18px;min-height:0;font-size:10px}
 .branch-leaves{margin-left:20px;padding-left:20px}
 .branch-leaves li::before{left:-21px;width:21px}
 #map .node{font-size:17px;min-height:54px;padding:13px 14px}
 #objects{grid-template-columns:repeat(2,minmax(0,1fr))}
 .bench-light{background:radial-gradient(ellipse 180px 210px at calc(var(--lamp-x) - 65px) calc(var(--lamp-y) + 150px),#ffd78b85,#e6b75d40 38%,transparent 78%)}
 .lamp-beam{width:210px;height:250px}
 .lamp{width:96px}
 .lamp .lamp-shade{left:7px}.lamp .lamp-arm{left:41px}.lamp .lamp-grip{left:10px}
}

@media(max-width:900px){body.reader-open{overflow:hidden}body.reader-open #reader{position:fixed;inset:0;z-index:30;width:100%;height:100svh;max-height:100svh;padding:max(20px,env(safe-area-inset-top)) 6% max(45px,env(safe-area-inset-bottom));border:0;overscroll-behavior:contain;box-shadow:0 0 60px #07110d66}body.reader-open .reader-top{position:sticky;top:0;z-index:1;padding:4px 0 10px;background:var(--paper)}body.reader-open #close-reader{min-width:72px;min-height:44px}body.reader-open .piece-number{margin-top:20px}body.reader-open #piece-title{font-size:clamp(34px,10vw,42px)}}

/* A continuous trunk, real offshoots, and explicit ways across the graph. */
.tree-tools{position:sticky;top:0;z-index:8;display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:16px -8px 0;padding:8px;background:#172a27;border-block:1px solid #b5c09a26}
.tree-tools button{min-height:44px;padding:10px 12px;font:11px var(--mono);color:#dfe6d2;border-radius:5px}
.tree-tools button:hover,.tree-tools button:focus-visible{background:#f0e8bf12;color:#ffe1a0}
#tree-search{margin-right:auto;text-align:left}#tree-search span{font-size:20px;margin-left:16px;color:var(--amber)}
#map{margin-top:30px;isolation:isolate}
#tree-trunk{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:-1}
#tree-trunk path{fill:none;stroke:#aebc897a;stroke-width:1.5;stroke-linecap:round;vector-effect:non-scaling-stroke}
#tree-root{padding-bottom:48px}
#tree-root::after,#nodes::before,.tree-branch::before{display:none}
#wander #nodes{grid-template-columns:repeat(2,minmax(0,1fr));gap:46px 100px;margin:0;padding:0;border:0}
#wander .tree-branch{padding:0;border:0;scroll-margin-top:88px}
.tree-branch>summary{position:relative;display:flex;align-items:center;gap:12px;max-width:100%;width:fit-content;min-height:60px;padding:14px 18px;border:1px solid #b5c19680;border-radius:10px 26px 10px 26px;background:#243c30;list-style:none;cursor:pointer;scroll-margin-top:88px}
.tree-branch>summary::-webkit-details-marker{display:none}
.tree-branch>summary:focus-visible{outline:2px solid var(--amber);outline-offset:5px}
.branch-title{font:25px/1.18 var(--serif);letter-spacing:-.4px}
.tree-branch>summary small{font:10px var(--mono);color:#c5cfb5;margin-left:auto}
.branch-chevron{font-size:18px;line-height:1;color:#dfbe78;rotate:-90deg}
.tree-branch[open]>.branch-chevron,.tree-branch[open]>summary .branch-chevron{rotate:0deg}
.tree-branch:nth-child(odd)>summary{margin-left:auto}
.branch-note{display:none}
.tree-branch:nth-child(odd)>.branch-note{text-align:right}
.branch-leaves{margin:40px 0 0 8px;padding:0 0 0 22px;border-left:1px solid #a8b88866}
.tree-children{list-style:none;margin:0 0 0 10px;padding:0 0 0 20px;border-left:1px solid #a8b88866}
.branch-leaves .tree-item{position:relative;list-style:none;margin:0 0 14px;min-width:0}
.branch-leaves .tree-item:last-child{margin-bottom:0}
.branch-leaves .tree-item::before{position:absolute;left:-23px;top:0;width:23px;height:28px;border:solid #a8b88866;border-width:0 0 1px 1px;border-radius:0 0 0 15px}
.tree-children>.tree-item::before{left:-21px;width:21px}
.node-row{position:relative;display:flex;align-items:stretch;min-width:0;gap:0;border:1px solid #afbd9b4a;border-radius:5px 17px 5px 17px;background:#22382e}
#map .node{flex:1;width:auto;min-width:0;min-height:56px;border:0;background:none;gap:9px;padding:13px 12px;font-size:17px;overflow-wrap:anywhere}
#map .node:hover,#map .node:focus-visible{background:#ece6bc0e}
#map .node .label{flex:1}
#map .node .dot{flex-basis:6px;width:6px;height:9px;border-radius:6px 0;background:#a8b58b;border-color:#a8b58b}
#map .node.visited .dot{background:#a8b58b;border-color:#a8b58b}
.read-mark{position:absolute;right:6px;bottom:3px;font:8px var(--mono);color:#dfbe78}
.node-row:has(.selected){border-color:#dfbe78}
#map .node.selected{color:#ffe3a4;background:#dfbe7814}
#map .connection-toggle{flex:0 0 48px;min-height:48px;padding:8px 4px;color:#d5c392;font:11px var(--mono);border-left:1px solid #afbd9b26;background:none;border-radius:0 16px 0 0}
#map .connection-toggle:hover,#map .connection-toggle:focus-visible{background:#dfbe7817;color:#ffdc91}
.twig-toggle{min-height:44px;padding:8px 0 8px 12px;font:10px var(--mono);color:#c9d3b5}
.twig-toggle:hover{color:#ffe1a0}
#tree-root>.node-row{min-width:210px;max-width:100%;background:#314737;border-color:#b7c694}
#tree-root .node{min-width:0;font-size:28px;padding:15px 22px;border:0;background:none}
#piece-path{display:flex;flex-wrap:wrap;gap:0;margin:20px 0 8px;align-items:center;justify-content:flex-start}
#piece-path button{font:10px/1.6 var(--mono);padding:9px 0;min-height:36px;text-align:left;text-decoration:underline;text-underline-offset:4px}
#piece-path button+button::before{content:'/';display:inline-block;padding:0 8px;color:#949278;text-decoration:none}
#piece-path+.piece-number{margin-top:18px}
body:has(dialog[open]){overflow:hidden}
#connections-dialog{width:min(940px,calc(100vw - 40px));max-height:90svh;padding:26px 32px 32px;overscroll-behavior:contain}
#connections-dialog>.reader-top{position:sticky;top:-26px;z-index:2;background:var(--paper);padding:8px 0}
#connections-dialog .reader-top button{min-height:44px}
#connections-title{font:36px/1.15 var(--serif);letter-spacing:-1px;margin:24px 0 12px;max-width:650px}
.connections-help{font:11px/1.8 var(--mono);color:#68715c;margin:0 0 26px}
#connection-source{position:relative;display:flex;justify-content:center;padding-bottom:42px}
#connection-source::after{content:'';position:absolute;left:50%;bottom:0;height:42px;border-left:1px dashed #927c49}
.connection-focal{border:1px solid #8b9b70;background:#e4e5d4;border-radius:9px 22px 9px 22px;padding:18px 20px;display:flex;gap:8px 16px;flex-wrap:wrap;justify-content:center;max-width:100%}
.connection-focal>.eyebrow{flex-basis:100%;text-align:center;color:#596746;letter-spacing:.5px;font-size:10px}
.connection-focal>h3{flex-basis:100%;font:27px/1.2 var(--serif);margin:4px 0;text-align:center;font-weight:400}
.connection-focal button{min-height:44px;font:12px var(--mono);text-decoration:underline;text-underline-offset:5px}
#connection-groups{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:30px}
#connection-groups::before{content:'';position:absolute;left:25%;right:25%;top:0;border-top:1px dashed #927c49}
.connection-group{min-width:0;position:relative;padding-top:24px}
.connection-group::before{content:'';position:absolute;left:50%;top:0;height:20px;border-left:1px dashed #927c49}
.connection-group:nth-child(n+3){border-top:1px dashed #927c4970}
.connection-group h3{font:11px/1.7 var(--mono);text-align:center;margin:0 0 16px;color:#586044}
.connection-group ul{list-style:none;border-left:1px dashed #927c49;margin:0;padding:0 0 0 20px}
.connection-group li{display:flex;position:relative;min-width:0;border:1px solid #8f986856;border-radius:4px 14px 4px 14px;margin:0 0 9px;background:#e9e6d8}
.connection-group li::before{content:'';position:absolute;left:-21px;top:24px;width:20px;border-top:1px dashed #927c49}
.connection-group li>button:first-child{flex:1;min-width:0;min-height:52px;text-align:left;padding:12px;font:17px/1.3 var(--serif);overflow-wrap:anywhere}
.connection-group .connection-follow{flex:0 0 46px;padding:7px 3px;min-height:48px;font:11px var(--mono);color:#74581e;border-left:1px solid #8f986842}
.connection-group li>button:hover,.connection-group li>button:focus-visible{background:#baba9130}
@media(max-width:1100px){
 #wander #nodes{gap:36px 58px}.branch-title{font-size:22px}.tree-branch>summary{padding:13px;gap:9px}
}
@media(max-width:700px){
 #wander #nodes,body[data-room=wander]:has(#reader:not([hidden])) #nodes{grid-template-columns:minmax(0,1fr);padding-left:30px;gap:34px}
 #tree-root{justify-content:flex-start;padding:0 0 40px 30px}
 .tree-branch:nth-child(odd)>summary{margin-left:0}.tree-branch:nth-child(odd)>.branch-note{text-align:left}
 .tree-branch>summary{min-height:58px}.branch-title{font-size:24px}
 .branch-leaves{margin-left:0;padding-left:16px}
 .branch-leaves .tree-item::before{left:-17px;width:17px}
 .tree-children{margin-left:2px;padding-left:14px}
 .tree-children>.tree-item::before{left:-15px;width:15px}
 #map .node{padding:12px 10px;font-size:17px;gap:7px}
 #map .connection-toggle{flex-basis:44px;font-size:10px}
 .tree-tools{gap:0;padding:6px 0}.tree-tools button{padding:10px 8px;font-size:10px}
 #tree-search span{margin-left:6px}
 #connections-dialog{width:calc(100vw - 20px);max-height:94svh;padding:18px}
 #connections-dialog>.reader-top{top:-18px;gap:10px}#connections-dialog .reader-top .eyebrow{font-size:9px;letter-spacing:.5px}
 #connections-title{font-size:30px}
 #connection-groups{grid-template-columns:minmax(0,1fr);gap:24px;border-left:1px dashed #927c49;margin-left:8px;padding-left:20px}
 #connection-groups::before{left:-1px;right:50%}
 .connection-group:nth-child(n){border:0;padding-top:18px}
 .connection-group::before{left:-21px;top:0;width:20px;height:28px;border-width:0 0 1px 1px;border-style:dashed;border-color:#927c49;border-radius:0 0 0 12px}
 .connection-group h3{text-align:left}
 .connection-group ul{padding-left:14px}.connection-group li::before{left:-15px;width:14px}
 .read-mark{font-size:8px}
}
@media(max-width:360px){#map .node .dot{display:none}.read-mark{display:none}.branch-title{font-size:21px}#tree-search span{display:none}}
@media(min-width:901px) and (max-width:1300px){
 body[data-room=wander]:has(#reader:not([hidden])) #nodes{grid-template-columns:minmax(0,1fr);padding-left:30px}
 body[data-room=wander]:has(#reader:not([hidden])) #tree-root{justify-content:flex-start;padding-left:30px}
 body[data-room=wander]:has(#reader:not([hidden])) .tree-branch:nth-child(odd)>summary{margin-left:0}
 body[data-room=wander]:has(#reader:not([hidden])) .tree-branch{border:0}
}
