:root{--black:#050505;--ink:#0d0d0d;--paper:#ecebe6;--gray:#8a8a8a;--line:#2a2a2a;--red:#c8102e;--serif:"Playfair Display", Georgia, serif;--mono:"Courier Prime", "Courier New", monospace}*{box-sizing:border-box}html,body{background:var(--black);height:100%;color:var(--paper);font-family:var(--mono);margin:0;overflow:hidden}#map{cursor:grab;width:100%;height:100%;display:block;position:fixed;inset:0}#map.dragging{cursor:grabbing}.vignette{pointer-events:none;background:radial-gradient(#0000 55%,#000000bf 100%);position:fixed;inset:0}.grain{pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:.8s steps(4,end) infinite grain;position:fixed;inset:-50%}@keyframes grain{0%{transform:translate(0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}to{transform:translate(0)}}.panel{border:1px solid var(--line);border-left:3px solid var(--red);background:#080808eb;width:300px;max-height:calc(100% - 32px);padding:20px;font-size:12px;line-height:1.5;position:fixed;top:16px;left:16px;overflow-y:auto}h1{font-family:var(--serif);letter-spacing:.02em;margin:0;font-size:30px;font-style:italic}h1 span{color:var(--red)}.sub{color:var(--gray);text-transform:uppercase;letter-spacing:.2em;margin:0 0 16px;font-size:10px}.city{font-family:var(--serif);border-bottom:1px solid var(--line);margin-bottom:14px;padding-bottom:10px;font-size:22px}label{color:var(--gray);text-transform:uppercase;letter-spacing:.2em;margin-bottom:4px;font-size:10px;display:block}.row{gap:6px;display:flex}input,button{font-family:var(--mono);border-radius:0;font-size:13px}input{background:var(--ink);min-width:0;color:var(--paper);border:1px solid var(--line);text-transform:uppercase;flex:1;padding:6px 8px}input:focus{outline:1px solid var(--red)}button{background:var(--paper);color:var(--black);cursor:pointer;border:none;padding:6px 10px;font-weight:700}button:hover{background:var(--red);color:var(--paper)}button.ghost{width:100%;color:var(--paper);border:1px solid var(--line);background:0 0;margin-top:6px;font-weight:400}button.ghost:hover{border-color:var(--red);color:var(--red);background:0 0}dl{grid-template-columns:auto 1fr;gap:2px 12px;margin:16px 0;display:grid}dt{color:var(--gray)}dd{text-align:right;margin:0}dd.hash{word-break:break-all;font-size:11px}.legend{border-top:1px solid var(--line);grid-template-columns:1fr 1fr;gap:4px 10px;padding-top:12px;display:grid}.legend div{white-space:nowrap;align-items:center;gap:6px;display:flex}.legend i{border:1px solid #555;flex:none;width:12px;height:12px}.hover{border-top:1px solid var(--line);min-height:60px;color:var(--gray);margin-top:14px;padding-top:12px}.hover strong{color:var(--paper);font-family:var(--serif);font-size:15px}.hover em{color:var(--red);font-style:normal}.hint{color:#555;margin:12px 0 0;font-size:10px}.hint b{color:var(--gray)}.loading{letter-spacing:.2em;text-transform:uppercase;color:var(--red);opacity:0;font-size:11px;transition:opacity .2s;position:fixed;bottom:20px;right:20px}.loading.visible{opacity:1}@media (max-width:640px){.panel{width:auto;max-height:45%;inset:auto 16px 16px}}.sub a{color:var(--red)}
