:root{--sky:#8ac8c5;--ink:#3f4850;--paper:#f8f7f1;--yellow:#f3db64;--coral:#e8785f;--green:#4f8565;--shadow:#68777d;--line:3px solid var(--ink)}
a{color:inherit;text-decoration:none}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--sky);color:var(--ink);font-family:"Arial Narrow","Segoe UI",Arial,sans-serif}.experience,#world,.paper-grain{position:absolute;inset:0;width:100%;height:100%}#world{cursor:grab;touch-action:none}#world:active{cursor:grabbing}.paper-grain{pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.28'/%3E%3C/svg%3E");mix-blend-mode:multiply}.loading{position:fixed;z-index:100;inset:0;display:grid;place-content:center;gap:18px;text-align:center;background:#fbfaf5;transition:opacity .55s,visibility .55s}.loading.hidden{opacity:0;visibility:hidden}.loading strong{font-size:11px;letter-spacing:.25em}.envelope{position:relative;width:62px;height:42px;border:2px solid var(--ink);transform:rotate(-2deg)}.envelope:before,.envelope:after{position:absolute;top:-1px;width:39px;height:2px;content:"";background:var(--ink)}.envelope:before{left:0;transform:rotate(32deg);transform-origin:left}.envelope:after{right:0;transform:rotate(-32deg);transform-origin:right}.envelope span{position:absolute;inset:0;border-bottom:2px solid var(--ink);animation:letter 1s steps(2) infinite}@keyframes letter{50%{transform:translateY(-5px)}}.topbar{position:absolute;z-index:10;top:28px;left:34px;right:34px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}.topbar>*{pointer-events:auto}.mini-logo{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:900;letter-spacing:.12em}.mini-logo span{display:grid;width:37px;height:34px;place-items:center;border:2px solid var(--ink);background:var(--paper);box-shadow:3px 3px 0 var(--shadow);font-size:12px;transform:rotate(-2deg)}.topbar p{margin:0;text-align:center;font-size:10px;font-weight:900;letter-spacing:.16em;line-height:1.6}.topbar p span{color:#597c7d}.sound-button{border:2px solid var(--ink);padding:9px 11px;background:var(--paper);box-shadow:3px 3px 0 var(--shadow);font-size:10px;font-weight:900;letter-spacing:.1em;transform:rotate(1deg)}.sound-button:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--shadow)}.intro{position:absolute;z-index:5;top:50%;left:50%;width:min(970px,90vw);text-align:center;transform:translate(-50%,-48%);pointer-events:none;transition:opacity .55s,transform .8s}.intro.exploring{opacity:0;transform:translate(-50%,-58%) scale(1.08)}.eyebrow{margin:0 0 10px;font-size:11px;font-weight:900;letter-spacing:.28em;text-shadow:1px 1px rgba(255,255,255,.6)}h1{margin:0;font-family:Impact,"Arial Black",sans-serif;font-size:clamp(72px,13.5vw,190px);font-weight:900;letter-spacing:.015em;line-height:.67;transform:skew(-2deg) rotate(-1deg)}h1 span{display:block;color:var(--paper);-webkit-text-stroke:clamp(2px,.25vw,4px) var(--ink);paint-order:stroke fill;filter:drop-shadow(4px 5px 0 var(--ink)) drop-shadow(8px 10px 0 rgba(81,95,101,.75))}h1 span:last-child{margin-left:8%;color:var(--yellow);font-size:.72em;letter-spacing:.09em}.intro-copy{margin:32px auto 20px;font-size:12px;font-weight:800;letter-spacing:.08em;line-height:1.55;text-transform:uppercase}.enter-button{position:relative;pointer-events:auto;border:var(--line);padding:13px 48px 13px 18px;background:var(--paper);box-shadow:5px 5px 0 var(--ink);font:900 11px inherit;letter-spacing:.13em;cursor:pointer;transform:rotate(-1deg)}.enter-button b{position:absolute;top:0;right:0;display:grid;width:36px;height:100%;place-items:center;border-left:2px solid var(--ink);background:var(--coral);font-size:15px}.enter-button:hover{transform:translate(3px,3px) rotate(-1deg);box-shadow:2px 2px 0 var(--ink)}.project-markers{position:absolute;z-index:7;inset:0;pointer-events:none;opacity:0;transition:opacity .6s .3s}.project-markers.visible{opacity:1}.marker{position:absolute;display:flex;align-items:center;gap:7px;border:0;padding:0;background:none;color:var(--ink);font:900 9px inherit;letter-spacing:.1em;cursor:pointer;pointer-events:auto;filter:drop-shadow(2px 3px 0 rgba(255,255,255,.55));transition:transform .15s}.marker i{display:grid;width:34px;height:34px;place-items:center;border:2px solid var(--ink);border-radius:50% 48% 52% 45%;background:var(--yellow);box-shadow:3px 3px 0 var(--ink);font-style:normal}.marker span{border:2px solid var(--ink);padding:6px 8px;background:var(--paper);box-shadow:3px 3px 0 var(--ink);white-space:nowrap}.marker:hover{z-index:3;transform:scale(1.08)!important}.zone-title{position:absolute;z-index:4;top:17%;left:50%;opacity:0;color:rgba(248,247,241,.86);font:900 clamp(24px,3.5vw,50px) Impact,"Arial Black",sans-serif;letter-spacing:.08em;-webkit-text-stroke:2px var(--ink);text-shadow:3px 4px 0 var(--shadow);transform:translateX(-50%) rotate(-2deg);transition:opacity .4s}.zone-title.visible{opacity:1}.dock{position:absolute;z-index:10;bottom:26px;left:50%;display:flex;gap:12px;transform:translateX(-50%);opacity:0;transition:opacity .5s .35s,transform .5s .35s}.dock.visible{opacity:1}.dock button,.dock a{display:flex;align-items:center;gap:7px;border:2px solid var(--ink);padding:7px 10px 7px 7px;background:var(--paper);box-shadow:3px 3px 0 var(--ink);color:var(--ink);font:900 9px inherit;letter-spacing:.1em;cursor:pointer;white-space:nowrap}.dock span{display:grid;width:24px;height:24px;place-items:center;border:1px solid var(--ink);background:var(--yellow);font-size:12px}.dock button:nth-child(2) span{background:#a8d29b}.dock button:nth-child(3) span{background:var(--coral)}.dock a span{background:#c7b8e6}.dock button:hover,.dock a:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.drag-hint{position:absolute;z-index:6;right:30px;bottom:34px;opacity:0;font-size:9px;font-weight:900;letter-spacing:.14em;transition:opacity .5s}.drag-hint.visible{opacity:.8}.drag-hint span{display:inline-block;margin:0 3px}.panel{position:absolute;z-index:20;top:50%;right:35px;width:min(430px,calc(100vw - 70px));max-height:calc(100vh - 150px);overflow:auto;border:var(--line);padding:32px;background:var(--paper);box-shadow:8px 9px 0 var(--ink);opacity:0;visibility:hidden;transform:translate(30px,-50%) rotate(1deg);transition:opacity .25s,transform .3s,visibility .3s}.panel.open{opacity:1;visibility:visible;transform:translate(0,-50%) rotate(1deg)}.panel-close{position:absolute;top:12px;right:12px;display:grid;width:32px;height:32px;place-items:center;border:2px solid var(--ink);background:var(--coral);font-size:23px;line-height:1;cursor:pointer}.panel-kicker{margin:0 0 12px;color:#6c777b;font-size:10px;font-weight:900;letter-spacing:.2em}.panel h2{max-width:350px;margin:0;font:900 clamp(35px,4vw,56px)/.9 Impact,"Arial Black",sans-serif;letter-spacing:.02em;text-transform:uppercase}.panel>p:not(.panel-kicker):not(.panel-note){margin:22px 0;color:#5e666b;font:15px/1.6 Georgia,serif}.panel-tags{display:flex;flex-wrap:wrap;gap:7px}.panel-tags span{border:1px solid var(--ink);padding:5px 7px;background:#e9e4d5;font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.panel-links{display:flex;flex-wrap:wrap;gap:9px;margin-top:25px}.panel-links a{border:2px solid var(--ink);padding:9px 12px;background:var(--yellow);box-shadow:3px 3px 0 var(--ink);font-size:10px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.panel-note{border-top:1px dashed #9d9b91;margin:25px 0 0;padding-top:18px;color:#7d7a73;font-size:10px;line-height:1.5}.noscript{position:fixed;z-index:99;right:20px;bottom:20px;max-width:320px;border:2px solid;padding:15px;background:#fff}.noscript a{text-decoration:underline}
@media(max-width:700px){.topbar{top:18px;left:18px;right:18px}.topbar p{display:none}.mini-logo{font-size:10px}.sound-button{font-size:8px}.intro{width:94vw}.eyebrow{font-size:8px}.intro-copy{font-size:10px}.project-markers .marker span{display:none}.marker i{width:38px;height:38px}.dock{bottom:16px;gap:6px}.dock button,.dock a{padding:5px}.dock button{font-size:0}.dock a{font-size:0}.dock span{width:28px;height:28px;font-size:12px}.drag-hint{right:auto;left:50%;bottom:67px;transform:translateX(-50%);white-space:nowrap}.panel{top:auto;right:12px;bottom:76px;left:12px;width:auto;max-height:64vh;padding:27px 24px;transform:translateY(30px) rotate(0)}.panel.open{transform:translateY(0) rotate(0)}.zone-title{top:21%}}
@media(max-width:700px){.sound-button{position:absolute;top:0;right:0}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.railway-map-card{margin-top:24px}.railway-map-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;font-size:9px;font-weight:900;letter-spacing:.14em;text-transform:uppercase}.railway-map-head a{border:1px solid var(--ink);padding:5px 7px;background:#e9e4d5;white-space:nowrap}.railway-map-frame{position:relative;height:280px;border:2px solid var(--ink);background:#dbe6d1;box-shadow:4px 4px 0 var(--ink);overflow:hidden}.railway-map-frame:before{position:absolute;z-index:2;inset:0;pointer-events:none;content:"";background:linear-gradient(135deg,rgba(255,255,255,.22),transparent 32%,rgba(63,72,80,.1));mix-blend-mode:multiply}#railway-map{position:absolute;inset:0}.railway-map-loading{position:absolute;z-index:3;inset:0;display:grid;place-items:center;background:#f8f7f1;color:var(--ink);font-size:10px;font-weight:900;letter-spacing:.16em}.railway-map-loading.hidden{display:none}.railway-map-controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px}.railway-map-controls button{border:2px solid var(--ink);padding:7px 9px;background:var(--paper);box-shadow:3px 3px 0 var(--ink);color:var(--ink);font:900 9px inherit;letter-spacing:.08em;cursor:pointer}.railway-map-controls button[aria-pressed=true]{background:var(--yellow)}.railway-map-controls button:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.railway-map-caption{margin:14px 0 0!important;color:#7d7a73!important;font:10px/1.5 Georgia,serif!important}.railway-map-caption code{font-family:Consolas,monospace}.maplibregl-ctrl-attrib,.maplibregl-popup-content{font:11px/1.35 "Segoe UI",Arial,sans-serif}.maplibregl-popup-content{border:2px solid var(--ink);box-shadow:3px 3px 0 var(--ink);color:var(--ink)}
@media(max-width:700px){.railway-map-frame{height:235px}.railway-map-head{align-items:flex-start;flex-direction:column}}
