:root{--paper:#e7eadb;--panel:#e1e5d6;--ink:#283c36;--muted:#69766a;--rule:#9da998;--light-rule:#bcc6b5;--sound:#bb4d32;--image:#26616a;--object:#84862e;--letter:'DM Mono',monospace}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:10px var(--letter);overflow:hidden}button,input,select{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer;padding:0}button:hover{background:color-mix(in srgb,var(--ink) 8%,transparent)}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,canvas:focus-visible{outline:1px solid var(--sound);outline-offset:3px}button:active{background:color-mix(in srgb,var(--ink) 15%,transparent)}a{color:inherit;text-underline-offset:3px}::selection{background:var(--sound);color:var(--paper)}.topbar{height:60px;display:flex;align-items:stretch;border-bottom:1px solid var(--ink);margin:0 20px;position:relative;z-index:5}.drawing-symbol{font-size:36px;font-weight:400;display:flex;align-items:center;border-right:1px solid var(--rule);padding-right:19px;margin:10px 0;line-height:1}.identity{display:flex;flex-direction:column;justify-content:center;padding:0 20px;gap:5px;letter-spacing:1.1px}.identity b{font-size:13px;font-weight:500}.identity span{font-size:8px;letter-spacing:.6px}.revision{border-left:1px solid var(--rule);padding:0 20px;margin:13px 0;font-size:8px;line-height:1.7;color:var(--muted)}.header-actions{margin-left:auto;display:flex;align-items:center;gap:24px}.header-actions button{font-size:9px;letter-spacing:.4px;padding:8px 2px}.header-actions #new-map{font-size:19px;display:flex;align-items:center;gap:9px}.header-actions #new-map span{font-size:9px}#panel-toggle{border:1px solid var(--rule);padding:8px 11px}#panel-toggle span{margin-left:16px}main{display:flex;height:calc(100dvh - 91px)}#viewport{flex:1;min-width:0;position:relative;overflow:hidden;background:var(--paper)}#map{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#map.dragging{cursor:grabbing}.sheet-heading{position:absolute;left:42px;top:39px;pointer-events:none;background:var(--paper);padding:0 10px 8px 0}.sheet-heading>span{font-size:8px;letter-spacing:1px;border-bottom:1px solid var(--rule);padding-bottom:4px;display:block;width:60px}.sheet-heading h1{font-size:21px;letter-spacing:-.6px;font-weight:400;line-height:1.3;margin:9px 0 5px}.sheet-heading p{font-size:8px;letter-spacing:.3px;margin:0}.sheet-heading .drawing-note{font-size:8px;color:var(--muted);line-height:1.7;margin-top:12px;text-transform:none;letter-spacing:0}.north-mark{position:absolute;right:29px;top:34px;width:45px;height:57px;color:var(--muted);pointer-events:none}.north-mark span{position:absolute;left:20px;top:0;font-size:8px}.north-mark i{position:absolute;left:22px;top:15px;width:1px;height:37px;background:var(--muted)}.north-mark i:before{content:'';position:absolute;border:4px solid transparent;border-bottom-color:var(--muted);top:-7px;left:-3.5px}.north-mark b{position:absolute;top:26px;left:15px;font-size:22px;font-weight:400}.north-mark small{position:absolute;left:29px;top:37px;font-size:8px;white-space:nowrap}.map-toolbar{position:absolute;left:26px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;border:1px solid var(--rule);background:var(--paper)}.map-toolbar button{width:32px;height:31px;font-size:20px}.map-toolbar output{font-size:7px;text-align:center;padding:4px 0;border-top:1px solid var(--light-rule);border-bottom:1px solid var(--light-rule)}.map-toolbar>span{border-top:1px solid var(--rule)}.map-titleblock{position:absolute;left:27px;bottom:28px;width:310px;background:var(--paper);border:1px solid var(--ink)}.titleblock-label{font-size:6px;letter-spacing:1px;padding:6px 9px;border-bottom:1px solid var(--rule)}.reference-row{display:flex;align-items:center;justify-content:space-between;padding:9px}.reference-row b{font-weight:400;font-size:16px;letter-spacing:-.5px}.reference-row button{font-size:7px;padding:5px}.titleblock-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;border-top:1px solid var(--rule)}.titleblock-grid>span{font-size:6px;padding:6px 8px;border-right:1px solid var(--rule);color:var(--muted)}.titleblock-grid>span:last-child{border-right:0}.titleblock-grid b{display:block;font-size:7px;margin-top:5px;font-weight:400;color:var(--ink)}.pan-help{position:absolute;bottom:32px;right:26px;font-size:7px;letter-spacing:.2px;background:var(--paper);padding:5px}#control-panel{width:280px;flex:none;border-left:1px solid var(--ink);background:var(--panel);display:flex;flex-direction:column;margin-right:20px;border-right:1px solid var(--rule)}.panel-title{display:flex;justify-content:space-between;border-bottom:1px solid var(--ink);font-size:8px;padding:11px 13px;letter-spacing:.7px}.register{padding:14px 13px 11px;border-bottom:1px solid var(--rule)}.section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:7px;color:var(--muted)}.section-title h2{font:8px var(--letter);margin:0;color:var(--ink);letter-spacing:.5px}.section-title button{font-size:7px;padding:3px}.register-row{display:flex;align-items:center;width:100%;gap:10px;padding:5px 4px;text-align:left;min-height:27px;border-bottom:1px dotted var(--light-rule)}.register-row:last-child{border-bottom:0}.register-row .ref{font-size:8px;color:var(--muted);width:22px}.register-row b{font-size:9px;flex:1;font-weight:400}.register-row .entry-marker{width:5px;height:5px;border:1px solid var(--muted)}.register-row.visited .entry-marker{background:var(--ink)}.register-row.selected{background:var(--ink);color:var(--paper)}.register-row.selected .ref{color:var(--paper)}.inspector{border-bottom:1px solid var(--ink);padding:12px 13px;max-height:40vh;overflow:auto;scrollbar-width:thin}.inspection-empty{display:flex;gap:13px;align-items:center}.inspection-cross{font-size:23px;font-weight:400}.inspection-empty p{font-size:7px;margin:0;line-height:1.8}.inspection-empty small{font-size:8px;color:var(--muted)}.inspection-heading{display:flex;justify-content:space-between;font-size:7px;color:var(--muted)}.inspection-heading button{font-size:15px;line-height:1}.inspector h3{font-size:14px;font-weight:400;margin:10px 0}.inspector img{width:100%;height:120px;object-fit:cover;display:block;filter:saturate(.7)}.inspector .credit{font-size:6px;color:var(--muted);line-height:1.5;margin-top:5px}.inspector p{font-size:9px;line-height:1.65;margin:10px 0}.inspector .source{font-size:8px;display:block;margin-top:12px}.inspector .component-location{font-size:7px;color:var(--muted);border-top:1px dotted var(--rule);padding-top:8px;margin-top:9px}.control-scroll{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}.channels,.plot-controls,.seed-controls{padding:14px 13px;border-bottom:1px solid var(--rule)}.channels>label{display:flex;align-items:center;gap:9px;margin-top:9px;font-size:8px;cursor:pointer}.channels>label span{flex:1}.channels>label small{font-size:7px;color:var(--muted)}input[type=checkbox]{appearance:none;width:10px;height:10px;flex-shrink:0;border:1px solid var(--muted);margin:0;cursor:pointer;background:var(--paper);position:relative}input[type=checkbox]:checked:after{content:'';position:absolute;inset:2px;background:var(--ink)}.swatch{display:inline-block;width:24px;height:2px;background:var(--sound)}.swatch.digital{background:var(--image)}.swatch.physical{background:var(--object)}.parameter{display:flex;align-items:center;justify-content:space-between;font-size:7px;gap:10px;margin:12px 0;color:var(--muted)}.parameter select{width:145px;border:1px solid var(--rule);background:var(--paper);border-radius:0;padding:5px 3px;font-size:7px;color:var(--ink)}.parameter.range{display:grid;grid-template-columns:1fr auto;gap:9px}.parameter output{color:var(--ink);font-size:8px}.parameter input[type=range]{grid-column:1/-1;width:100%;appearance:none;height:1px;background:var(--rule);margin:2px 0 0;cursor:pointer}input[type=range]::-webkit-slider-thumb{appearance:none;width:6px;height:12px;border:1px solid var(--ink);background:var(--paper);border-radius:0}input[type=range]::-moz-range-thumb{width:5px;height:11px;border:1px solid var(--ink);background:var(--paper);border-radius:0}.ink-colors{display:flex;gap:12px;margin:16px 0}.ink-colors label{display:flex;align-items:center;gap:5px;font-size:6px;cursor:pointer}.ink-colors input{appearance:none;width:17px;height:17px;border:1px solid var(--rule);padding:2px;background:var(--paper);border-radius:0;cursor:pointer}.ink-colors input::-webkit-color-swatch-wrapper{padding:0}.ink-colors input::-webkit-color-swatch{border:0}.check-row{display:flex;justify-content:space-between;margin-top:15px}.check-row label{display:flex;align-items:center;gap:5px;font-size:7px;cursor:pointer}.seed-controls .parameter{margin-top:0}.seed-controls input[type=text]{width:136px;min-width:0;padding:5px;border:1px solid var(--rule);background:var(--paper);font-size:8px;border-radius:0}.seed-buttons{display:flex;gap:7px}.seed-buttons button{flex:1;font-size:7px;padding:7px 2px;border:1px solid var(--rule)}.seed-controls p{font-size:7px;line-height:1.7;color:var(--muted);margin-bottom:0}.panel-foot{font-size:6px;padding:10px 13px;display:flex;align-items:center;gap:7px;border-top:1px solid var(--rule)}.status-lamp{width:4px;height:4px;display:inline-block;background:var(--ink);border-radius:50%;margin-right:4px}footer{height:31px;border-top:1px solid var(--ink);margin:0 20px;display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:7px;letter-spacing:.3px}footer button{font-size:7px;color:var(--muted)}.coordinate-readout{display:flex;gap:9px}.coordinate-readout span{margin-left:14px}.coordinate-readout b{font-weight:400}body.panel-hidden #control-panel{display:none}dialog{width:530px;max-width:calc(100vw - 30px);max-height:85dvh;border:1px solid var(--ink);border-radius:0;padding:28px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#162a2450}.close-dialog{position:absolute;right:17px;top:13px;font-size:22px}.dialog-code{font-size:8px;letter-spacing:.5px;border-bottom:1px solid var(--rule);padding-bottom:16px}dialog h2{font-size:17px;font-weight:400;margin:22px 0}dialog p{font-size:10px;line-height:1.8}dialog dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:8px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:18px 0;line-height:1.6}dialog dd{margin:0;color:var(--muted)}.wide-button{border:1px solid var(--ink);padding:10px;width:100%;font-size:8px;margin-top:17px}#toast{position:fixed;bottom:45px;left:50%;transform:translateX(-50%);z-index:20;background:var(--ink);color:var(--paper);border:1px solid var(--paper);padding:10px 16px;font-size:9px;opacity:0;pointer-events:none;max-width:90vw;text-align:center}#toast.visible{opacity:1}body.blueprint .inspector img{filter:saturate(.55)}
@media(min-height:1000px){.register-row{padding-top:7px;padding-bottom:7px}.channels,.plot-controls,.seed-controls{padding-top:18px;padding-bottom:18px}.parameter{margin:16px 0}}
@media(max-width:1050px){.revision{display:none}.topbar{margin:0 14px}.identity{padding:0 14px}.header-actions{gap:17px}#control-panel{margin-right:14px;width:253px}.sheet-heading{left:28px;top:29px}.sheet-heading h1{font-size:18px}.map-titleblock{left:24px;width:285px}.pan-help{display:none}.north-mark{right:22px}.parameter select{width:128px}.ink-colors{gap:8px}}
@media(max-width:760px){.topbar{height:56px;margin:0 10px}.drawing-symbol{font-size:27px;padding-right:10px}.identity{padding:0 11px;gap:4px}.identity b{font-size:10px;letter-spacing:.7px}.identity span{font-size:5px}.header-actions{gap:12px}.header-actions #new-map span{display:none}.header-actions #new-map{font-size:23px}.header-actions button{font-size:8px}#panel-toggle{font-size:7px;padding:7px}#panel-toggle span{margin-left:5px}main{height:calc(100dvh - 86px)}#control-panel{position:absolute;right:0;top:56px;bottom:30px;width:265px;margin:0;z-index:8;box-shadow:-1px 0 0 var(--paper)}.sheet-heading{top:25px;left:23px}.sheet-heading h1{font-size:16px}.sheet-heading .drawing-note{font-size:7px}.north-mark{display:none}.map-toolbar{left:16px;top:46%}.map-toolbar button{width:27px;height:28px}.map-titleblock{left:17px;bottom:24px;width:266px}.reference-row b{font-size:14px}.reference-row button{font-size:6px}.titleblock-label{font-size:5px}.titleblock-grid>span{font-size:5px}.titleblock-grid b{font-size:6px}.map-titleblock .reference-row{padding:7px 9px}footer{height:30px;margin:0 10px;font-size:6px;gap:8px}footer>div:nth-child(3){display:none}footer button{font-size:5px}.coordinate-readout{gap:5px}.coordinate-readout span{margin-left:7px}.panel-foot{font-size:5px}.inspection-empty small{font-size:7px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Revision 03: a fixed-scale field fills the viewport; controls sit above it. */
:root{--paper:#fff;--panel:#fff;--ink:#20282b;--muted:#8a9296;--rule:#d8dddf;--light-rule:#eef0f1;--sound:#f51b3e;--image:#234bff;--object:#00ad58}body{background:#fff;overscroll-behavior:none}main{position:fixed;inset:0;height:100dvh;display:block}#viewport{position:absolute;inset:0;width:100%;height:100%;background:#fff}#map{outline:none!important}.topbar{position:fixed;top:23px;left:25px;right:25px;height:36px;margin:0;border:0;z-index:20;pointer-events:none}.topbar>*{pointer-events:auto}.drawing-symbol{font-size:24px;border:0;margin:0;padding:0 12px 0 0;background:white}.identity{background:white;padding:0 12px 0 0;gap:5px}.identity b{font-size:11px;letter-spacing:.7px}.identity span{font-size:6px;color:var(--muted);letter-spacing:.6px}.revision{display:none}.header-actions{background:white;gap:19px;padding-left:12px}.header-actions button{font-size:8px;transition:color .16s,background .16s}.header-actions #new-map{font-size:19px}.header-actions #new-map span{font-size:8px}#panel-toggle{border:1px solid #dfe3e5;padding:9px 12px;background:white}#panel-toggle span{margin-left:12px}.map-titleblock{bottom:55px;left:26px;width:281px;border:0;background:#fffffff2}.titleblock-label{font-size:5px;border:0;padding:0 0 4px;color:var(--muted)}.reference-row{padding:0;gap:15px}.reference-row b{font-size:11px;letter-spacing:0}.reference-row button{font-size:6px;color:var(--muted);padding:5px 0}.titleblock-grid{display:none}.pan-help{display:block;bottom:24px;left:50%;right:auto;transform:translateX(-50%);font-size:6px;color:#8a9296;padding:4px;background:white;white-space:nowrap}#control-panel{position:fixed;right:25px;top:76px;bottom:72px;width:280px;margin:0;border:1px solid #dfe3e5;z-index:25;background:#fffffff7;backdrop-filter:none;transform:translateX(0);opacity:1;visibility:visible;transition:transform .22s ease,opacity .18s ease,visibility .18s;box-shadow:none}body.panel-hidden #control-panel{display:flex;transform:translateX(14px);opacity:0;visibility:hidden;pointer-events:none}.panel-title{border-bottom-color:var(--rule);padding:12px 13px;font-size:7px}.panel-title button{font-size:17px;line-height:10px}.register{border-bottom-color:var(--rule)}.register-row{transition:background .16s,color .16s}.register-row:hover{background:#f1f5f8}.register-row.selected:hover{background:var(--ink)}.inspector{border-bottom-color:var(--rule)}.inspector img{filter:none}.channels,.plot-controls,.seed-controls{background:transparent}.check-row{justify-content:flex-start;gap:25px}.control-scroll{scrollbar-width:thin}.panel-foot{font-size:5px;letter-spacing:.4px}footer{position:fixed;bottom:22px;left:26px;right:26px;height:auto;margin:0;border:0;z-index:8;pointer-events:none;font-size:6px;gap:20px}footer>div,footer>button{background:white;padding:4px 0;pointer-events:auto}.coordinate-readout{margin-left:auto}footer>div:nth-child(3){display:none}footer button{font-size:5px;color:var(--muted)}footer>div:first-child{font-size:5px;color:var(--muted)}footer .status-lamp{background:#00ad58;width:3px;height:3px}button:hover{background:#f3f5f6}.source:hover{color:var(--image)}#toast{bottom:78px;font-size:8px;border:0;padding:10px 13px;background:#20282b;color:white;transition:opacity .18s}#node-hint{position:fixed;pointer-events:none;z-index:9;padding:6px 8px;background:#20282b;color:white;font:6px 'DM Mono',monospace;letter-spacing:.5px;opacity:0;transform:translateY(3px);transition:opacity .16s,transform .16s}#node-hint.visible{opacity:1;transform:none}
@media(max-width:760px){.topbar{top:17px;left:17px;right:17px;height:32px}.drawing-symbol{font-size:20px;padding-right:8px}.identity{padding-right:6px}.identity b{font-size:8px;letter-spacing:.5px}.identity span{font-size:4px}.header-actions{gap:12px;padding-left:8px}.header-actions #new-map span{display:none}.header-actions #new-map{font-size:20px}#panel-toggle{padding:7px 8px;font-size:6px}#panel-toggle span{margin-left:6px}#control-panel{top:65px;bottom:66px;right:14px;width:min(280px,calc(100vw - 28px));margin:0}.map-titleblock{left:18px;bottom:51px;width:235px}.reference-row b{font-size:10px}.reference-row button{font-size:5px}.titleblock-label{font-size:4px}.pan-help{display:none}footer{left:18px;right:18px;bottom:20px;height:auto;font-size:5px}footer button{display:none}footer>div:nth-child(3){display:none}.coordinate-readout{margin-left:auto}}
@media(prefers-reduced-motion:reduce){#control-panel,button,#toast,#node-hint{transition:none!important}}
#control-panel .register{max-height:230px;flex-shrink:0;overflow-y:auto;scrollbar-width:thin}#control-panel .inspector{max-height:240px;min-height:72px;flex-shrink:1}#control-panel .control-scroll{min-height:125px}

/* Revision 04: a softer field, with projects opening inside it. */
body{font-family:'DM Sans',sans-serif;text-transform:lowercase}.topbar{height:40px}.drawing-symbol{font-size:22px;font-weight:400;color:#c2c9cd;padding-right:12px}.identity b{font-family:'DM Sans',sans-serif;font-size:16px;font-weight:450;letter-spacing:-.4px}.identity span{font-family:'DM Sans',sans-serif;font-size:10px;letter-spacing:0;color:#a2a8ab}.header-actions{gap:19px}.header-actions button,.header-actions #new-map span{font-family:'DM Sans',sans-serif;font-size:11px;letter-spacing:0;font-weight:400}.header-actions #new-map{font-size:21px;gap:7px}#panel-toggle{padding:9px 14px;border-radius:30px;border-color:#e9ecee;font-size:11px}#panel-toggle span{font-size:14px;line-height:10px}.map-titleblock{width:255px}.titleblock-label{font-family:'DM Sans',sans-serif;font-size:8px;letter-spacing:0;color:#afb4b6}.reference-row b{font-family:'DM Sans',sans-serif;font-size:11px;color:#858e92}.reference-row button{font-family:'DM Sans',sans-serif;font-size:9px;letter-spacing:0}.pan-help{font-family:'DM Sans',sans-serif;font-size:10px;color:#a2a9ac;letter-spacing:0}footer{font-family:'DM Sans',sans-serif;font-size:8px;letter-spacing:0}footer>div:first-child{font-size:8px;color:#a0a8ac}footer button{font-family:'DM Sans',sans-serif;font-size:8px}footer .status-lamp{width:3px;height:3px;opacity:.5}.coordinate-readout{opacity:.5}.coordinate-readout b{font-family:'DM Sans',sans-serif}.panel-title{font-family:'DM Sans',sans-serif;font-size:12px;letter-spacing:0;padding:15px 17px}.section-title{font-size:9px}.section-title h2{font-family:'DM Sans',sans-serif;font-size:11px;font-weight:500;letter-spacing:0}.section-title button{font-size:9px}.register-row{min-height:28px;padding:5px 7px;border-bottom:0;border-radius:4px}.register-row b{font-size:11px;font-weight:400}.register-row .ref{font-size:8px;color:#b6bdc0}.register-row.selected{background:#f0f5f6;color:#20282b}.register-row.selected .ref{color:#949da2}.register-row.selected:hover{background:#eaf0f2}.register-row .entry-marker{border-radius:50%;width:4px;height:4px;border-color:#cbd1d4}.register-row.visited .entry-marker{background:#aebbbf}.parameter{font-size:10px;gap:6px;margin:17px 0}.parameter select{font-family:'DM Sans',sans-serif;font-size:10px;padding:7px;width:130px;border-radius:5px;border-color:#e4e9eb}.parameter output{font-family:'DM Sans',sans-serif;font-size:10px}.parameter input[type=range]{background:#e2e7e9}input[type=range]::-webkit-slider-thumb{width:8px;height:8px;border-radius:50%;border:0;background:#92a4ac}.channels>label{font-size:10px;gap:10px;margin:12px 0}.channels>label small{font-family:'DM Sans',sans-serif;font-size:8px;opacity:.55}.ink-colors label{font-size:8px}.ink-colors input{border:0;border-radius:50%;overflow:hidden;padding:0;width:15px;height:15px}.ink-colors input::-webkit-color-swatch{border-radius:50%}.check-row label{font-size:10px}input[type=checkbox]{border-color:#c6d0d4;border-radius:2px}.seed-controls input[type=text]{border-color:#e4e9eb;border-radius:4px;font-size:10px;padding:7px}.seed-buttons button{font-family:'DM Sans',sans-serif;font-size:10px;padding:8px;border-color:#e4e9eb;border-radius:4px}.seed-controls p{font-size:9px;color:#a4adb1}.panel-foot{font-size:7px;color:#a5afb2;letter-spacing:0}#control-panel{border-radius:12px;border-color:#e6ebed;background:#ffffffed;box-shadow:0 8px 40px #364b5b06;overflow:hidden}#control-panel .control-scroll{min-height:170px}.panel-title,.register,.channels,.plot-controls,.seed-controls,.panel-foot{border-color:#edf0f2}#node-hint{background:#ffffffef;color:#8b969b;box-shadow:none;border:1px solid #eef1f2;border-radius:30px;font-family:'DM Sans',sans-serif;font-size:10px;padding:7px 11px;letter-spacing:0}#toast{font-family:'DM Sans',sans-serif;font-size:11px;border-radius:30px;letter-spacing:0}.topbar,.map-titleblock,footer,.pan-help{transition:opacity .8s ease,transform .8s ease}.entering .topbar,.entering .map-titleblock,.entering footer,.entering .pan-help{opacity:0;transform:translateY(5px);pointer-events:none}.entering.entry-arrived .topbar,.entering.entry-arrived .map-titleblock,.entering.entry-arrived footer{opacity:1;transform:none;pointer-events:auto}.entering.entry-arrived .pan-help{opacity:1;transform:translateX(-50%)}
.entry{position:fixed;inset:0;z-index:35;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#fff;pointer-events:none;transition:opacity 1.25s ease,filter 1.25s ease;opacity:1}.entry[hidden]{display:none}.entry p{font:400 23px 'DM Sans',sans-serif;letter-spacing:-.7px;margin:22px 0 8px}.entry small{font:11px 'DM Sans',sans-serif;color:#a7afb3}.entry-point{width:7px;height:7px;border:1px solid #7298ee;background:white;border-radius:50%;position:relative;animation:entry-breathe 1.5s ease-in-out infinite}.entry-point:before,.entry-point:after{content:'';position:absolute;inset:-7px;border:1px solid #7298ee22;border-radius:50%}.entry-point:after{inset:-15px;border-color:#7298ee0b}.entry-opening .entry{opacity:0;filter:none}.skip-entry{position:fixed;top:29px;right:29px;z-index:40;font:11px 'DM Sans',sans-serif;color:#9ba6ac;background:white;padding:8px 12px;border-radius:20px}.entry-arrived .skip-entry{opacity:0;pointer-events:none}.skip-entry[hidden]{display:none}@keyframes entry-breathe{0%,100%{transform:scale(.8)}50%{transform:scale(1.15)}}
.project-reveal{position:fixed;z-index:18;width:min(400px,calc(100vw - 36px));max-height:calc(100dvh - 120px);transform:translate(-50%,-50%);isolation:isolate;padding:8px}.project-reveal[hidden]{display:none}.project-reveal:before{content:'';position:absolute;inset:-55px -65px;background:radial-gradient(ellipse,#fff 43%,#ffffffed 62%,#ffffff00 76%);z-index:-1;pointer-events:none}.reveal-content{max-height:calc(100dvh - 137px);overflow-y:auto;scrollbar-width:none;transform:scale(.65) translateY(14px);transform-origin:var(--origin-x,50%) var(--origin-y,50%);opacity:0;filter:none;transition:transform .65s cubic-bezier(.18,.7,.18,1),opacity .35s ease,filter .55s ease}.project-reveal.is-open .reveal-content{transform:scale(1);opacity:1;filter:none}.reveal-close{position:absolute;right:7px;top:0;z-index:4;width:29px;height:29px;border:1px solid #e9edef;border-radius:50%;background:#ffffffdd;color:#8c989d;font:20px 'DM Sans',sans-serif;line-height:1}.reveal-close:hover{background:#f4f7f8;color:#273338}.reveal-image{width:258px;height:258px;border-radius:46% 54% 50% 50% / 52% 46% 54% 48%;overflow:hidden;margin:0 auto 22px;position:relative;background:color-mix(in srgb,var(--project-color) 4%,white);transform:rotate(-3deg);transition:border-radius 1.5s ease}.project-reveal.is-open .reveal-image{border-radius:50% 48% 46% 54% / 48% 51% 49% 52%}.reveal-image img{display:block;width:100%;height:100%;object-fit:cover;transform:scale(1.12) rotate(3deg);transition:transform 1.3s cubic-bezier(.2,.6,.2,1);transition:transform 1.6s linear(0.000,0.034,0.123,0.246,0.386,0.529,0.666,0.789,0.893,0.977,1.041,1.085,1.112,1.124,1.126,1.118,1.105,1.088,1.070,1.053,1.036,1.021,1.009,0.999,0.992,0.988,0.985,0.984,0.984,0.986,0.988,0.990,0.992,0.994,0.996,0.998,0.999,1.000,1.001,1.002,1)}.project-reveal.is-open .reveal-image img{transform:scale(1.05) rotate(3deg)}.reveal-image-index{position:absolute;bottom:19px;left:0;right:0;text-align:center;font:8px 'DM Sans',sans-serif;letter-spacing:1px;color:white;text-shadow:0 1px 5px #0006;transform:rotate(3deg)}.reveal-copy{padding:0 16px 10px;text-align:center}.reveal-category{font:10px 'DM Sans',sans-serif;color:#a4afb3}.reveal-copy h2{font:400 30px/1.08 'DM Sans',sans-serif;color:#283339;letter-spacing:-1px;margin:8px 0 14px}.reveal-copy p{font:12px/1.7 'DM Sans',sans-serif;color:#8a969c;margin:0 auto 15px;max-width:340px}.reveal-links{display:flex;justify-content:center;gap:23px;align-items:center;margin:16px 0 20px}.reveal-links a,.reveal-links button{font:11px 'DM Sans',sans-serif;text-decoration:none;color:#34454d;padding:3px 0;border-bottom:1px solid #dfe8eb}.reveal-links a:hover,.reveal-links button:hover{color:var(--project-color);background:none;border-color:var(--project-color)}.reveal-copy>small{display:block;font:8px/1.5 'DM Sans',sans-serif;color:#b0b8bc;max-width:310px;margin:auto}.abstract-art{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;transform:rotate(3deg)}.abstract-art i{position:absolute;width:200px;height:90px;border:1px solid color-mix(in srgb,var(--project-color) 35%,white);border-radius:50%;transform:rotate(-35deg)}.abstract-art i:nth-child(2){transform:rotate(35deg);width:170px;height:110px}.abstract-art i:nth-child(3){transform:rotate(90deg);width:210px;height:130px}.abstract-art span{position:absolute;font:15px 'DM Sans',sans-serif;color:color-mix(in srgb,var(--project-color) 70%,#333);max-width:155px;text-align:center;letter-spacing:-.4px}.abstract-art~.reveal-image-index{color:var(--project-color);text-shadow:none}
@media(max-width:760px){.topbar{top:19px}.identity b{font-size:13px}.identity span{font-size:8px}.drawing-symbol{display:none}.header-actions{gap:12px}.header-actions button{font-size:10px}#panel-toggle{font-size:10px;padding:8px 11px}.header-actions #new-map{font-size:19px}.map-titleblock{width:235px;bottom:50px}.reference-row b{font-size:10px}.reference-row button{font-size:8px}.titleblock-label{font-size:7px}footer>div:first-child{font-size:7px}.coordinate-readout{font-size:7px}.project-reveal{max-height:calc(100dvh - 110px)}.reveal-content{max-height:calc(100dvh - 125px)}.reveal-image{width:215px;height:215px;margin-bottom:17px}.reveal-copy{padding:0 12px 8px}.reveal-copy h2{font-size:26px}.reveal-copy p{font-size:11px}.reveal-close{right:3px}.project-reveal:before{inset:-35px -10px}.reveal-links{gap:20px}.reveal-links a,.reveal-links button{font-size:10px}.entry p{font-size:21px}.skip-entry{top:21px;right:19px}.abstract-art i{width:180px}.abstract-art i:nth-child(3){width:180px}}
@media(prefers-reduced-motion:reduce){.entry-point{animation:none}.entry,.reveal-content,.reveal-image,.reveal-image img,.topbar,.map-titleblock,footer,.pan-help{transition:none!important}.reveal-content{transform:none!important;filter:none!important}}

/* Revision 06: opaque inks and crisp, continuous stroke arrivals. */
.ink-colors{flex-wrap:wrap;gap:12px}.ink-colors label{gap:5px}.entry-point{border-color:#234bff;background:#234bff}.reveal-content{filter:none;transition:transform .65s cubic-bezier(.18,.7,.18,1),opacity .35s ease}
/* Physics: the project aperture opens on a damped spring (fallback above for older browsers). */
.reveal-content{transition:transform 1.1s linear(0.000,0.035,0.125,0.252,0.397,0.548,0.692,0.822,0.932,1.020,1.086,1.130,1.154,1.163,1.159,1.145,1.125,1.101,1.077,1.053,1.031,1.013,0.998,0.987,0.980,0.975,0.973,0.974,0.976,0.979,0.983,0.987,0.991,0.994,0.998,1.000,1.002,1.003,1.004,1.004,1),opacity .35s ease}.entry{filter:none;transition:opacity 1.25s ease}.reveal-copy p{color:#788087}

/* Revision 07: project markers carry their own hover/focus labels. */
#project-targets{position:absolute;inset:0;pointer-events:none}.project-target{position:absolute;width:48px;height:48px;transform:translate(-50%,-50%);background:transparent!important;border:0;outline:none!important;pointer-events:none;padding:0}
#node-hint{padding:7px 9px;background:#fff;border:0;border-radius:0;box-shadow:none;max-width:220px;color:#25282a;font:12px/1.3 var(--letter);transform:translateY(3px);transition:opacity .14s ease,transform .18s ease}
#node-hint strong{display:block;font-weight:500;letter-spacing:-.1px}#node-hint span{display:block;margin-top:5px;color:#858b8e;font-size:9px}#node-hint.visible{transform:none}

/* Revision 09: a small listening control, driven by the actual audio output. */
#sound-toggle{display:flex;align-items:center;gap:7px;white-space:nowrap;color:#92989c}#sound-toggle[aria-pressed=true]{color:#234bff}.sound-bars{display:flex;align-items:center;gap:2px;width:12px;height:15px}.sound-bars i{display:block;width:2px;height:3px;border-radius:2px;background:currentColor;transition:height .1s}.sound-on .sound-bars i{height:calc(3px + var(--level,0)*11px)}.sound-on .sound-bars i:nth-child(2){height:calc(5px + var(--level,0)*10px)}.sound-on .sound-bars i:nth-child(3){height:calc(3px + var(--level,0)*7px)}
.sound-controls{padding:14px 13px;border-bottom:1px solid #edf0f2}.sound-controls p{font-size:10px;color:#9aa2a7;line-height:1.7;margin:5px 0 12px}.sound-controls .sound-guide{font-size:9px;line-height:1.8;margin:12px 0 0}.sound-controls #replay-drawing{font:10px 'DM Sans',sans-serif;color:#596970;padding:5px 0;border-bottom:1px solid #e4e9eb}.sound-controls .parameter{margin:15px 0 17px}#sound-meter{display:block;width:35px;height:3px;background:#edf0f2;border-radius:2px;overflow:hidden}#sound-meter i{display:block;width:100%;height:100%;background:#234bff;transform:scaleX(var(--level,0));transform-origin:left;transition:transform .1s}
@media(max-width:760px){.header-actions{gap:10px}#sound-toggle{gap:4px;font-size:9px}.sound-bars{width:10px;gap:1px}}
@media(max-width:380px){.header-actions{gap:7px;padding-left:4px}.identity b{font-size:12px}#panel-toggle{padding:8px}.sound-bars{display:none}}
@media(prefers-reduced-motion:reduce){.sound-bars i,#sound-meter i{transition:none}}

/* A compact instrument beside the drawing. */
.sound-cluster{display:flex;align-items:center;gap:5px}.header-actions #sound-settings{width:25px;height:29px;display:grid;place-items:center;padding:5px;color:#92989c;border-radius:6px}#sound-settings svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.15}#sound-settings[aria-expanded=true]{color:#234bff;background:#f2f4f9}
#sound-panel{position:fixed;top:80px;right:26px;width:300px;max-height:calc(100dvh - 125px);overflow:auto;z-index:24;background:#fff;border:1px solid #e8eaed;border-radius:12px;box-shadow:0 10px 45px #1e2e4909;font-family:'DM Sans',sans-serif;scrollbar-width:thin}#sound-panel[hidden]{display:none}.sound-panel-head{display:flex;align-items:center;gap:14px;padding:15px 17px;border-bottom:1px solid #eef0f2;font-size:12px}.sound-panel-head #sound-meter{margin-left:auto}.sound-panel-head button{font-size:19px;color:#9da5a9;width:24px;height:24px;border-radius:50%}.sound-panel-body{padding:16px 18px 12px}.harmony-caption{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#28303a}.harmony-caption>span:last-child{font-size:8px;color:#9aa2a7}#chord-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:13px 0 8px}.chord-step{position:relative;padding:9px 3px 11px;text-align:center;color:#91999e;background:#f7f8f9;border-radius:5px;overflow:hidden;font-size:11px}.chord-step b{font-weight:400}.chord-step.active{color:#234bff;background:#f0f3fc}.chord-step i{position:absolute;bottom:0;left:0;height:2px;background:#234bff;width:calc(var(--phase,0)*100%)}.scale-notes{font-size:9px;color:#8e979d;margin:9px 0 17px;letter-spacing:.5px}.tuning-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:19px}.tuning-row label{display:flex;align-items:center;gap:8px;font-size:10px;color:#8b949a}.tuning-row select,.tuning-row input{background:white;border:1px solid #e4e8eb;border-radius:4px;padding:5px 6px;font:11px 'DM Sans',sans-serif;color:#3c454b;height:28px}.tuning-row select{width:60px}.tuning-row input{width:55px;appearance:textfield}.tuning-row input::-webkit-inner-spin-button{appearance:none}.sound-sliders{display:grid;grid-template-columns:1fr 1fr;column-gap:23px}#sound-panel .parameter{font-size:10px;margin:10px 0 18px;gap:10px}#sound-panel .parameter output{font-size:9px;color:#78848b}#sound-panel input[type=range]{height:2px;margin:3px 0 4px;accent-color:#234bff}#sound-panel input[type=range]::-webkit-slider-thumb{width:10px;height:10px;background:#234bff;border-radius:50%}#sound-panel input[type=range]::-moz-range-thumb{width:10px;height:10px;background:#234bff;border:0;border-radius:50%}.sound-audition-row,.sound-bottom-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.sound-audition-row{margin-top:6px}.sound-audition-row button{font-size:10px;color:#88939a;padding:9px 0}.sound-audition-row #audition-progression{display:flex;justify-content:space-between;align-items:center;background:#f2f4f9;color:#234bff;border:1px solid #e6eaf3;border-radius:6px;padding:10px 12px;flex:1}.sound-audition-row #sound-reset{margin-left:8px}.sound-bottom-row{margin-top:13px}.sound-bottom-row button{font-size:9px;color:#7d898f;padding:5px 0;border-bottom:1px solid #edf0f2}#sound-status{font-size:8px;line-height:1.6;color:#9aa3a9;margin:14px 0 2px}.sound-panel-body button:disabled{opacity:.5}
@media(max-width:760px){#sound-panel{top:70px;right:14px;width:min(300px,calc(100vw - 28px));max-height:calc(100dvh - 105px)}.sound-cluster{gap:2px}.header-actions #sound-settings{width:22px;padding:4px}.header-actions{gap:8px}}
@media(max-width:380px){.header-actions{gap:5px}.sound-cluster{gap:0}#sound-toggle .sound-copy{font-size:8px}.header-actions #help{font-size:9px}.identity{padding-right:0}#panel-toggle{padding:7px}}

.recording-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #eef0f2;padding-bottom:13px;margin-bottom:16px;font-size:10px;color:#58646d}.recording-row>span{display:flex;align-items:center;gap:6px}.recording-row i{width:4px;height:4px;border-radius:50%;background:#234bff}.recording-row small{color:#a2abb0;font-size:8px;margin-left:4px}.recording-row button{font-size:9px;color:#7b8790;padding:4px 0}.recording-row button[aria-pressed=true]{color:#234bff}

/* Notes and effects share a compact, scrollable instrument. */
#sound-panel .sound-panel-head{position:sticky;top:0;background:#fff;z-index:2}.sound-tabs{display:grid;grid-template-columns:1fr 1fr;gap:3px;background:#f5f6f8;border-radius:6px;padding:3px;margin:0 0 18px}.sound-tabs button{font:10px 'DM Sans',sans-serif;color:#959ea4;border-radius:4px;padding:7px}.sound-tabs button[aria-selected=true]{color:#234bff;background:#fff;box-shadow:0 1px 3px #24375308}[role=tabpanel][hidden]{display:none}.effects-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#707e87;margin:4px 0 12px}.effects-top button{font-size:9px;border:1px solid #e8ecf0;border-radius:15px;padding:5px 8px;color:#234bff}.effects-top button[aria-pressed=true]{background:#234bff;color:white;border-color:#234bff}.effects-presets{display:flex;gap:7px;margin-bottom:12px}.effects-presets button{flex:1;font-size:10px;padding:7px;border:1px solid #e9edf1;border-radius:5px;color:#8b969d}.effects-presets button[aria-pressed=true]{color:#234bff;border-color:#bac6e8;background:#f4f6fc}#sound-panel .effects-sliders .parameter{margin:9px 0 12px}.effects-sliders .parameter:last-child{grid-column:1/-1}.effects-note{font-size:8px;line-height:1.6;color:#a0a8ae;margin:7px 0 11px}.is-dry .effects-sliders{opacity:.45}.sound-transport{border-top:1px solid #edf0f2;margin-top:16px;padding-top:9px}#sound-panel .sound-transport>.parameter{margin:8px 0 15px}.sound-transport .sound-audition-row{margin-top:0}#sound-panel{overscroll-behavior:contain}

.recording-row select{min-width:0;width:126px;font:9px 'DM Sans',sans-serif;color:#65717b;background:#fff;border:0;padding:3px 0}.recording-row>span{gap:5px}.recording-row small{margin-left:0;white-space:nowrap}.recording-row{gap:6px}.recording-row button{white-space:nowrap;font-size:8px}.melody-caption{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.melody-caption #melody-note{font-size:8px;color:#a4acb2;white-space:nowrap}.melody-caption #melody-note.playing{color:#234bff}.sound-sliders .parameter:last-child:nth-child(odd){grid-column:1/-1}
.pages-menu{position:relative;font-family:'DM Sans',sans-serif;font-size:11px}.pages-menu summary{list-style:none;cursor:pointer;padding:8px 2px}.pages-menu summary::-webkit-details-marker{display:none}.pages-menu summary::after{content:' ▾';font-size:8px}.pages-menu[open] summary::after{content:' ▴'}.pages-menu nav{position:absolute;top:calc(100% + 6px);right:0;display:flex;flex-direction:column;min-width:180px;background:#fff;border:1px solid var(--ink);z-index:30}.pages-menu nav a{text-decoration:none;padding:9px 12px;border-bottom:1px solid var(--light-rule);white-space:nowrap}.pages-menu nav a:last-child{border-bottom:0}.pages-menu nav a:hover{background:var(--light-rule)}@media(max-width:760px){.pages-menu{font-size:10px}.pages-menu nav{right:auto;left:0}}

/* The tune panel only holds three controls now, so it sizes to its content. */
#control-panel{bottom:auto;max-height:calc(100dvh - 140px)}
#control-panel .control-scroll{flex:none}
#control-panel .plot-controls{border-bottom:0;padding-bottom:20px}

