.game-code-loading>progress{width:min(360px,calc(100vw - 48px));height:10px;accent-color:var(--mint)}.game-code-loading>p{max-width:min(520px,calc(100vw - 48px));margin:0;text-align:center;overflow-wrap:anywhere;font:14px DM Sans,system-ui,sans-serif;color:var(--ink-muted)}.game-load-status{display:grid;gap:16px;width:min(380px,calc(100% - 40px));padding:24px;border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--shadow);font:14px DM Sans,system-ui,sans-serif;color:var(--ink-soft)}.game-load-status strong{font:28px var(--pixel-font);color:var(--mint)}.game-load-status progress{width:100%;height:10px;accent-color:var(--mint)}.game-load-status ol{display:grid;gap:12px;margin:0;padding:0;list-style:none}.game-load-status li{display:flex;gap:10px}.game-load-status li.is-complete{color:var(--mint)}.game-load-status small{color:var(--ink-muted)}.storage-settings{border-top:1px solid var(--line);margin:20px 0;padding-top:10px}.storage-settings summary{cursor:pointer;font-weight:700;padding:12px 0;min-height:44px}.storage-settings p{font-size:14px;line-height:1.6}.storage-settings ul{list-style:none;padding:0;margin:16px 0}.storage-settings li{display:grid;gap:10px;padding:16px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.storage-settings small{color:var(--ink-muted)}.storage-map-actions{display:flex;gap:8px;flex-wrap:wrap}.storage-map-actions .button{flex:1;min-height:44px;padding:12px}.storage-delete-check{border:1px solid var(--line);padding:12px}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none!important;max-height:none!important;width:auto;padding:0}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline-offset:1px}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{border:2px dotted #38f;background:#ffffff80}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:12px;font-size:.75rem;line-height:1.5}.leaflet-bar{box-shadow:0 1px 5px #000000a6;border-radius:4px}.leaflet-bar a{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:700 18px Lucida Console,Monaco,monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px #0006;background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block;font-size:13px;font-size:1.08333em}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fff;background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{display:inline!important;vertical-align:baseline!important;width:1em;height:.6669em}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;white-space:nowrap;-moz-box-sizing:border-box;box-sizing:border-box;background:#fffc;text-shadow:1px 1px #fff}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 24px 13px 20px;line-height:1.3;font-size:13px;font-size:1.08333em;min-height:1px}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-top:-1px;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;pointer-events:auto;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;border:none;text-align:center;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;color:#757575;text-decoration:none;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=.70710678,M12=.70710678,M21=-.70710678,M22=.70710678)}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}.location-picker{margin-bottom:20px;padding:24px;border:1px solid var(--line);background:var(--panel, #102c34)}.location-picker-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:18px}.location-picker-heading h2{margin:8px 0 0}.location-picker-heading p{max-width:460px;color:var(--ink-muted);line-height:1.6}.location-search{display:flex;gap:10px;margin-bottom:12px}.location-search input{min-width:0;flex:1;padding:14px;background:#071e27;color:var(--ink);border:1px solid var(--line-strong);font:inherit}.location-map-wrap{position:relative}.location-map{height:420px;width:100%;z-index:0;background:#d5e2db}.location-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;color:#054c41;font-size:28px;line-height:1;font-weight:900}.location-area-label{position:absolute;top:12px;left:50%;transform:translate(-50%);padding:8px 12px;background:#082d2b;color:#fff;font-size:12px;pointer-events:none;white-space:nowrap}.location-help,.location-search-message{color:var(--ink-muted);font-size:14px;line-height:1.6}.location-help{margin-bottom:0}.location-help a{text-decoration:underline}.location-results{list-style:none;padding:0;margin:0 0 12px;border:1px solid var(--line)}.location-results button{width:100%;text-align:left;padding:14px;border:0;border-bottom:1px solid var(--line);background:#123c45;color:var(--ink);font:inherit;cursor:pointer}.location-results button:hover{background:#20535a}.map-import-controls details summary{cursor:pointer;margin-bottom:12px;color:var(--ink-muted)}.map-area-size{display:grid;gap:10px}.map-area-size input{width:100%;min-height:44px;accent-color:#43d6aa}.map-area-size small{color:var(--ink-muted);line-height:1.6}@media(max-width:650px){.location-picker{padding:14px}.location-picker-heading{display:block}.location-map{height:340px}.location-search .button{padding:10px 16px}}.map-workshop{max-width:1120px}.workshop-time-frame{border:0;margin:0;padding:0;min-width:0}.workshop-time-frame:disabled{opacity:.65}.workshop-progress{display:grid;gap:12px;padding:20px;margin-bottom:20px;border:1px solid var(--line-strong);background:#15382e;scroll-margin-top:20px}.workshop-progress-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.workshop-progress-heading span{font-variant-numeric:tabular-nums}.workshop-progress progress{display:block;width:100%;height:16px;accent-color:#b8cf89;border:0;background:#071e27}.workshop-progress progress::-webkit-progress-bar{background:#071e27;border-radius:2px}.workshop-progress progress::-webkit-progress-value{background:#b8cf89;border-radius:2px}.workshop-progress progress::-moz-progress-bar{background:#b8cf89;border-radius:2px}.workshop-progress progress:indeterminate{background:repeating-linear-gradient(110deg,#071e27 0 14px,#375b45 14px 28px)}.workshop-progress p{margin:0;color:var(--ink-muted);line-height:1.5}.workshop-progress .button{justify-self:start;margin:0;min-height:44px}.workshop-steps{display:flex;list-style:none;margin:0 0 24px;padding:0;gap:24px;color:var(--ink-muted)}.workshop-steps li{display:flex;gap:10px;align-items:center;font-size:14px}.workshop-steps span{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--line-strong);flex-shrink:0}.workshop-steps [aria-current]{color:var(--ink);font-weight:700}.workshop-steps [aria-current] span{background:#b8cf89;color:#11231c}.workshop-source{display:flex;gap:8px;margin-bottom:18px}.workshop-source button{padding:14px 20px;border:1px solid var(--line-strong);background:transparent;color:var(--ink);font:inherit;cursor:pointer}.workshop-source button[aria-pressed=true]{background:#b8cf89;color:#11231c}.workshop-area{display:grid;gap:18px;padding:20px;border:1px solid var(--line)}.workshop-area summary,.workshop-notes summary{cursor:pointer;min-height:44px;padding:12px 0}.workshop-file{display:grid;gap:16px;padding:24px;border:1px solid var(--line)}.workshop-file p,.workshop-file h2{margin:0}.workshop-file input{width:100%;min-width:0;font:inherit;padding:14px 0}.workshop-file small,.workshop-help,.workshop-notes>p{color:var(--ink-muted);line-height:1.6}.workshop-preview-top{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.workshop-preview-top>span{color:var(--ink-muted);font-size:14px}.workshop-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:20px}.workshop-actions .button{width:100%;min-height:52px;margin:0;display:flex;align-items:center;justify-content:center;text-align:center}.workshop-notes{margin-top:24px;border-top:1px solid var(--line);padding-top:8px;overflow-wrap:anywhere}.workshop-storage{border:1px solid var(--line);padding:20px;line-height:1.6}.map-workshop .map-preview svg{max-height:420px}.map-workshop .map-preview-heading h2{overflow-wrap:anywhere}@media(max-width:650px){.workshop-steps{gap:12px}.workshop-steps li{font-size:12px;gap:6px;flex:1}.workshop-source>button{flex:1;padding:12px 8px}.workshop-actions{grid-template-columns:1fr;gap:10px}.workshop-preview-top{align-items:flex-start;flex-direction:column}.workshop-area,.workshop-file{padding:16px}.map-workshop .map-preview svg{min-height:220px;max-height:320px}}.workshop-attribution{margin:0;padding:0 20px 16px;font-size:12px;color:var(--ink-muted)}.map-workshop .map-import-notice{display:block}.map-workshop .map-import-notice p{margin:0}.workshop-traffic{padding:24px;border:1px solid var(--line);background:#102c34}.workshop-traffic h2{margin-top:0}.workshop-traffic p{line-height:1.6;color:var(--ink-muted)}.workshop-traffic form{display:grid;gap:20px}.traffic-time-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.traffic-time-fields label{display:grid;gap:10px}.traffic-time-fields input,.traffic-time-fields select{min-width:0;width:100%;padding:12px;min-height:48px;background:#071e27;color:var(--ink);border:1px solid var(--line-strong);font:inherit;color-scheme:dark}.traffic-time-presets,.traffic-step-actions{display:flex;flex-wrap:wrap;gap:10px}.traffic-time-presets .button,.traffic-step-actions .button{flex:1;min-height:48px}.traffic-time-presets [aria-pressed=true]{background:#b8cf89;color:#11231c}.traffic-estimate-summary{display:grid;gap:10px;padding:20px;margin-top:16px;border:1px solid var(--line-strong);background:#15382e;line-height:1.5}.traffic-estimate-summary strong{font-size:1.1rem}.traffic-estimate-note{margin:0;font-size:14px}.traffic-source-estimates{padding:0;list-style:none}.traffic-source-estimates li{display:grid;gap:6px;border-top:1px solid var(--line);padding:12px 0;overflow-wrap:anywhere}.workshop-traffic summary{cursor:pointer;padding:12px 0}@media(max-width:650px){.workshop-steps{gap:6px}.workshop-steps li{align-items:flex-start;font-size:11px}.workshop-traffic{padding:16px}.traffic-time-presets{display:grid;grid-template-columns:1fr 1fr}.traffic-time-presets .button{padding:10px 6px;font-size:12px}.traffic-step-actions{flex-direction:column}}.editor-page__intro,.game-page__heading{display:flex;gap:30px;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.editor-page__intro h1,.game-page__heading h1{margin:0;font-size:clamp(2.2rem,4vw,4rem)}.editor-page__intro p,.game-page__heading p{max-width:520px;margin:0 0 4px;color:var(--ink-muted);font-size:.87rem}.editor-page>.demand-card{margin-bottom:18px}.editor-card{padding:clamp(20px,3vw,34px)}.schedule-table{overflow-x:auto;overflow-y:hidden;border:1px solid var(--line);border-radius:0}.signal-selection-note{display:flex;gap:11px;align-items:center;margin-bottom:14px;padding:11px 14px;color:var(--ink-soft);border:1px solid rgba(88,216,180,.34);border-radius:0;background:#58d8b412}.signal-selection-note p{margin:0;font-size:.72rem}.signal-selection-note__light{width:10px;height:10px;border-radius:0;background:var(--mint);box-shadow:0 0 0 5px #58d8b41c}.timing-help{display:flex;gap:13px;align-items:flex-start;margin-bottom:16px;padding:14px 16px;color:var(--ink-soft);border:1px solid rgba(240,189,93,.24);border-radius:0;background:#f0bd5d0e}.timing-help__icon{display:grid;flex:0 0 26px;width:26px;height:26px;place-items:center;color:#302005;font-size:.78rem;font-weight:900;border-radius:0;background:var(--amber)}.timing-help strong{display:block;margin:1px 0 3px;font-size:.78rem}.timing-help p{margin:0;color:var(--ink-muted);font-size:.72rem;line-height:1.5}.schedule-list{display:grid;gap:14px}.schedule-period{overflow:hidden;border:1px solid var(--line);border-radius:0;background:#ffffff03}.schedule-period__header{display:flex;gap:18px;align-items:center;justify-content:space-between;min-height:72px;padding:13px 16px;border-bottom:1px solid var(--line);background:#ffffff06}.schedule-period__header>div:first-child{display:grid;gap:3px}.schedule-period__header span,.schedule-period__time span,.schedule-period__summary span{color:var(--ink-muted);font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.schedule-period__header h3{margin:0;font-size:1.16rem;letter-spacing:-.02em}.schedule-period__summary{display:grid;grid-template-columns:auto 44px;gap:2px 13px;align-items:center;text-align:right}.schedule-period__summary span,.schedule-period__summary strong{grid-column:1}.schedule-period__summary strong{font-size:.86rem}.schedule-period__summary .icon-button{grid-column:2;grid-row:1 / 3}.schedule-period__time{display:flex;gap:16px;align-items:center;justify-content:space-between;min-height:62px;padding:10px 16px;border-bottom:1px solid var(--line)}.schedule-period__time div,.schedule-period__time label{display:flex;gap:10px;align-items:center}.schedule-period__time strong{font-size:.88rem}.schedule-period__time input{width:116px;min-height:40px;padding:7px 10px;color:var(--ink);font-weight:800;border:1px solid var(--line-strong);border-radius:0;background:#172522}.schedule-period__time small{color:var(--ink-muted);font-size:.72rem}.duration-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;padding:14px}.duration-control{display:grid;gap:14px;min-width:0;padding:16px;border:1px solid var(--line);border-radius:0;background:#06171f9e}.duration-control--focused{border-color:#58d8b47a;background:#58d8b412;box-shadow:0 0 0 3px #58d8b40d}.duration-control__heading{display:flex;gap:9px;align-items:center}.duration-control__heading .direction-dot{flex:0 0 9px;width:9px;height:9px;box-shadow:0 0 8px currentColor}.duration-control__heading>div{display:grid;gap:2px}.duration-control__heading strong{font-size:.82rem}.duration-control__heading small{color:var(--ink-muted);font-size:.72rem}.duration-stepper{display:grid;grid-template-columns:50px minmax(120px,1fr) 50px;gap:8px;align-items:stretch}.duration-stepper>button{min-height:46px;padding:0 6px;color:var(--mint);font-size:.72rem;font-weight:850;border:1px solid rgba(88,216,180,.24);border-radius:0;background:#58d8b40e}.duration-stepper>button:not(:disabled):hover{border-color:#58d8b480;background:#58d8b41f}.duration-stepper__input{display:flex;align-items:center;min-width:0;overflow:hidden;border:1px solid var(--line-strong);border-radius:0;background:#172522}.duration-stepper__input:focus-within{border-color:var(--mint);box-shadow:0 0 0 3px #58d8b41a}.duration-stepper__input input{width:100%;min-width:0;min-height:44px;padding:8px 4px 8px 12px;color:var(--ink);font-size:1.05rem;font-weight:850;text-align:right;border:0;outline:0;background:transparent;appearance:textfield}.duration-stepper__input input::-webkit-inner-spin-button,.duration-stepper__input input::-webkit-outer-spin-button{margin:0;appearance:none}.duration-stepper__input>span:last-child{padding:0 11px 0 6px;color:var(--ink-muted);font-size:.72rem}.imported-preview-shell{padding-top:18px}.imported-preview-back{margin-left:max(12px,calc((100% - 1440px)/2))}.schedule-table__header,.schedule-row{display:grid;grid-template-columns:minmax(126px,.72fr) repeat(var(--stage-count, 2),minmax(190px,1.28fr)) minmax(110px,.65fr) 50px;gap:16px;align-items:center}.schedule-table__header{min-height:43px;padding:0 16px;color:var(--ink-muted);font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;border-bottom:1px solid var(--line);background:#ffffff06}.schedule-table__header .is-focused-stage{color:var(--mint)}.schedule-row{min-height:112px;padding:14px 16px;border-bottom:1px solid var(--line);background:#ffffff03;transition:background .16s ease}.schedule-row:last-child{border-bottom:0}.schedule-row:hover{background:#ffffff06}.schedule-time{display:grid;gap:6px}.schedule-time label{color:var(--ink-muted);font-size:.72rem;font-weight:750}.schedule-time input,.number-suffix,.green-control input[type=number]{color:var(--ink);border:1px solid var(--line-strong);border-radius:0;background:#172522}.schedule-time input{width:112px;min-height:41px;padding:8px 10px;font-weight:750}.schedule-time input:disabled{color:var(--ink-soft);opacity:.76}.schedule-time small{color:var(--ink-muted);font-size:.72rem}.green-control{display:grid;grid-template-columns:38px minmax(74px,1fr) 82px;gap:9px;align-items:center}.green-control--focused{margin:-8px;padding:8px;border:1px solid rgba(88,216,180,.4);border-radius:0;background:#58d8b412;box-shadow:0 0 0 3px #58d8b40a}.green-control>label{display:flex;gap:6px;align-items:center;font-size:.72rem;font-weight:800}.direction-dot{width:7px;height:7px;border-radius:0}.direction-dot--ns{background:var(--cyan);box-shadow:0 0 7px #4dc7d9b3}.direction-dot--ew{background:var(--coral);box-shadow:0 0 7px #ff876fa6}.green-range{width:100%;height:5px;margin:0;appearance:none;border-radius:0;background:#25414a}.green-range::-webkit-slider-thumb{width:19px;height:19px;appearance:none;border:4px solid var(--mint);border-radius:0;background:#092029;box-shadow:0 0 0 3px #58d8b41f}.green-range::-moz-range-thumb{width:13px;height:13px;border:4px solid var(--mint);border-radius:0;background:#092029;box-shadow:0 0 0 3px #58d8b41f}.number-suffix{display:flex;align-items:center;min-height:40px;overflow:hidden}.number-suffix input[type=number]{width:48px;min-width:0;padding:7px 2px 7px 8px;font-weight:800;text-align:center;border:0;background:transparent;appearance:textfield}.number-suffix input::-webkit-inner-spin-button,.number-suffix input::-webkit-outer-spin-button{margin:0;appearance:none}.number-suffix span{padding-right:8px;color:var(--ink-muted);font-size:.72rem}.cycle-cell{display:grid;gap:4px}.cycle-cell strong{font-size:.9rem}.cycle-cell span{color:var(--ink-muted);font-size:.6rem}.icon-button{display:grid;width:44px;height:44px;place-items:center;font-size:1.2rem;border:1px solid var(--line);border-radius:0;background:#ffffff06}.icon-button--remove:not(:disabled):hover{color:#ffaba9;border-color:#ff716f57;background:#ff716f14}.add-period-button{display:flex;gap:9px;align-items:center;width:100%;min-height:47px;justify-content:center;margin-top:10px;color:var(--mint);font-size:.76rem;font-weight:800;border:1px dashed rgba(88,216,180,.3);border-radius:0;background:#58d8b406;transition:.16s ease}.add-period-button:not(:disabled):hover{border-color:#58d8b48c;background:#58d8b412}.add-period-button span{display:grid;width:22px;height:22px;place-items:center;border:1px solid rgba(88,216,180,.3);border-radius:0}.validation-panel{margin-top:14px;padding:15px 18px;color:#ffd4d2;font-size:.74rem;border:1px solid rgba(255,113,111,.23);border-radius:0;background:#ff716f12}.validation-panel strong{display:block;margin-bottom:6px}.validation-panel ul{margin:0;padding-left:18px}.validation-panel li+li{margin-top:3px}.editor-actions{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}.editor-actions__secondary{display:flex;gap:8px}.results-page{max-width:1120px}.results-hero{display:flex;gap:30px;align-items:center;justify-content:space-between;min-height:230px;padding:clamp(28px,5vw,56px);overflow:hidden;border:1px solid var(--line);border-radius:0;background:radial-gradient(circle at 90% 30%,rgba(240,189,93,.12),transparent 18rem),linear-gradient(140deg,#0f2b35fa,#071a23fa);box-shadow:var(--shadow)}.results-hero--success{background:radial-gradient(circle at 88% 30%,rgba(88,216,180,.16),transparent 18rem),linear-gradient(140deg,#0f3135fa,#071a23fa)}.results-hero>div:first-child{max-width:650px}.results-hero h1{margin-bottom:12px;font-size:clamp(2rem,4.3vw,4rem)}.results-hero p{margin:0;color:var(--ink-soft);font-size:.92rem}.score-display{display:flex;flex:none;gap:14px;align-items:center}.score-ring{display:grid;width:112px;height:112px;place-content:center;text-align:center;border-radius:0;background:radial-gradient(circle closest-side,#0b2730 79%,transparent 80% 100%),conic-gradient(hsl(var(--score-hue) 78% 58%) calc(var(--score) * 1%),#ffffff14 0);box-shadow:0 0 35px hsl(var(--score-hue) 78% 58% / .2)}.score-ring strong{color:hsl(var(--score-hue) 78% 62%);font-size:2.1rem;line-height:1}.score-ring span{color:var(--ink-muted);font-size:.72rem}.score-display>div:last-child{display:grid;gap:3px}.score-display>div:last-child span{color:var(--ink-muted);font-size:.72rem}.score-display>div:last-child strong{color:hsl(var(--score-hue) 78% 62%);font-size:.8rem}.baseline-results-card,.comparison-card{margin-top:18px;padding:clamp(22px,3vw,32px)}.status-pill--warning{color:#ffdc96;border-color:#f0bd5d40;background:#f0bd5d12}.status-pill--success{color:var(--mint-bright);border-color:#58d8b440;background:#58d8b412}.baseline-metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.baseline-metric-grid>div{display:grid;gap:7px;padding:17px;border:1px solid var(--line);border-radius:0;background:#ffffff05}.baseline-metric-grid span{color:var(--ink-muted);font-size:.72rem}.baseline-metric-grid strong{font-size:1rem}.challenge-card{display:grid;grid-template-columns:auto 1fr auto;gap:18px;align-items:center;margin-top:18px;padding:23px;border:1px solid rgba(88,216,180,.2);border-radius:0;background:linear-gradient(135deg,#58d8b414,#0b222beb)}.challenge-card__icon{display:grid;width:48px;height:48px;place-items:center;color:#06231f;font-size:1.35rem;font-weight:900;border-radius:0;background:var(--mint)}.challenge-card h2{margin-bottom:3px}.challenge-card p{margin:0;color:var(--ink-muted);font-size:.75rem}.results-table{overflow:hidden;border:1px solid var(--line);border-radius:0}.results-table__header,.results-table__row{display:grid;grid-template-columns:minmax(190px,1.4fr) repeat(3,minmax(120px,.8fr));gap:12px;align-items:center;padding:0 18px}.results-table__header{min-height:43px;color:var(--ink-muted);font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;background:#ffffff06}.results-table__row{min-height:58px;font-variant-numeric:tabular-nums;font-size:.76rem;border-top:1px solid var(--line)}.results-table__row>strong{font-size:.75rem}.results-table__row>span:not(.difference){color:var(--ink-soft)}.difference{width:fit-content;padding:5px 8px;font-size:.72rem;font-weight:800;border-radius:0}.difference--good{color:var(--mint-bright);background:#58d8b417}.difference--bad{color:#ffaaa7;background:#ff716f14}.difference--equal{color:var(--ink-muted);background:#ffffff0a}.direction-result{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:13px 16px;border-radius:0;background:#ffffff06}.direction-result span{color:var(--ink-muted);font-size:.72rem}.direction-result strong{font-size:.75rem}.saved-notice{display:inline-block;margin-top:15px;padding:7px 10px;color:var(--mint-bright);font-size:.72rem;font-weight:700;border-radius:0;background:#58d8b414}.results-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.map-import-page{width:min(calc(100% - 40px),var(--content));margin:0 auto;padding:42px 0 72px}.map-tool-nav span{padding-right:14px}.map-import-hero{display:flex;gap:36px;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.map-import-hero>div{max-width:880px}.map-import-hero h1{margin-bottom:14px;font-size:clamp(2.35rem,4.7vw,4.7rem)}.map-import-hero p{max-width:720px;margin-bottom:0;color:var(--ink-soft);font-size:.98rem}.map-import-hero>.button{flex:none;margin-bottom:4px}.map-import-workspace{display:grid;grid-template-columns:minmax(300px,.68fr) minmax(0,1.55fr);gap:18px;align-items:stretch}.map-import-controls,.map-import-preview-card,.map-package-card{border:1px solid var(--line);border-radius:0;background:linear-gradient(145deg,#0f2a34f7,#091e27f7);box-shadow:0 18px 48px #0000002e}.map-import-controls{padding:24px}.map-import-controls form{display:grid;gap:16px}.map-import-controls form>.button{width:100%}.map-coordinate-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.map-coordinate-grid label{display:grid;gap:7px}.map-coordinate-grid label:last-child{grid-column:1 / -1}.map-coordinate-grid span,.map-package-meta span{color:var(--ink-muted);font-size:.72rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.map-coordinate-grid input{width:100%;min-height:46px;padding:10px 12px;color:var(--ink);border:1px solid var(--line-strong);border-radius:0;background:#0211178a}.map-coordinate-grid input:hover{border-color:#58d8b459}.map-import-divider{display:flex;align-items:center;margin:18px 0;color:var(--ink-muted);font-size:.72rem;font-weight:750;text-transform:uppercase}.map-import-divider:before,.map-import-divider:after{flex:1;height:1px;background:var(--line);content:""}.map-import-divider span{padding:0 10px}.map-source-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.map-source-actions .button{padding-right:10px;padding-left:10px;font-size:.75rem}.map-import-notice{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start;margin-top:18px;padding:13px;color:var(--ink-soft);border:1px solid rgba(88,216,180,.18);border-radius:0;background:#58d8b40e}.map-import-notice>span{display:grid;width:22px;height:22px;place-items:center;color:var(--mint);font-size:.7rem;font-weight:900;border:1px solid rgba(88,216,180,.35);border-radius:0}.map-import-notice p{margin:0;font-size:.73rem;line-height:1.5}.map-import-notice.is-error{color:#ffd3cc;border-color:#ff716f40;background:#ff716f0f}.map-import-notice.is-error>span{color:var(--danger);border-color:#ff716f6b}.map-import-notice.is-loading>span{animation:map-import-pulse .9s ease-in-out infinite alternate}@keyframes map-import-pulse{to{opacity:.42}}.map-source-note{margin:14px 0 0;color:var(--ink-muted);font-size:.72rem;line-height:1.5}.map-import-preview-card{min-width:0;padding:24px}.map-preview-heading,.map-package-heading{display:flex;gap:24px;align-items:flex-start;justify-content:space-between}.map-preview-heading h2,.map-package-heading h2{margin:0}.compile-state{flex:none;padding:7px 10px;color:var(--danger);font-size:.72rem;font-weight:850;letter-spacing:.04em;border:1px solid rgba(255,113,111,.25);border-radius:0;background:#ff716f0f}.compile-state.is-ready{color:var(--mint);border-color:#58d8b440;background:#58d8b412}.map-preview{margin:18px 0 16px;overflow:hidden;border:1px solid var(--line);border-radius:0;background:linear-gradient(rgba(124,168,166,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(124,168,166,.045) 1px,transparent 1px),#061920;background-size:28px 28px}.map-preview svg{display:block;width:100%;height:410px}.map-preview polyline{fill:none;stroke-linecap:round;stroke-linejoin:round}.map-preview__surfaces polyline{stroke:#17323b}.map-preview__lanes polyline{stroke:#69e1c7ad;stroke-width:.48;stroke-dasharray:3 2}.map-preview__connectors polyline{stroke:#f0bd5dd1;stroke-width:.74}.map-preview__connectors .is-left{stroke:#a58cffe6}.map-preview__connectors .is-right{stroke:#ff876fe6}.map-preview__nodes circle{fill:var(--mint);stroke:#05201c;stroke-width:1}.map-preview__nodes .is-signal{fill:var(--amber);stroke:#f0bd5d40;stroke-width:2.4}.map-preview figcaption{display:flex;gap:18px;align-items:center;justify-content:center;padding:10px 14px;color:var(--ink-muted);font-size:.72rem;font-weight:700;border-top:1px solid var(--line);background:#020e1473}.map-preview figcaption span{display:flex;gap:6px;align-items:center}.map-preview figcaption i{width:16px;height:3px;border-radius:0;background:var(--mint)}.map-preview figcaption i.is-turn{background:var(--amber)}.map-preview figcaption i.is-signal{width:7px;height:7px;border-radius:0;background:var(--amber)}.map-stat-grid{display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden;border:1px solid var(--line);border-radius:0}.map-stat-grid div{display:grid;gap:2px;padding:13px 15px;border-right:1px solid var(--line)}.map-stat-grid div:last-child{border-right:0}.map-stat-grid span{color:var(--ink-muted);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.map-stat-grid strong{font-size:1.25rem}.map-package-card{margin-top:18px;padding:clamp(22px,3vw,32px)}.map-package-heading p{max-width:680px;margin:8px 0 0;color:var(--ink-muted);font-size:.78rem}.map-package-heading>.button{flex:none}.map-package-meta{display:grid;grid-template-columns:1.1fr 1fr .8fr;gap:1px;margin-top:24px;overflow:hidden;border:1px solid var(--line);border-radius:0;background:var(--line)}.map-package-meta>div{display:grid;gap:7px;min-width:0;padding:16px;background:#081d26fa}.map-package-meta code,.map-package-meta strong,.map-package-meta a{min-width:0;overflow-wrap:anywhere;color:var(--ink-soft);font-size:.72rem;line-height:1.5}.map-package-meta code{color:var(--mint-bright)}.map-package-meta a:hover{color:var(--mint)}.map-review-summary{display:flex;gap:8px;margin-top:18px}.map-review-summary div{display:flex;gap:6px;align-items:baseline;padding:8px 11px;color:var(--ink-muted);border:1px solid var(--line);border-radius:0;background:#ffffff05}.map-review-summary div.has-issues{color:var(--amber);border-color:#f0bd5d2e}.map-review-summary strong{color:inherit;font-size:.87rem}.map-review-summary span{font-size:.72rem;font-weight:700}.map-issue-list{display:grid;gap:7px;max-height:330px;margin:14px 0 0;padding:0;overflow-y:auto;list-style:none}.map-issue-list li{display:grid;grid-template-columns:104px 1fr;gap:12px;align-items:start;padding:11px 13px;border:1px solid var(--line);border-radius:0;background:#ffffff05}.map-issue-list li>span{color:var(--ink-muted);font-size:.72rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.map-issue-list li.is-error>span,.map-issue-list li.is-warning>span{color:var(--amber)}.map-issue-list li.is-error>span{color:var(--danger)}.map-issue-list p,.map-empty-review{margin:0;color:var(--ink-soft);font-size:.72rem;line-height:1.5}.map-empty-review{margin-top:14px}.engine-boundary-note{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:start;margin-top:18px;padding:14px;border:1px solid rgba(77,199,217,.18);border-radius:0;background:#4dc7d90b}.engine-boundary-note>span{display:grid;width:27px;height:27px;place-items:center;color:var(--cyan);border:1px solid rgba(77,199,217,.3);border-radius:0}.engine-boundary-note p{margin:0;color:var(--ink-muted);font-size:.72rem;line-height:1.55}.engine-boundary-note strong{color:var(--ink-soft)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.signal-map-editor{position:absolute;z-index:64;inset:0;pointer-events:none}.signal-map-editor__panel{display:grid;width:100%;max-height:100%;gap:10px;padding:12px;overflow:auto;color:var(--ink);border:2px solid var(--pixel-light);background:#071126f5;box-shadow:inset 0 0 0 1px var(--pixel-mid),4px 4px 0 var(--pixel-dark);pointer-events:auto}.signal-map-editor-panel-host{min-height:0;overflow:hidden}.signal-map-editor__heading,.signal-map-editor__actions,.signal-map-editor__buttons,.signal-map-editor__visibility{display:flex;gap:7px;align-items:center}.signal-map-editor__heading{justify-content:space-between;padding-bottom:9px;border-bottom:1px solid var(--pixel-mid)}.signal-map-editor__actions{flex-wrap:wrap;justify-content:flex-end}.signal-map-editor__heading>div:first-child{display:grid;gap:2px}.signal-map-editor__heading span,.signal-map-editor__approach>span,.signal-map-editor__selection label>span{color:var(--amber);font-size:.72rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}.signal-map-editor__heading strong{font-size:.74rem;text-transform:uppercase}.signal-map-editor__panel button,.signal-map-editor__panel select{min-height:32px;color:var(--ink);font:inherit;font-size:.72rem;font-weight:800;border:1px solid var(--pixel-mid);border-radius:0;background:#1e302b}.signal-map-editor__panel button{padding:0 9px;cursor:pointer}.signal-map-editor__panel button:hover:not(:disabled),.signal-map-editor__panel button:focus-visible{color:var(--mint-bright);border-color:var(--mint);outline:0}.signal-map-editor__panel button:disabled{cursor:not-allowed;opacity:.35}.signal-map-editor__panel button.is-primary{color:#071a22;border-color:var(--mint-bright);background:var(--mint)}.signal-map-editor__panel button.is-active{color:#071a22;border-color:var(--amber);background:var(--amber)}.signal-map-editor__panel button.is-danger{color:#ff9aa8;border-color:#754052;background:#281428}.signal-map-editor__approach{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:center}.signal-map-editor__approach select,.signal-map-editor__selection select,.signal-map-editor__add-approach select{width:100%;min-width:0;padding:0 8px}.signal-map-editor__add-approach{display:grid;gap:7px;padding:9px;color:var(--ink-soft);border:1px solid var(--mint);background:#09212c}.signal-map-editor__add-approach>strong{color:var(--mint);font-size:.72rem;text-transform:uppercase}.signal-map-editor__add-approach label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center}.signal-map-editor__add-approach label>span{color:var(--amber);font-size:.72rem;font-weight:850;text-transform:uppercase}.signal-map-editor__add-approach small{font-size:.72rem}.signal-map-editor__selection{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:9px;border:1px solid var(--pixel-mid);background:#09152b}.signal-map-editor__selection>div,.signal-map-editor__selection label{display:grid;min-width:0;gap:3px}.signal-map-editor__selection strong{color:var(--mint);font-size:.72rem;text-transform:uppercase}.signal-map-editor__selection small,.signal-map-editor__panel>p{color:var(--ink-soft);font-size:.72rem;line-height:1.4}.signal-map-editor__selection label{width:126px}.signal-map-editor__buttons{flex-wrap:wrap}.signal-map-editor__visibility{color:var(--ink-soft);font-size:.72rem;font-weight:800}.signal-map-editor__visibility input{width:17px;height:17px;accent-color:var(--mint)}.signal-map-editor__panel>p{margin:0}.signal-map-editor__overlay{position:absolute;z-index:1;inset:0;display:block;width:100%;height:100%;overflow:visible;pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none}.signal-map-editor__overlay>g{opacity:.4}.signal-map-editor__overlay>g.is-approach-selected{opacity:1}.signal-map-editor__overlay>g.signal-map-editor__candidate{cursor:crosshair;opacity:.82;pointer-events:all}.signal-map-editor__candidate-hit{stroke:transparent;stroke-width:30}.signal-map-editor__candidate-road{stroke:var(--mint);stroke-width:8;stroke-dasharray:10 6;filter:drop-shadow(0 0 5px #152320);opacity:0;pointer-events:none}.signal-map-editor__candidate:hover .signal-map-editor__candidate-road{stroke:var(--amber);stroke-width:11;opacity:1}.signal-map-editor__candidate circle{fill:var(--mint);stroke:#fff;stroke-width:2;opacity:0;pointer-events:none}.signal-map-editor__candidate text{fill:#fff;font-family:Courier New,monospace;font-size:11px;font-weight:900;paint-order:stroke;opacity:0;pointer-events:none;stroke:#152320;stroke-width:4px}.signal-map-editor__candidate:hover circle,.signal-map-editor__candidate:hover text{opacity:1}.signal-map-editor__line,.signal-map-editor__head{cursor:grab;pointer-events:all}.signal-map-editor__line:active,.signal-map-editor__head:active{cursor:grabbing}.signal-map-editor__line-hit{stroke:transparent;stroke-width:28}.signal-map-editor__line-visible{stroke-width:6;filter:drop-shadow(0 0 4px rgba(5,12,24,.95))}.signal-map-editor__line.is-selected .signal-map-editor__line-visible{stroke-width:9}.signal-map-editor__line>circle{stroke:#fff;stroke-width:2}.signal-map-editor__line-label rect,.signal-map-editor__head-label rect{fill:#152320;stroke:#d9eeff;stroke-width:1.5}.signal-map-editor__line-label text,.signal-map-editor__head-label text{fill:#fff;font-family:Courier New,monospace;font-size:12px;font-weight:900}.signal-map-editor__direction-label{fill:#fff;font-family:Courier New,monospace;font-size:11px;font-weight:900;paint-order:stroke;stroke:#152320;stroke-width:4px}.signal-map-editor__ownership-link{stroke-width:2;stroke-dasharray:5 4;opacity:.9;pointer-events:none}.signal-map-editor__head-panel{fill:#152320;stroke-width:3}.signal-map-editor__head.is-selected .signal-map-editor__head-panel{stroke-width:5}.signal-map-editor__head>circle{stroke:#eaffff;stroke-width:1}.signal-map-editor__head>circle.is-red{fill:#ff4e55}.signal-map-editor__head>circle.is-yellow{fill:#ffcb55}.signal-map-editor__head>circle.is-green{fill:#4be099}@media(max-width:860px){.signal-map-editor-panel-host{position:fixed;z-index:120;right:8px;bottom:8px;left:8px;max-height:min(270px,calc(100dvh - 16px))}.signal-map-editor__panel{max-height:min(270px,calc(100dvh - 16px));gap:7px;padding:9px}.signal-map-editor__heading{padding-bottom:6px}.signal-map-editor__selection{padding:7px}.signal-map-editor__panel>p{display:none}.signal-map-editor__panel button,.signal-map-editor__panel select{min-height:34px}}.scenery-number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.scenery-fields .map-field,.scenery-fields input,.scenery-fields select{min-width:0;max-width:100%}.scenery-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.scenery-warning{color:#f3c77d}.scenery-handle{fill:transparent;stroke:transparent;stroke-width:1.5;pointer-events:all;cursor:grab;touch-action:none}.scenery-handle:hover{fill:#d3e8a51a;stroke:#d3e8a5}.scenery-handle.is-selected{fill:#d3e8a510;stroke:#e6d9a0;stroke-dasharray:5 3}.scenery-handle:focus{outline:none;stroke:#fff1ba;stroke-width:3}.scenery-place-target{fill:transparent;pointer-events:all;cursor:crosshair;touch-action:none}@font-face{font-family:Pixelify Sans;src:url(/fonts/pixelify-sans.ttf) format("truetype");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-medium.ttf) format("truetype");font-style:normal;font-weight:600;font-display:swap}:root{font-family:DM Sans,system-ui,sans-serif;color-scheme:dark;font-synthesis:none;--ink: #f4eedb;--ink-soft: #c1c7b8;--ink-muted: #98aa9b;--page: #14211d;--page-deep: #0f1b17;--surface: #1c2c25;--surface-raised: #24372e;--surface-soft: #2b4034;--line: #35473a;--line-strong: #586a50;--mint: #b6cc8b;--mint-bright: #d1e4a7;--mint-dark: #36472c;--cyan: #83b9b2;--amber: #efc078;--coral: #e5987a;--violet: #b2a2c7;--danger: #f19a87;--success: #bbd594;--pixel-light: #8a9c79;--pixel-mid: #465b46;--pixel-dark: #0c1712;--shadow: 4px 4px 0 #0c171299;--radius-xl: 0;--radius-lg: 0;--radius-md: 0;--content: 1200px;--header-height: 84px;--pixel-font: "Pixelify Sans", monospace;--label-font: "SFMono-Regular", Consolas, monospace}*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:var(--page-deep);scroll-padding-top:100px}body{margin:0;color:var(--ink);background:var(--page);min-width:320px;min-height:100vh;font-size:14px;line-height:1.5}body:before{position:fixed;inset:0;z-index:-1;pointer-events:none;content:"";opacity:.12;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 8 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0h1v1H0zm4 4h1v1H4z' fill='%23bdc699'/%3E%3C/svg%3E");background-size:8px 8px}button,input,select,textarea{font:inherit}button{color:inherit;touch-action:manipulation}button:not(:disabled),summary{cursor:pointer}button:disabled,input:disabled{opacity:.45;cursor:not-allowed}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--amber);outline-offset:5px}h1:focus{outline:none}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--pixel-font);font-weight:600;letter-spacing:-.025em;line-height:1.12}h1{font-size:clamp(36px,5vw,64px)}h2{font-size:30px;margin-bottom:10px}h3{font-size:24px}p{line-height:1.65}a{color:var(--mint)}svg{display:block}.pixel-icon{display:inline-block;width:16px;height:16px;flex:0 0 16px;vertical-align:middle}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.eyebrow{display:flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--mint);font:10px/1.5 var(--label-font);letter-spacing:.13em;text-transform:uppercase}.eyebrow .pixel-icon{width:12px;height:12px;flex-basis:12px}.muted-copy{color:var(--ink-muted);font-size:13px}.app-header{position:relative;z-index:100;display:flex;justify-content:space-between;align-items:center;gap:30px;height:var(--header-height);padding:0 max(28px,calc((100vw - var(--content)) / 2));border-bottom:1px solid var(--line);background:var(--page-deep)}.brand{display:flex;align-items:center;gap:13px;min-height:44px;padding:0;border:0;background:none;text-align:left}.brand>span{display:grid}.brand strong{font:32px/.95 var(--pixel-font);letter-spacing:-.06em}.brand strong span{color:var(--mint)}.brand small{color:var(--ink-muted);font:7px var(--label-font);letter-spacing:.15em;margin-top:8px}.traffic-mark{display:flex!important;flex-direction:column;justify-content:center;align-items:center;width:25px;height:44px;gap:4px;border:2px solid #b4baa0;background:#15211c;box-shadow:3px 3px #050e0a}.traffic-mark i{width:7px;height:7px;background:var(--coral);box-shadow:inset -2px -2px #a4523e}.traffic-mark i:nth-child(2){background:var(--amber);box-shadow:inset -2px -2px #a17836}.traffic-mark i:nth-child(3){background:var(--mint);box-shadow:inset -2px -2px #76894f}.main-nav{display:flex;align-self:stretch;gap:26px}.main-nav button{display:flex;align-items:center;gap:9px;position:relative;padding:0 2px;background:none;border:0;font-size:12px;color:var(--ink-muted)}.main-nav button.is-active,.main-nav button:hover{color:var(--ink)}.main-nav button.is-active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:3px;background:var(--mint)}.main-nav button.is-active .pixel-icon{color:var(--mint)}.header-tools{display:flex;gap:8px;align-items:center}.hero-label>span{width:5px;height:5px;display:inline-block;background:var(--mint)}.header-icon,.header-menu__trigger{display:grid;place-items:center;width:44px;min-height:44px;padding:0;border:1px solid var(--line);background:transparent;color:var(--ink-soft)}.header-icon:hover,.header-menu__trigger:hover{background:var(--surface-raised);border-color:var(--mint)}.header-menu{position:relative;display:none}.header-menu__panel{position:absolute;top:calc(100% + 12px);right:0;width:min(290px,calc(100vw - 32px));padding:8px;border:1px solid var(--line-strong);background:var(--surface);box-shadow:var(--shadow)}.header-menu__panel button{display:flex;align-items:center;gap:14px;padding:12px;width:100%;border:0;background:none;text-align:left}.header-menu__panel button:hover{background:var(--surface-raised)}.header-menu__panel button>span{display:grid;gap:2px}.header-menu__panel .pixel-icon{color:var(--mint)}.header-menu__panel strong{font-size:14px}.header-menu__panel small{color:var(--ink-muted);font-size:11px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:46px;padding:12px 20px;border:1px solid var(--line-strong);background:var(--surface-raised);font-size:13px;font-weight:600;line-height:1.2;box-shadow:0 3px 0 var(--pixel-dark);transition:background .12s,transform .12s,box-shadow .12s}.button:not(:disabled):hover{background:#334734;border-color:var(--mint)}.button:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px 0 var(--pixel-dark)}.button--primary{color:#233020;border:1px solid #daedb4;background:var(--mint);box-shadow:inset 0 -3px #8ba45c,0 4px #0b170e}.button--primary:not(:disabled):hover{color:#172515;background:#d0e3a7}.button--large{min-height:54px;padding:15px 25px;font-size:15px}.button--secondary{background:#28392b;color:var(--mint-bright)}.button--ghost{background:transparent}.button__key{display:grid;place-items:center;width:23px;height:23px;margin-left:16px;border:1px solid #7d9258;font:11px var(--label-font)}.title-page{width:min(calc(100% - 56px),var(--content));margin:auto;padding:28px 0 0}.city-hero{position:relative;isolation:isolate;min-height:472px;overflow:hidden;border:1px solid #5c6451;background:#24322c}.city-hero__art{position:absolute;z-index:-3;width:100%;height:100%;inset:0;object-fit:cover;object-position:center 20%;image-rendering:pixelated}.city-hero__shade{position:absolute;z-index:-2;inset:0;background:linear-gradient(90deg,#101e1bf2,#101e1bd9 25%,#101e1b77 48%,#101e1b05 76%),linear-gradient(0deg,#101e1bde,transparent 27%)}.city-hero__copy{padding:50px 48px 67px;max-width:600px}.hero-label{display:flex;align-items:center;gap:9px;color:#d9d5bb;font:9px var(--label-font);letter-spacing:.11em}.city-hero h1{font-size:clamp(54px,6vw,82px);line-height:.98;margin:21px 0 20px;letter-spacing:-.045em;text-shadow:3px 4px 0 #101b19}.city-hero h1 em{font-style:normal;color:var(--mint)}.city-hero p{font-size:14px;line-height:1.8;color:#d5dbca;margin:0 0 25px}.title-actions{display:flex;align-items:center;gap:25px}.hero-help{display:flex;align-items:center;gap:9px;padding:10px 0;min-height:44px;color:#e3dfc9;border:0;background:none;font-size:12px;border-bottom:1px solid #939b7966}.hero-help:hover{color:var(--mint-bright);border-color:var(--mint)}.hero-selected{display:block;color:#b4c3aa;font:8px var(--label-font);letter-spacing:.08em;margin-top:16px}.hero-selected>span{padding:0 8px;color:#7e906e}.scene-caption{position:absolute;right:28px;bottom:78px;display:flex;gap:12px;align-items:center;padding:12px 16px;border-left:2px solid #edd6a0;color:#f5dfbb;background:#17221cb8;font:8px/1.7 var(--label-font);letter-spacing:.1em}.scene-caption .pixel-icon{width:22px;height:22px;flex-basis:22px}.scene-caption strong{font:16px var(--pixel-font);letter-spacing:0}.chapter-section{padding-top:34px}.chapter-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.chapter-heading h2{margin:0;font-size:30px}.chapter-heading .eyebrow{font-size:8px;margin-bottom:5px}.chapter-progress{display:flex;gap:9px;align-items:center;color:var(--ink-muted);font-size:11px}.chapter-progress .pixel-icon{color:var(--mint);width:14px;height:14px}.chapter-progress strong{color:var(--ink)}.chapter-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.chapter-card{position:relative;display:flex;flex-direction:column;padding:0;border:1px solid var(--line);background:var(--surface);text-align:left;min-width:0;transition:border-color .15s,transform .15s,background .15s}.chapter-card:hover{border-color:#7a8b63;transform:translateY(-3px);background:#24332a}.chapter-card.is-selected{border-color:var(--mint);box-shadow:inset 0 0 0 1px var(--mint),0 3px #0c170f}.chapter-card.is-selected:before{content:"";position:absolute;z-index:2;width:8px;height:8px;background:var(--mint);left:-1px;top:-1px;box-shadow:0 0 0 3px var(--page)}.chapter-card__picture{position:relative;height:132px;overflow:hidden;margin:7px 7px 0;border-bottom:1px solid #41523d;background:#354c38}.chapter-map{width:100%;height:100%;object-fit:cover;--map-ground: #526247;--map-tree: #344f35;--map-leaf: #78915a;--map-wall: #b3a282;--map-roof: #956c54;--map-window: #e6d097}.chapter-map--2{--map-ground: #57685b;--map-tree: #305641;--map-leaf: #648960;--map-wall: #aeae8f;--map-roof: #778580;--map-window: #e8d7aa}.chapter-map--3{--map-ground: #2c3e3a;--map-tree: #1e4438;--map-leaf: #486654;--map-wall: #666d66;--map-roof: #53596a;--map-window: #dfb66e}.chapter-number{position:absolute;left:9px;top:9px;display:grid;width:31px;height:31px;place-items:center;background:#15241ee6;border:1px solid #7c8e6c;color:#e1e9cd;font:21px var(--pixel-font)}.chapter-time{position:absolute;display:flex;align-items:center;gap:6px;right:8px;bottom:8px;padding:5px 7px;background:#14221de8;color:#e5d59e;font:7px var(--label-font);letter-spacing:.08em}.chapter-time .pixel-icon{width:10px;height:10px;flex-basis:10px}.chapter-time.is-night{color:#c5bddf}.chapter-card__body{padding:15px 18px 13px;flex:1;display:flex;flex-direction:column}.chapter-card__label{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px;font:8px var(--label-font);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted)}.chapter-select-mark{display:flex;gap:6px;align-items:center;color:var(--ink-muted)}.chapter-select-mark .pixel-icon{width:10px;height:10px;flex-basis:10px}.is-selected .chapter-select-mark{color:var(--mint)}.chapter-card h3{margin:0 0 5px;font-size:clamp(20px,2vw,25px);letter-spacing:-.03em}.chapter-card p{display:flex;flex-wrap:wrap;gap:6px;color:var(--ink-muted);margin:0 0 16px;font-size:10px}.chapter-card__record{display:flex;justify-content:space-between;gap:10px;margin-top:auto;border-top:1px solid var(--line);padding-top:11px;color:#a5b29b;font:7px var(--label-font);letter-spacing:.08em}.chapter-card__record .is-cleared{color:var(--mint-bright)}.mission-panel{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:32px;align-items:center;margin-top:22px;padding:25px 28px;border:1px solid var(--line);border-left:3px solid #849a62;background:#1b2b23}.mission-copy .eyebrow{font-size:8px}.mission-copy h2{font-size:25px;margin-bottom:7px}.mission-copy p{max-width:490px;font-size:12px;color:var(--ink-soft);margin:0}.mission-facts{display:grid;gap:15px}.mission-facts>div{display:flex;gap:10px;align-items:center}.mission-facts .pixel-icon{color:var(--ink-muted)}.mission-facts span{display:grid;gap:2px;color:var(--ink-muted);font:8px var(--label-font);letter-spacing:.08em}.mission-facts strong{font:17px var(--pixel-font);color:var(--ink);letter-spacing:0}.mission-facts small{color:var(--ink-soft);font:10px DM Sans,sans-serif}.forecast-details{margin-top:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.forecast-details summary{display:flex;align-items:center;justify-content:space-between;list-style:none;padding:18px 2px;color:var(--ink-soft);font-size:12px}.forecast-details summary::-webkit-details-marker{display:none}.forecast-details summary>span:first-child{display:flex;gap:10px;align-items:center}.forecast-details summary:hover{color:var(--mint)}.disclosure-mark{font:22px var(--pixel-font);transition:transform .15s}.forecast-details[open] .disclosure-mark{transform:rotate(45deg)}.forecast-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px;padding-bottom:18px}.demand-card,.baseline-card,.editor-card,.comparison-card,.baseline-results-card{background:var(--surface);border:1px solid var(--line);padding:24px;box-shadow:none}.section-heading{display:flex;justify-content:space-between;align-items:start;gap:14px;margin-bottom:22px}.section-heading h2{font-size:27px}.section-heading p{margin:5px 0 0;color:var(--ink-muted);font-size:13px}.unit-label,.period-counter{flex-shrink:0;color:var(--ink-muted);font:9px var(--label-font);padding:6px 8px;border:1px solid var(--line)}.demand-chart svg{width:100%;height:auto;overflow:visible}.chart-grid,.chart-axis{stroke:#a4b59d;stroke-opacity:.12}.chart-label,.chart-time{fill:#b0bfaa;font:11px var(--label-font)}.chart-legend{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-top:8px}.chart-legend span{display:flex;align-items:center;gap:6px;color:var(--ink-soft);font-size:11px}.chart-legend i{width:12px;height:3px}.phase-balance{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.phase-balance>div{display:grid;flex:1;gap:6px;min-width:100px;padding:14px;background:var(--surface-raised);border:1px solid var(--line-strong)}.phase-balance span{color:var(--ink-soft);font-size:11px}.phase-balance strong{color:var(--mint);font:27px var(--pixel-font)}.phase-balance small{font:12px DM Sans,sans-serif}.title-footer{display:flex;gap:18px;justify-content:space-between;align-items:center;padding:22px 0 30px;font-size:10px;color:var(--ink-muted)}.title-footer>span,.title-footer button{display:flex;gap:8px;align-items:center}.title-footer .pixel-icon{width:12px;height:12px;flex-basis:12px}.title-footer button{min-height:44px;background:none;border:0;color:var(--ink-soft);font-size:10px;padding:0}.title-footer button:hover{color:var(--mint)}.session-bar{width:min(calc(100% - 56px),var(--content));display:flex;gap:22px;align-items:center;margin:auto;height:54px;border-bottom:1px solid var(--line)}.session-bar>button{min-height:44px;padding:0;border:0;background:none;font-size:12px;color:var(--ink-soft)}.session-bar>button>span{padding-right:8px;color:var(--mint)}.session-bar__chapter{font-size:11px;color:var(--ink-muted);border-left:1px solid var(--line);padding-left:20px}.session-steps{display:flex;gap:16px;margin-left:auto;font:9px var(--label-font);color:var(--ink-muted)}.session-steps i{font-style:normal}.session-steps .is-current{color:var(--mint)}.editor-page,.results-page,.map-import-page{width:min(calc(100% - 56px),var(--content));margin:auto;padding:30px 0 50px}.editor-page__intro{align-items:center;margin-bottom:24px;gap:20px}.editor-page__intro h1{font-size:clamp(32px,4vw,47px);margin:0}.editor-page__intro p{max-width:310px;font-size:13px;color:var(--ink-muted);margin:0}.editor-card{min-width:0}.schedule-period{background:var(--page);border-color:var(--line-strong)}.schedule-period__header{background:#25362a}.duration-control{background:var(--surface);border-color:var(--line)}.duration-control--focused{border-color:var(--mint);box-shadow:0 0 0 1px var(--mint)}.duration-stepper button{width:48px;min-height:48px;background:#304431;border-color:#667b54;color:var(--mint-bright)}.duration-stepper__input input{font:36px var(--pixel-font)}.duration-stepper__input{background:var(--page-deep);border-color:var(--line-strong)}.duration-control__heading{font-size:14px}.timing-help{border-color:#85714966;background:#d9b87508}.timing-help__icon{border-radius:0}.timing-help p{font-size:12px}.period-counter{white-space:nowrap}.editor-actions{flex-wrap:wrap;gap:16px}.editor-actions>.button--primary{flex:1}.editor-actions__secondary{flex-wrap:wrap}.editor-actions .button{font-size:12px}.duration-grid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr))}.game-page{width:min(calc(100% - 56px),var(--content));margin:auto;padding:18px 0 24px}.game-page__heading{align-items:center;gap:16px;margin:0 0 15px}.game-page__heading h1{font-size:29px;margin:0}.game-page__heading .eyebrow{font-size:8px;margin-bottom:2px}.game-page__heading p{font-size:11px;margin:0}.game-page__heading-actions{display:flex;gap:15px;align-items:center}.game-page__layout-button{padding:8px 12px;min-height:44px;border:1px solid var(--line-strong);background:var(--surface);font-size:11px}.game-page__layout-button.is-active{background:var(--mint);color:var(--page)}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:16px;align-items:stretch}.game-stage{position:relative;min-width:0;border:1px solid #758162;background:#243d2d;display:flex;flex-direction:column}.game-canvas-shell{position:relative;min-width:0;flex:1}.game-canvas-host{width:100%;height:100%;min-height:0;aspect-ratio:900 / 680;touch-action:none;overflow:hidden}.game-canvas-host canvas{display:block;image-rendering:pixelated;touch-action:none}.game-zoom-controls{position:absolute;z-index:65;left:12px;bottom:12px;display:flex;align-items:center;gap:3px;padding:4px;background:#13261fee;border:1px solid #708261;box-shadow:3px 3px #10201888}.game-zoom-controls button,.game-zoom-controls output{display:grid;place-items:center;min-width:42px;height:42px;padding:0;background:#263b2e;color:var(--ink);border:0;font:22px var(--pixel-font)}.game-zoom-controls output{min-width:51px;color:var(--mint);font-size:16px;background:transparent}.game-zoom-controls button:not(:disabled):hover{background:#435938}.game-sidebar{display:flex;flex-direction:column;gap:14px;min-width:0}.live-panel,.active-plan-card{border:1px solid var(--line-strong);background:var(--surface)}.live-panel{padding:18px;flex:1}.live-panel__heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:17px}.live-panel__heading>div{display:flex;gap:7px;align-items:center;font:9px var(--label-font);letter-spacing:.08em}.live-panel__heading>strong{font:28px var(--pixel-font);color:var(--amber)}.live-dot{width:6px;height:6px;background:var(--mint)}.live-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 8px}.live-stat-grid>div{display:grid;align-content:start;gap:4px}.live-stat-grid span{color:var(--ink-muted);font-size:10px}.live-stat-grid strong{font:32px var(--pixel-font)}.live-stat-grid__wide{grid-column:1 / -1}.live-stat-grid__wide strong{color:var(--amber);font-size:28px}.queue-list{display:grid;gap:11px;padding-top:17px;margin-top:17px;border-top:1px solid var(--line)}.queue-list>div{display:grid;grid-template-columns:80px 1fr 23px;gap:8px;align-items:center}.queue-list span{font-size:10px;color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-list strong{font:11px var(--label-font);text-align:right}.queue-track{height:5px;background:#111f19}.queue-track i{display:block;height:100%}.active-plan-card{padding:17px}.active-plan-card .eyebrow{font-size:8px}.active-plan-card__stage,.active-plan-card>div{display:flex;width:100%;justify-content:space-between;gap:10px;align-items:center;min-height:47px;padding:9px 0;background:none;text-align:left;border:0;border-bottom:1px solid var(--line);font-size:12px}.active-plan-card__stage:hover{color:var(--mint)}.active-plan-card__value{display:flex;gap:10px;align-items:center}.active-plan-card__value strong{font:20px var(--pixel-font);color:var(--mint);white-space:nowrap}.active-plan-card__value small{border:1px solid var(--line-strong);padding:4px 7px;color:var(--ink-soft);font-size:9px}.active-plan-card p{color:var(--amber);font-size:11px;margin:10px 0 0}.landscape-hint{margin:0;min-height:28px;padding:6px 12px;font-size:9px;color:#b8c9a8;background:#1c3024;border-top:1px solid #6f816244}.game-loading{position:absolute;z-index:66;inset:0;display:grid;place-items:center;background:var(--page);font:24px var(--pixel-font);color:var(--mint)}.game-code-loading{display:grid;min-height:60vh;place-content:center;justify-items:center;gap:20px;color:var(--mint);font:24px var(--pixel-font)}.game-code-loading__signal{display:flex;gap:6px}.game-code-loading__signal i{height:12px;width:12px;background:var(--mint);animation:signal-pulse 1s steps(2) infinite}.game-code-loading__signal i:nth-child(2){animation-delay:.15s;background:var(--amber)}.game-code-loading__signal i:nth-child(3){animation-delay:.3s;background:var(--coral)}.game-finish-overlay{position:absolute;z-index:80;inset:0;display:grid;place-items:center;padding:20px;background:#0c1b15cf}.game-finish-panel{padding:30px;width:min(100%,330px);border:1px solid var(--mint);background:var(--surface);text-align:center;box-shadow:var(--shadow)}.game-finish-panel>strong{font:28px var(--pixel-font)}.game-finish-panel .eyebrow{justify-content:center}.game-finish-panel output{color:var(--mint);font:23px var(--pixel-font)}.game-finish-progress{height:14px;border:1px solid var(--line-strong);background:var(--page-deep);padding:3px;margin:24px 0 10px}.game-finish-progress i{display:block;height:100%;background:var(--mint);transition:width .15s linear}.results-hero{padding:32px;background:#263b2d;border:1px solid var(--line-strong);box-shadow:none}.results-hero h1{font-size:clamp(32px,4vw,49px)}.results-hero p{color:var(--ink-soft);font-size:14px}.results-hero--success{background:#2b3f2d;border-color:var(--mint)}.score-ring{width:115px;height:115px;border:4px double #9ba97c;border-radius:0;background:var(--page-deep);box-shadow:5px 5px #0c190e}.score-ring:before{display:none}.score-ring strong{font:58px var(--pixel-font);color:var(--mint-bright)}.score-display{gap:20px}.score-display>div:last-child>strong{font:25px var(--pixel-font);color:var(--mint)}.score-display>div:last-child>span{color:var(--ink-muted);font-size:11px}.baseline-metric-grid{gap:0;border:1px solid var(--line)}.baseline-metric-grid>div{padding:20px;border:1px solid var(--line);background:transparent}.baseline-metric-grid strong{font:29px var(--pixel-font)}.challenge-card{background:var(--surface);border:1px solid var(--line-strong);box-shadow:none}.challenge-card__icon{border-radius:0;background:#3d5133;color:var(--mint)}.challenge-card h2{font-size:26px}.challenge-card p{color:var(--ink-soft);font-size:12px}.results-table__header{background:var(--page-deep);color:var(--ink-muted);font-size:11px}.results-table__row{font-size:12px}.results-table__row:nth-child(odd){background:#ffffff03}.saved-notice{color:var(--mint);font-size:12px}.difference--good{color:var(--mint)}.difference--bad{color:var(--coral)}.status-pill{display:inline-flex;align-items:center;gap:5px;font:9px var(--label-font);padding:7px 10px;border:1px solid var(--line-strong);border-radius:0;white-space:nowrap}.status-pill--success{color:var(--mint);background:#adc9810b}.status-pill--warning{color:var(--amber);background:#efc0780b}.app-dialog{width:min(calc(100% - 32px),540px);max-height:calc(100dvh - 40px);margin:auto;padding:35px;color:var(--ink);background:var(--surface);border:2px solid #83926c;box-shadow:0 0 0 4px var(--page-deep),8px 8px #07120980;overflow:auto}.app-dialog::backdrop{background:#07130dcc;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.app-dialog[open]{animation:dialog-in .16s ease-out}.app-dialog h2{font-size:34px;margin:0 25px 12px 0}.app-dialog>p{font-size:13px;color:var(--ink-soft)}.dialog-close{position:absolute;top:12px;right:12px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--ink-muted)}.dialog-close:hover{color:var(--ink);background:var(--surface-raised)}.dialog-emblem{margin-bottom:23px}.help-steps{display:grid;gap:21px;margin:28px 0;padding:0;list-style:none}.help-steps li{display:flex;gap:15px}.help-steps li>span{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border:1px solid #718554;color:var(--mint);background:#2c3d2a;font:21px var(--pixel-font)}.help-steps strong{font-size:14px}.help-steps p{margin:4px 0 0;color:var(--ink-muted);font-size:12px;line-height:1.6}.key-guide{display:flex;flex-wrap:wrap;gap:12px;padding:14px 0;border-block:1px solid var(--line);margin:20px 0}.key-guide>span{display:flex;gap:5px;align-items:center;font-size:10px;color:var(--ink-soft)}kbd{display:inline-grid;place-items:center;padding:2px 5px;border:1px solid var(--line-strong);box-shadow:0 2px 0 var(--pixel-dark);font:8px/1.5 var(--label-font);background:var(--page-deep)}.app-dialog .dialog-note{color:var(--ink-muted);font-size:11px;margin:20px 0}.app-dialog>.button{width:100%}.setting-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:21px 0;border-bottom:1px solid var(--line)}.setting-row>span{display:grid;gap:5px}.setting-row strong{font-size:14px}.setting-row small{color:var(--ink-muted);font-size:11px}.setting-row input{appearance:none;position:relative;width:46px;height:28px;flex:0 0 46px;margin:0;border:1px solid var(--line-strong);background:#0f2017;cursor:pointer}.setting-row input:before{content:"";position:absolute;top:4px;left:4px;width:18px;height:18px;background:#7b8a70;transition:transform .13s}.setting-row input:checked{border-color:var(--mint);background:#405732}.setting-row input:checked:before{transform:translate(18px);background:var(--mint-bright)}.signal-pause-dialog__actions{display:flex;gap:12px;margin-top:25px}.signal-pause-dialog__actions .button{flex:1}.signal-pause-dialog__note{color:var(--amber)!important}.signal-map-editor__panel{border:1px solid var(--line-strong);background:#1b2b24f5;box-shadow:none}.signal-map-editor__panel button,.signal-map-editor__panel select{min-height:40px;font-size:11px}.signal-map-editor__panel .is-primary{background:var(--mint);color:#15200f}.map-import-hero h1{font-size:clamp(34px,4vw,50px)}.map-import-hero p{font-size:14px}.map-import-controls,.map-import-preview-card,.map-package-card{background:var(--surface);border-color:var(--line);box-shadow:none}.map-import-controls input{color:var(--ink);background:var(--page);border-color:var(--line-strong)}.map-preview{background:#1a2a23;border-color:var(--line)}.page-enter{animation:page-in .2s ease-out}@keyframes page-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translateY(6px)}}@keyframes signal-pulse{50%{opacity:.25}}@media(min-width:1050px){.editor-page{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:24px;align-items:start}.editor-page__intro{grid-column:1 / -1;margin-bottom:0}.editor-page>.demand-card{position:sticky;top:24px}.editor-page>.demand-card .section-heading{display:block}.editor-page>.demand-card .unit-label{display:inline-block;margin-top:6px}.editor-card .section-heading{flex-wrap:wrap}}@media(min-width:901px){.game-page--simulation{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:calc(100dvh - var(--header-height) - 54px);min-height:540px}.game-layout,.game-stage{min-height:0}.game-canvas-host{position:absolute;inset:0}.game-sidebar{overflow-y:auto}.signal-map-editor-panel-host{height:100%}}@media(max-width:1100px){.app-header,.main-nav,.mission-panel{gap:20px}.mission-panel .button,.chapter-card__body{padding-inline:14px}}@media(max-width:900px){:root{--header-height: 72px}.main-nav{gap:16px}.main-nav button{font-size:11px}.main-nav .pixel-icon{display:none}.brand strong{font-size:28px}.brand small{font-size:6px}.city-hero__copy{padding-left:32px}.city-hero{min-height:457px}.city-hero h1{font-size:65px}.scene-caption{display:none}.chapter-list{gap:12px}.chapter-card__picture{height:112px}.chapter-card h3{font-size:21px}.chapter-card__record{font-size:6px}.chapter-card p{font-size:9px}.mission-panel{grid-template-columns:1fr auto;padding:22px}.mission-panel>.button{grid-column:1 / -1}.mission-facts{padding-left:15px;border-left:1px solid var(--line)}.game-layout{grid-template-columns:1fr}.game-canvas-host{height:auto}.game-sidebar{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start}.game-page__heading p{display:none}.game-sidebar:has(.signal-map-editor-panel-host){display:block}.signal-map-editor-panel-host{position:static;max-height:none}.signal-map-editor__panel{max-height:340px}.forecast-grid{grid-template-columns:1fr}.editor-page__intro{display:block}.editor-page__intro p{margin-top:10px;max-width:none}.results-hero{display:grid;gap:30px}.score-display{justify-content:start}.map-import-workspace{grid-template-columns:1fr}.map-import-hero{display:block}.map-import-hero>.button{margin-top:20px}}@media(max-width:650px){:root{--header-height: 68px}.app-header{padding-inline:20px;gap:14px}.brand{gap:11px}.brand strong{font-size:28px}.brand small{font-size:5.8px;letter-spacing:.08em}.traffic-mark{width:22px;height:39px;gap:3px}.traffic-mark i{height:6px;width:6px}.main-nav,.settings-trigger{display:none}.header-menu{display:block}.header-icon,.header-menu__trigger{width:44px;min-height:44px}.title-page{width:calc(100% - 32px);padding-top:16px}.city-hero{min-height:468px}.city-hero__art{object-position:64% center}.city-hero__shade{background:linear-gradient(90deg,#101e1bd9,#101e1b25),linear-gradient(0deg,#101e1bf5,#101e1b3d 70%)}.city-hero__copy{max-width:none;padding:41px 25px 63px}.hero-label{font-size:7px;letter-spacing:.04em}.city-hero h1{font-size:clamp(55px,12vw,70px);margin:28px 0 19px}.city-hero p{font-size:13px;margin-bottom:27px}.title-actions{gap:18px;align-items:stretch}.title-actions>.button{padding-inline:17px;font-size:14px}.button__key{margin-left:7px;width:20px}.hero-help{font-size:11px;gap:7px}.hero-help .pixel-icon{width:13px;height:13px;flex-basis:13px}.hero-selected{font-size:6.5px;margin-top:18px}.chapter-section{padding-top:28px}.chapter-heading{margin-bottom:17px}.chapter-heading h2{font-size:28px}.chapter-progress{font-size:10px;gap:6px}.chapter-progress .pixel-icon{width:12px;height:12px;flex-basis:12px}.chapter-list{grid-template-columns:1fr;gap:12px}.chapter-card{display:grid;grid-template-columns:107px minmax(0,1fr);min-height:135px}.chapter-card__picture{height:auto;margin:7px 0 7px 7px;border:0}.chapter-map{position:absolute;width:180px;max-width:none;height:100%;left:50%;transform:translate(-50%)}.chapter-number{width:25px;height:25px;font-size:18px;top:7px;left:7px}.chapter-time{left:0;right:0;bottom:4px;padding:4px 0;justify-content:center;font-size:5.5px;gap:4px}.chapter-card__body{padding:13px 13px 12px}.chapter-card__label{font-size:7px;margin-bottom:8px}.chapter-select-mark{font-size:6px;gap:3px}.chapter-card h3{font-size:23px;margin-bottom:4px}.chapter-card p{font-size:9px;margin-bottom:11px;gap:4px}.chapter-card__record{font-size:6px;padding-top:9px;gap:6px}.mission-panel{grid-template-columns:1fr;gap:21px;padding:21px}.mission-copy h2{font-size:29px}.mission-facts{grid-template-columns:1fr 1fr;gap:12px;padding:17px 0 0;border-left:0;border-top:1px solid var(--line)}.mission-panel>.button{width:100%}.title-footer{display:grid;gap:7px;padding-top:20px;font-size:10px}.title-footer>span{justify-content:center}.title-footer button{justify-content:center}.forecast-details summary{font-size:11px}.demand-card,.baseline-card,.editor-card,.comparison-card,.baseline-results-card{padding:19px}.section-heading{gap:12px;flex-wrap:wrap}.section-heading h2{font-size:26px}.session-bar{width:calc(100% - 32px);height:49px;gap:10px}.session-bar__chapter{display:none}.session-bar>button{font-size:11px}.session-steps{font-size:7px;gap:8px}.editor-page,.results-page,.map-import-page{width:calc(100% - 32px);padding-top:23px}.editor-page__intro h1{font-size:36px}.editor-page__intro p{font-size:12px}.editor-page>.demand-card{margin-bottom:16px}.editor-card{padding:16px}.duration-grid{grid-template-columns:1fr;padding:10px}.duration-control{padding:14px}.duration-control__heading strong{font-size:14px}.duration-stepper{grid-template-columns:48px minmax(0,1fr) 48px}.schedule-period__header{padding:12px;gap:10px}.schedule-period__header h3{font-size:22px}.schedule-period__summary{gap:3px 8px}.schedule-period__header span,.schedule-period__summary span{font-size:9px}.schedule-period__time{padding:10px 12px;gap:10px}.schedule-period__time div,.schedule-period__time label{gap:8px}.schedule-period__time span,.schedule-period__time small{font-size:9px}.schedule-period__time input{width:104px;padding-inline:6px}.editor-actions{margin-top:18px;padding-top:18px;display:grid}.editor-actions__secondary{display:grid;grid-template-columns:1fr 1fr}.editor-actions__secondary .button{font-size:10px;padding:10px}.editor-actions>.button--primary{width:100%}.game-page{width:calc(100% - 24px);padding-top:14px}.game-page__heading{margin-bottom:12px}.game-page__heading h1{font-size:25px}.game-page__layout-button{padding-inline:10px;font-size:10px}.game-zoom-controls{bottom:8px;left:8px;gap:2px;padding:3px}.game-canvas-host{aspect-ratio:1.1}.game-sidebar{grid-template-columns:1fr;gap:12px}.live-panel{padding:16px}.live-panel__heading{margin-bottom:13px;padding-bottom:10px}.live-stat-grid{grid-template-columns:1fr 1fr 1fr;gap:10px}.live-stat-grid__wide{grid-column:auto}.live-stat-grid span{font-size:9px}.live-stat-grid strong,.live-stat-grid__wide strong{font-size:27px}.queue-list{grid-template-columns:1fr 1fr;gap:10px 18px}.queue-list>div{grid-template-columns:52px 1fr 18px;gap:6px}.queue-list span{font-size:9px}.active-plan-card{padding:14px 16px}.active-plan-card__stage{min-height:46px}.landscape-hint{font-size:8px}.results-hero{padding:24px}.results-hero h1{font-size:35px}.results-hero p{font-size:12px}.baseline-metric-grid{grid-template-columns:1fr 1fr}.baseline-metric-grid>div{padding:14px}.baseline-metric-grid span{font-size:10px}.baseline-metric-grid strong{font-size:24px}.challenge-card{grid-template-columns:auto 1fr;gap:15px;padding:20px}.challenge-card>.button{grid-column:1 / -1}.results-table{overflow-x:auto}.results-table__header,.results-table__row{min-width:550px;gap:8px}.direction-result{display:grid;gap:5px;font-size:11px}.results-actions{display:grid;grid-template-columns:1fr}.app-dialog{padding:27px 23px;max-height:calc(100dvh - 28px)}.app-dialog h2{font-size:30px}.help-steps{gap:19px;margin:22px 0}.signal-pause-dialog__actions{flex-direction:column}.map-coordinate-grid,.map-source-actions{grid-template-columns:1fr}.map-coordinate-grid label:last-child{grid-column:auto}.map-preview-heading,.map-package-heading{display:grid}.map-preview svg{height:280px}.map-preview figcaption{flex-wrap:wrap;gap:10px}.map-stat-grid{grid-template-columns:1fr 1fr}.map-stat-grid div{border:1px solid var(--line)}.map-review-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.map-review-summary div{display:grid}.map-import-controls,.map-import-preview-card,.map-package-card{padding:18px}.signal-map-editor-panel-host{position:static;max-height:none}.signal-map-editor__panel{max-height:340px}.signal-map-editor__panel button,.signal-map-editor__panel select{min-height:44px}}@media(max-width:370px){.app-header{padding-inline:14px}.brand small{display:none}.city-hero__copy{padding-inline:20px}.city-hero h1{font-size:55px}.title-actions{gap:11px}.title-actions .button{padding-inline:13px}.hero-help .pixel-icon{display:none}.hero-label{font-size:6px}.chapter-card{grid-template-columns:89px minmax(0,1fr)}.chapter-card__body{padding-inline:11px}.chapter-card h3{font-size:21px}.chapter-heading h2{font-size:25px}.mission-facts{grid-template-columns:1fr}.queue-list{gap:10px}}@media(prefers-reduced-motion:reduce){html:not([data-reduce-motion=false]) *,html:not([data-reduce-motion=false]) *:before,html:not([data-reduce-motion=false]) *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}html[data-reduce-motion=true] *,html[data-reduce-motion=true] *:before,html[data-reduce-motion=true] *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.map-status{position:absolute;z-index:61;top:12px;left:12px;right:12px;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:36px;padding:10px 12px;border:1px solid #8c9c7277;color:var(--ink-soft);background:#182b21ed;pointer-events:none}.map-status>span{display:flex;gap:7px;align-items:center;font:8px var(--label-font);letter-spacing:.08em}.map-status i{width:5px;height:5px;background:var(--mint)}.map-status i.is-paused{background:var(--amber)}.map-status strong{color:var(--mint-bright);font:10px var(--label-font);text-transform:uppercase}.map-caption{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:6px 12px;background:#1c3024;border-top:1px solid #6f816244}.map-caption .landscape-hint{padding:0;border:0;min-height:auto}.map-caption a{font-size:8px;color:#b8c9a8}@media(min-width:901px){.live-panel{flex:0;padding:16px}.live-stat-grid{gap:12px 8px}.queue-list{gap:8px;margin-top:12px;padding-top:12px}.live-panel__heading{padding-bottom:10px;margin-bottom:12px}.active-plan-card{padding:14px 16px}}@media(max-width:650px){.map-status{top:8px;left:8px;right:8px;padding:8px;gap:6px;min-height:30px}.map-status>span{font-size:6px;gap:5px}.map-status strong{font-size:7px}.map-caption{padding-inline:8px;gap:7px}.map-caption .landscape-hint{font-size:7px}.map-caption a{font-size:6px;text-align:right}}@media(min-width:901px)and (max-height:850px){.live-stat-grid{grid-template-columns:1fr 1fr 1fr;gap:6px}.live-stat-grid__wide{grid-column:auto}.live-stat-grid span{font-size:9px}.live-stat-grid strong,.live-stat-grid__wide strong{font-size:25px}.queue-list{grid-template-columns:1fr 1fr;gap:9px 14px}.queue-list>div{grid-template-columns:45px 1fr 18px;gap:5px}.queue-list span{font-size:9px}.game-sidebar{gap:12px}}.live-stat-grid strong small{font:11px DM Sans,sans-serif}.signal-map-editor__head-label,.signal-map-editor__direction-label,.signal-map-editor__direction-arrow{pointer-events:none}.mission-actions{display:grid;gap:8px}.chart-legend svg{width:18px;height:8px;flex:0 0 18px}.session-steps.is-hidden{display:none}@media(max-width:900px){.mission-actions{grid-column:1 / -1;grid-template-columns:1fr 1fr}}@media(max-width:650px){.game-page--simulation{display:flex;flex-direction:column}.game-page--simulation .game-page__heading{order:0}.game-page--simulation .game-layout{display:contents}.game-page--simulation .game-stage{order:1}.game-page--simulation .game-sidebar{order:3}.mission-actions{grid-template-columns:1fr}}.home-actions{display:grid;gap:12px;max-width:400px}.home-actions .button{white-space:normal;text-align:left}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:20px}.level-grid .chapter-card{width:100%;min-width:0;text-align:left}.level-grid .chapter-card__picture{height:180px}.level-grid .chapter-card__record{flex-wrap:wrap;gap:8px}.level-grid .chapter-card h3{overflow-wrap:anywhere}.level-group{margin:32px 0 48px}.level-group>section{margin-top:24px}.level-poster{width:100%;height:100%;object-fit:cover;image-rendering:pixelated}.detail-art{height:320px;overflow:hidden;border:2px solid var(--line)}.detail-art>div,.chapter-card__picture>div{height:100%}.detail-art .chapter-map{width:100%;height:100%}.level-details{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:32px}.level-actions{padding:24px;background:var(--surface);border:2px solid var(--line)}.level-actions .button{width:100%}.level-actions p{color:var(--ink-soft);margin:10px 0 24px}.level-facts{display:flex;flex-wrap:wrap;gap:24px}.level-facts dt{color:var(--ink-muted)}.level-facts dd{margin:4px 0;font-weight:600}.editor-title{max-width:var(--content);margin:24px auto;padding:0 20px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--amber);outline-offset:4px}button{min-height:44px}[hidden]{display:none!important}@media(max-width:650px){.level-details{grid-template-columns:1fr}.detail-art{height:220px}.level-actions{padding:16px}.home-actions{max-width:100%}.city-hero:has(.home-actions){min-height:610px}}.level-details .chapter-map,.level-grid .chapter-map{position:static;transform:none;width:100%;max-width:100%}.level-actions .chapter-map{height:180px}.level-grid .chapter-card{display:flex;flex-direction:column}.level-grid .chapter-card__picture{width:calc(100% - 14px);flex-shrink:0;margin:7px}.level-grid .chapter-card__body{width:100%;flex:1}.traffic-map-editor button{min-height:44px}@media(min-width:901px){.level-editor .editor-title{height:80px;margin:12px 0}.level-editor .editor-title h1{font-size:30px;margin:0}.level-editor .editor-title p{margin:4px 0}.level-editor .game-page--simulation:not(.is-map-fullscreen){height:calc(100dvh - var(--header-height) - 158px)}}.level-grid .chapter-card__record{font-size:12px;letter-spacing:0}.level-grid .chapter-card p,.level-grid .eyebrow{font-size:12px}.session-steps{font-size:11px}@media(max-width:650px){.session-steps{display:none}}.signal-direction-map{display:block;width:100%;height:150px;border:1px solid var(--line, #526149);margin:10px 0}.timing-summary{font-size:12px;color:#bac5ad}.traffic-chart-details{margin:0 0 16px}.traffic-chart-details summary,.map-editor-content details>summary{cursor:pointer;padding:10px}.setting-row select{max-width:130px;padding:8px;background:#20332a;color:#f1e8c8;border:1px solid #64765b}@media(max-width:650px){.city-hero:has(.home-actions){min-height:min(760px,calc(100svh - 115px));display:flex;align-items:flex-end}.city-hero__copy{width:100%;padding:22px 18px}.city-hero h1{font-size:clamp(28px,8vw,40px);line-height:1.06;margin:0 0 16px}.city-hero h1 br{display:none}.city-hero__shade{background:linear-gradient(0deg,#102018,#102018e8 20%,#10201800 58%)}.city-hero__art{object-position:55% center}.home-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.home-actions .button{min-width:0;padding:12px 8px;font-size:12px}.home-actions .button--primary{grid-column:1 / -1}.home-actions .hero-help{grid-column:1 / -1;justify-self:center;margin:0}.signal-direction-map{height:125px}}@media(max-width:650px){.home-actions .hero-help:nth-child(3){grid-column:auto;align-self:center}}.editor-page>.traffic-chart-details,.editor-page>.editor-card{grid-column:1 / -1;width:100%;max-width:1000px;justify-self:center}.game-page.is-map-editing .game-layout{grid-template-columns:minmax(0,1fr) 390px}.traffic-map-editor{display:flex;flex-direction:column;height:100%;max-height:100%;min-height:0;overflow:hidden;background:#14291f;color:#edf4df;border:1px solid #74836a;font-family:var(--font-body, sans-serif)}.map-editor-heading{padding:16px 16px 10px;display:flex;align-items:center;justify-content:space-between;gap:12px}.map-editor-heading h2{margin:3px 0 0;font-size:21px;line-height:1.2}.map-editor-heading .eyebrow{color:#a0ba92;font-size:10px;letter-spacing:1.5px}.map-draft-state{color:#d3dabd;font-size:11px;text-align:right}.traffic-map-editor button,.traffic-map-editor input,.traffic-map-editor select,.traffic-map-editor textarea{font:inherit;font-size:13px}.traffic-map-editor button,.map-config-file-button{border:1px solid #667a5c;border-radius:5px;padding:8px 10px;min-height:38px;color:#ecf4dd;background:#233c2c;cursor:pointer}.traffic-map-editor button:hover:not(:disabled){border-color:#b4dba3;background:#334f37}.traffic-map-editor button:disabled{opacity:.4;cursor:default}.traffic-map-editor :is(button,input,select,textarea):focus-visible{outline:2px solid #ffcb55;outline-offset:2px}.traffic-map-editor .is-primary{background:#d6edb7;color:#15291b;border-color:#d6edb7;font-weight:700}.traffic-map-editor .is-danger{color:#ffad9e}.map-button-row{display:flex;flex-wrap:wrap;align-items:center;gap:7px}.map-main-actions{padding:0 12px 8px}.map-main-actions .is-primary{flex:1}.map-history{display:flex;gap:6px;padding:0 12px 10px;align-items:center}.map-history button{min-height:30px;padding:3px 8px;font-size:12px}.map-history small{margin-left:auto;color:#becbb0;font-size:11px}.map-editor-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) 1.25fr;gap:0;border-block:1px solid #58704d;background:#0e2118;padding:3px}.map-editor-tabs button{border:0;border-radius:3px;background:transparent;font-size:12px;color:#c0ccb6}.map-editor-tabs button[aria-selected=true]{background:#cfe5af;color:#102619;font-weight:700}.map-editor-content{padding:12px;overflow:auto;flex:1;min-height:120px;overscroll-behavior:contain;scrollbar-color:#6d825c #162c20}.map-editor-fields{display:grid;gap:12px}.map-help{color:#bdcdb1;font-size:12px;line-height:1.55;margin:0 0 8px}.map-card{display:grid;gap:10px;border:1px solid #4b6545;border-radius:6px;padding:12px;background:#1b3224;min-width:0}.map-card h3{margin:0;color:#f0f1d7;font-size:14px}.traffic-map-editor details{min-width:0}.traffic-map-editor summary{cursor:pointer;color:#e2eccf;font-size:13px;font-weight:600;padding-block:4px}.traffic-map-editor details[open]>summary{margin-bottom:10px}.traffic-map-editor details>:is(.map-field,.map-button-row,.map-card,.map-help){margin-top:10px}.map-field{display:grid;gap:6px;min-width:0;font-size:12px;color:#d3dfc2}.traffic-map-editor input:not([type=checkbox]),.traffic-map-editor select,.traffic-map-editor textarea{display:block;width:100%;min-width:0;padding:8px;min-height:38px;border:1px solid #667a5c;border-radius:4px;background:#102219;color:#f5f6e4;box-sizing:border-box}.traffic-map-editor input[type=color]{padding:3px;min-width:50px}.traffic-map-editor input[type=checkbox]{accent-color:#cfe5af;width:16px;height:16px;flex:0 0 auto;margin:0}.traffic-map-editor input[type=time]{color-scheme:dark}.map-two-fields{display:grid;grid-template-columns:1fr 60px;gap:10px}.map-three-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.map-check,.map-check-list label{display:flex;gap:8px;align-items:center;font-size:12px;color:#d3dfc2;min-height:30px}.map-check-list{display:flex;flex-wrap:wrap;column-gap:14px;row-gap:3px}.map-source-list{display:grid;gap:5px;max-height:220px;overflow:auto}.map-source-code{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;border-radius:50%;color:#102119;font-size:11px;font-weight:800}.map-source-list button{display:flex;gap:9px;align-items:center;text-align:left}.map-source-list button[aria-pressed=true]{border-color:#d0e6b1;background:#324b30}.map-source-list i{width:10px;height:10px;flex:0 0 auto;border-radius:50%}.map-source-list small{margin-left:auto;color:#c6d2b9}.map-mix{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.map-mix label{display:grid;gap:5px;font-size:12px}.map-mix span{display:flex;justify-content:space-between;gap:5px}.map-mix small{color:#b3d196}.map-target{display:grid;gap:9px;padding-bottom:12px;border-bottom:1px solid #49613f}.map-target-title{display:flex;gap:7px;align-items:center}.map-target-title input{flex:1}.map-target-code{font-size:11px;background:#eed184;color:#1a2e20;padding:4px;font-weight:700}.map-demand-chart{display:flex;height:130px;gap:5px;border-bottom:1px solid #677c58}.map-demand-chart button{display:flex;flex-direction:column;align-items:stretch;padding:4px;min-width:0;background:#15271b;border-color:transparent}.map-demand-chart button[aria-pressed=true]{border-color:#e3df8f}.map-demand-bar{display:flex;flex-direction:column-reverse;height:100px;justify-content:flex-start;gap:0}.map-demand-bar i{display:block;flex-shrink:0}.map-demand-chart small{font-size:10px;margin-top:7px}.map-period-total{display:grid;gap:4px;padding:10px 0}.map-period-total strong{font-size:24px;font-variant-numeric:tabular-nums}.map-period-total small,.map-period-total span{font-size:12px;color:#bfcea9;font-weight:400}.map-validation{flex:0 1 auto;max-height:170px;overflow:auto;padding:10px 14px;background:#3a3020;border-top:1px solid #af8856;font-size:12px;color:#ffdfab}.map-validation ul{margin:6px 0 0;padding-left:18px}.map-validation li{margin:5px 0}.map-notice{margin:0;padding:12px;white-space:pre-line;color:#e7ebc4;font-size:12px;background:#304529;border-top:1px solid #7c935e}.traffic-map-editor .signal-map-editor__panel{height:auto;max-height:none;overflow:visible;padding:0;border:none;box-shadow:none;background:transparent;gap:12px}.traffic-map-editor .signal-map-editor__panel button,.traffic-map-editor .signal-map-editor__panel select{font-size:12px}.traffic-map-editor .signal-map-editor__selection{background:#223c2c;border-color:#69835a}.traffic-map-editor .signal-map-editor__panel>p,.traffic-map-editor .signal-map-editor__selection small{color:#c1d1b2}.map-signal-times{margin-top:12px}.map-turn-path{fill:none;stroke-width:3;opacity:.72;pointer-events:none}.map-route-path{fill:none;stroke-width:3;opacity:.58;pointer-events:none;stroke-linejoin:round}.game-page.is-map-editing .signal-map-editor,.game-page.is-map-editing .signal-map-editor__overlay{overflow:hidden}.signal-map-editor__overlay>g:not(.is-approach-selected) :is(.signal-map-editor__head-label,.signal-map-editor__line-label){display:none}.map-overlay-key{position:absolute;top:55px;left:12px;max-width:calc(100% - 24px);display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:6px 8px;background:#10291bea;border:1px solid #92b27c;border-radius:6px;font-size:11px;color:#edf4df}.map-overlay-key strong{max-width:150px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.map-overlay-key span{display:flex;align-items:center;gap:6px;color:#d1e0c1}.map-overlay-key small{color:#c5d2b7;font-size:10px}.source-key,.target-key{display:inline-block;width:9px;height:9px;background:#93d6b0;border-radius:50%}.target-key{background:#f2d282;border-radius:0;transform:rotate(45deg);margin-left:10px}.traffic-source-map .signal-map-editor__overlay>g{opacity:1}.map-source-marker{pointer-events:auto;cursor:pointer}.map-source-marker circle{stroke:#102119;stroke-width:3}.map-source-marker.is-selected circle{stroke:#ffedac;stroke-width:3}.map-source-marker:focus-visible{outline:none}.map-source-marker:focus-visible circle{stroke:#fff;stroke-width:5}.map-source-marker text,.map-target-marker text{font:700 12px sans-serif;fill:#0d231b;pointer-events:none}.map-source-marker .map-marker-caption{fill:#f4f6e4;paint-order:stroke;stroke:#10251b;stroke-width:4;font-size:12px}.map-target-marker path{fill:#f2d282;stroke:#263c2b;stroke-width:2}.map-entry-pick{fill:none;stroke:#d7ec81;stroke-width:13;opacity:.35;pointer-events:stroke;cursor:crosshair}.map-entry-pick:hover,.map-entry-pick:focus-visible{opacity:.85;outline:none}.map-config-import{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin-bottom:20px;font-size:13px}.map-config-file-button{position:relative;display:inline-block;overflow:hidden}.map-config-file-button input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}.map-config-file-button:focus-within{outline:2px solid #ffcb55}@media(max-width:1100px)and (min-width:651px){.game-page.is-map-editing{display:grid;grid-template-rows:auto minmax(0,1fr);height:calc(100dvh - var(--header-height) - 85px);min-height:540px}.game-page.is-map-editing .game-layout{grid-template-columns:minmax(0,1fr) 350px;min-height:0}.game-page.is-map-editing .game-stage{min-height:0}.game-page.is-map-editing .game-canvas-host{position:absolute;inset:0;height:100%;aspect-ratio:auto}.game-page.is-map-editing .game-sidebar{display:block;min-height:0;overflow:hidden}.game-page.is-map-editing .signal-map-editor-panel-host{height:100%;max-height:100%}}@media(max-width:650px){.game-page.is-map-editing .game-layout{display:contents}.game-page.is-map-editing .game-stage{position:sticky;top:0;z-index:60}.game-page.is-map-editing .game-sidebar{margin-top:10px}.game-page.is-map-editing .signal-map-editor-panel-host{max-height:none;overflow:visible}.traffic-map-editor{height:auto;max-height:none}.map-editor-content{overflow:visible}.map-editor-tabs button,.traffic-map-editor button{min-height:42px}.map-editor-heading{padding-top:12px}.map-overlay-key{top:45px;left:6px;padding:6px 8px}.map-overlay-key small{display:none}.map-source-marker .map-marker-caption{font-size:10px}}@media(max-width:650px)and (max-height:500px){.game-page.is-map-editing .game-stage{position:static}}.map-stage-name{display:grid;grid-template-columns:1fr 38px;gap:8px;align-items:end}.signal-map-editor__head .signal-map-editor__head-panel{fill:transparent;stroke-dasharray:3 2}.map-main-actions,.map-history{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 12px 12px}.map-main-actions button,.map-history button{min-height:44px;padding:8px;width:100%}.map-editor-tabs{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px;padding:4px}.traffic-map-editor>.button{margin:0 12px 12px}.map-editor-heading{padding:12px}.map-button-row:not(.map-main-actions){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-shell:has(.game-page--simulation) .app-header{padding-inline:20px}.app-shell:has(.game-page--simulation) .session-bar,.game-page.game-page--simulation{width:calc(100% - 40px);max-width:none}.game-canvas-shell{min-height:0;overflow:hidden}.game-stage{isolation:isolate}.traffic-map-editor .map-editor-tabs button[aria-selected=true]:hover{background:#dceebf;color:#102619}.game-canvas-host canvas{width:100%;height:100%;margin:0}.game-page--simulation .game-sidebar[hidden]{display:none}.game-page--simulation.is-panel-hidden .game-layout{grid-template-columns:minmax(0,1fr)}.map-top-bar{position:absolute;z-index:70;top:10px;left:10px;right:10px;display:flex;align-items:start;justify-content:space-between;gap:8px;pointer-events:none}.map-view-controls{display:flex;gap:4px;pointer-events:auto}.map-view-controls button,.map-overview button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;padding:0 10px;border:1px solid #849873;background:#182b21f5;color:#ecf4dc;font-size:11px;white-space:nowrap}.map-view-controls button:hover,.map-overview button:hover{background:#354d32}.map-route-key{position:absolute;z-index:64;top:64px;right:10px;max-width:calc(100% - 20px);padding:8px 10px;border:1px solid #786e8f;background:#182322eb;color:#e0d8ef;font-size:10px;line-height:1.5;pointer-events:none}.map-route-key strong,.map-route-key span{display:block}.map-route-key i{display:inline-block;width:16px;height:3px;margin-right:6px;background:#d3c3ff;vertical-align:middle}.map-route-key>div+div{border-top:1px solid #786e8f;margin-top:6px;padding-top:6px}.map-view-controls svg,.map-overview button svg{width:16px;height:16px;flex:0 0 16px}.map-overview{position:absolute;z-index:66;right:12px;bottom:12px;width:180px;background:#15291ff5;border:1px solid #849873;box-shadow:3px 3px #10201888}.map-overview:not(.is-open){width:auto}.map-overview button{border:0;width:100%;justify-content:space-between}.map-overview>div[hidden]{display:none}.map-overview__map{display:block;width:calc(100% - 12px);height:108px;margin:0 6px;background:#253a2d;cursor:crosshair;touch-action:none}.map-overview__roads{stroke:#84917c;stroke-width:1;fill:none}.map-overview__view{fill:#cce5a624;stroke:#e0f9ac;stroke-width:2}.map-overview__hint{display:flex;justify-content:space-between;padding:7px 8px;font-size:10px;color:#c5d2b7}.map-overview__hint>span{color:#ecf4dc}.game-zoom-controls{z-index:66}.game-zoom-controls button{min-width:44px;height:44px}.map-overlay-key{top:62px}.game-page--simulation.is-map-fullscreen{position:fixed;z-index:200;inset:0;width:100%;height:100dvh;min-height:0;margin:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:grid;grid-template-rows:minmax(0,1fr);gap:0;background:var(--page);animation:none}.app-shell:has(.is-map-fullscreen)>.app-header,.app-shell:has(.is-map-fullscreen)>.session-bar,.is-map-fullscreen .game-page__heading{display:none}.game-page--simulation.is-map-fullscreen .game-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-height:0;gap:8px}.game-page--simulation.is-map-fullscreen.is-map-editing .game-layout{grid-template-columns:minmax(0,1fr) 390px}.game-page--simulation.is-map-fullscreen.is-panel-hidden .game-layout{grid-template-columns:minmax(0,1fr);gap:0}.game-page--simulation.is-map-fullscreen .game-stage{position:relative;min-height:0;order:0}.game-page--simulation.is-map-fullscreen .game-canvas-host{position:absolute;inset:0;height:100%;aspect-ratio:auto}.game-page--simulation.is-map-fullscreen .game-sidebar{display:block;order:0;margin:0;min-height:0;overflow:auto}.game-page--simulation.is-map-fullscreen .game-sidebar[hidden]{display:none}.is-map-fullscreen .signal-map-editor-panel-host,.is-map-fullscreen .traffic-map-editor{height:100%;max-height:100%;overflow:hidden}.is-map-fullscreen .map-editor-content{overflow-y:auto}@media(max-width:1100px){.map-view-controls button>span{display:none}.map-view-controls button:has(svg){width:44px;padding:0}.map-overview{width:148px}.map-overview__map{height:90px}}@media(min-width:651px)and (max-width:900px){.game-page.is-map-editing:not(.is-panel-hidden) .game-layout{grid-template-columns:minmax(0,1fr) 330px}.game-page.is-map-editing .map-overview.is-open{bottom:76px}.game-page--simulation.is-map-fullscreen.is-map-editing:not(.is-panel-hidden) .game-layout{grid-template-columns:minmax(0,1fr) 330px}}@media(max-width:650px){.app-shell:has(.game-page--simulation) .session-bar,.game-page.game-page--simulation{width:calc(100% - 20px)}.app-shell:has(.game-page--simulation) .app-header{padding-inline:10px}.map-top-bar{top:6px;left:6px;right:6px;gap:4px}.map-overlay-key{top:58px;left:6px;font-size:10px}.map-overview{right:8px;bottom:8px}.map-overview.is-open{bottom:70px;width:140px}.game-zoom-controls{left:6px;gap:0;padding:2px}.game-zoom-controls output{min-width:42px;font-size:14px}.game-page--simulation.is-map-fullscreen{width:100%}.game-page--simulation.is-map-fullscreen .game-layout,.game-page--simulation.is-map-fullscreen.is-map-editing .game-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) minmax(0,46%)}.game-page--simulation.is-map-fullscreen.is-panel-hidden .game-layout{grid-template-rows:minmax(0,1fr)}.is-map-fullscreen .game-sidebar{border-top:1px solid #849873}}@media(max-height:600px){.is-map-fullscreen .traffic-map-editor{overflow-y:auto}.is-map-fullscreen .map-editor-content{flex:0 0 auto;overflow:visible}}.map-playback-controls{display:flex;align-items:center;gap:4px;margin:0;pointer-events:auto;min-width:0}.map-playback-controls button{appearance:none;box-sizing:border-box;border-radius:0;display:flex;align-items:center;justify-content:center;height:44px;width:44px;flex:0 0 44px;min-width:44px;border:1px solid #849873;padding:0;background:#182b21f5;color:#ecf4dc;font-size:13px;line-height:1;cursor:pointer}.map-playback-controls button:hover{background:#354d32}.map-playback-controls .map-speed-button{font-variant-numeric:tabular-nums}.map-playback-controls :focus-visible{outline:1px solid #dceebf;outline-offset:-4px}.map-speed-panel{position:absolute;top:50px;left:0;width:min(260px,calc(100vw - 48px));padding:14px;border:1px solid #849873;background:#182b21;color:#ecf4dc;box-shadow:3px 3px #10201888}.map-speed-panel label,.map-speed-labels{display:flex;justify-content:space-between;font-size:12px}.map-speed-panel input{appearance:auto;width:100%;height:36px;margin:8px 0 0;padding:0;accent-color:#dceebf;background:transparent;border:0;box-shadow:none}.map-speed-panel p{margin:10px 0 0;color:#bdcdb3;font-size:11px}.map-playback-controls svg{width:18px;height:18px}.map-playback-controls .map-pause-button{background:#dceebf;color:#102619}.map-editor-state{display:flex;align-items:center;height:44px;padding:0 10px;border:1px solid #849873;background:#182b21f5;color:#ecf4dc;white-space:nowrap;font-size:11px}.map-actions-panel{position:absolute;top:50px;left:0;width:min(290px,calc(100vw - 44px));overflow-y:auto;padding:6px;background:#182b21;border:1px solid #849873;box-shadow:3px 3px #10201888}.map-actions-panel p{margin:0;padding:8px;color:#c5d2b7;font-size:11px}.map-actions-panel button{width:100%;justify-content:start;border:0;background:transparent;padding:0 10px}.map-route-options{border-block:1px solid #435b42;margin-block:4px;padding-bottom:4px}.map-route-options button{height:auto;min-height:56px;justify-content:space-between;gap:8px;text-align:left}.map-route-options small{display:block;margin-top:5px;color:#bdcdb3;font-size:10px;line-height:1.4}.map-route-options b{flex:0 0 32px;padding:5px 0;border:1px solid #62785d;text-align:center;font-size:10px}.map-route-options [aria-checked=true] b{background:#dceebf;color:#102619}@media(min-width:901px){.game-page.game-page--simulation{grid-template-rows:minmax(0,1fr);padding-block:8px 12px}}@media(min-width:651px)and (max-width:1100px){.game-page--simulation.is-map-editing{grid-template-rows:minmax(0,1fr)}}@media(max-width:650px){.app-shell:has(.game-page--simulation) .session-bar__chapter{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.app-shell:has(.game-page--simulation) .session-steps{display:none}.game-page.game-page--simulation{padding-block:6px 12px}}.game-page.game-page--simulation.is-map-fullscreen{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);grid-template-rows:minmax(0,1fr)}.vehicle-inspector{position:absolute;z-index:65;left:10px;top:64px;width:min(310px,calc(100% - 20px));max-height:calc(100% - 136px);overflow:auto;padding:12px;color:#edf5df;border:1px solid #849873;background:#14271ff5;box-shadow:3px 3px #10201888;font-size:12px}.vehicle-inspector__heading,.vehicle-inspector__footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.vehicle-inspector__heading>div>span{color:#bdcbb1;font-size:10px}.vehicle-inspector h2{margin:4px 0 0;font-size:15px;text-transform:capitalize}.vehicle-inspector h2 small{display:block;margin-top:4px;font-size:10px;font-weight:400;text-transform:none;color:#bdcbb1}.vehicle-inspector button{min-width:44px;min-height:44px;padding:6px;border:1px solid #62785d;background:#263d2c;color:#edf5df;font-size:11px}.vehicle-inspector__heading>button{font-size:22px}.vehicle-inspector button:hover{background:#405b37}.vehicle-inspector__status{padding:8px 0;margin:6px 0;color:#c8f28d;line-height:1.4}.vehicle-inspector dl{margin:0}.vehicle-inspector dl>div{display:grid;grid-template-columns:32px minmax(0,1fr);gap:8px;padding:4px 0}.vehicle-inspector dt{color:#bdcbb1}.vehicle-inspector dd{margin:0;overflow-wrap:anywhere}.vehicle-inspector__numbers{display:flex;flex-wrap:wrap;gap:12px;border-block:1px solid #435b42;padding:10px 0;margin:10px 0;color:#bdcbb1;font-size:10px}.vehicle-inspector__numbers strong{font-size:13px;color:#edf5df;font-variant-numeric:tabular-nums}.vehicle-inspector__footer{font-size:10px}.vehicle-inspector__footer small{display:block;margin-top:5px;color:#bdcbb1}.vehicle-inspector__footer i{display:inline-block;width:14px;height:2px;margin-right:5px;background:#c8f28d;vertical-align:middle}@media(max-width:650px){.vehicle-inspector{position:static;width:100%;flex:0 0 auto;max-height:310px;border-width:1px 0 0;box-shadow:none}.is-map-fullscreen .vehicle-inspector{max-height:36%}}.game-tilt-controls{position:absolute;left:14px;bottom:78px;z-index:65;display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid #b5c5ad66;border-radius:10px;background:#182d2cf0;color:#f2e2bb;box-shadow:0 3px 12px #14272344;font-size:11px}.game-tilt-controls label{display:flex;align-items:center;gap:7px}.game-tilt-controls input{width:82px;accent-color:#e5c37f}.game-tilt-controls button{border:0;background:#344d43;color:#f8e7be;border-radius:5px;padding:7px 9px;font-size:11px;cursor:pointer}.game-tilt-controls button:disabled{opacity:.5;cursor:default}.game-tilt-controls span{color:#aebdae}@media(max-width:650px){.game-tilt-controls{left:8px;bottom:70px;gap:7px;padding:6px}.game-tilt-controls span{display:none}.game-tilt-controls input{width:60px}}.map-overview__bounds{fill:none;stroke:none;pointer-events:none}.game-view-controls{position:relative}.game-view-controls summary{cursor:pointer;padding:10px;list-style:none}.game-view-controls .game-tilt-controls{position:absolute;bottom:48px;left:0;width:240px;flex-wrap:wrap}.game-view-controls .game-tilt-controls input{width:110px}.game-page--simulation:has(.has-live-signal){position:relative}.live-signal-panel{padding:16px;display:grid;gap:12px;background:#14291f;border:1px solid #74836a}.live-signal-panel header,.live-signal-status,.live-signal-phase,.live-signal-range{display:flex;align-items:center;justify-content:space-between;gap:8px}.live-signal-panel h2{margin:0;font-size:21px}.live-signal-panel button,.live-signal-panel select{min-height:44px;padding:8px 12px;border:1px solid #667a5c;border-radius:4px;background:#233c2c;color:#edf4df;font:inherit;cursor:pointer}.live-signal-panel button:disabled{opacity:.4;cursor:default}.live-signal-panel button:focus-visible,.live-signal-panel select:focus-visible,.live-signal-panel input:focus-visible{outline:2px solid #ffcb55;outline-offset:3px}.live-signal-status{font-size:12px}.live-signal-status i{display:inline-block;width:7px;height:7px;margin-right:7px;background:#8edd91;border-radius:50%}.live-signal-status i.is-paused{background:#ffcb55}.live-signal-direction{display:grid;gap:6px;font-size:12px}.live-signal-direction select{width:100%;min-width:0}.live-signal-panel .signal-direction-map{margin:0;height:125px}.live-signal-panel fieldset{padding:0;margin:0;border:0;min-width:0}.live-signal-panel legend{font-size:12px;margin-bottom:8px}.live-signal-step{display:grid;grid-template-columns:52px 1fr 52px;align-items:center;gap:8px;text-align:center}.live-signal-step output{font-size:32px;font-weight:700}.live-signal-step small{font-size:12px;font-weight:400}.live-signal-panel input[type=range]{width:100%;min-height:32px;margin:4px 0 0;accent-color:#cfe5af}.live-signal-range,.live-signal-phase{font-size:12px;color:#c6d6bc}.live-signal-note{font-size:12px;line-height:1.5;margin:0;color:#c6d6bc}.live-signal-notice{min-height:18px;font-size:12px;color:#cfe5af}.live-signal-panel>.button--primary{background:#cfe5af;color:#102619;font-weight:700}.game-sidebar.has-live-signal{display:block}@media(max-width:650px){.game-page--simulation .game-sidebar.has-live-signal{position:static;width:100%;max-height:none;overflow:visible}.game-page--simulation:has(.has-live-signal:not([hidden])) .game-canvas-host{height:clamp(280px,37dvh,360px);aspect-ratio:auto}.live-signal-panel{padding:12px;gap:8px 12px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"heading heading" "status status" "direction direction" "diagram time" "phase time" "note note" "done done"}.live-signal-panel header{grid-area:heading}.live-signal-status{grid-area:status}.live-signal-direction{grid-area:direction}.live-signal-panel .signal-direction-map{grid-area:diagram;height:90px}.live-signal-phase{grid-area:phase}.live-signal-panel fieldset{grid-area:time}.live-signal-note{grid-area:note}.live-signal-panel>.button--primary{grid-area:done}.live-signal-notice{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.live-signal-step{grid-template-columns:44px minmax(0,1fr) 44px;gap:4px}.live-signal-step button{padding-inline:4px}.live-signal-step output{font-size:24px}.live-signal-step small{display:block}.game-page--simulation.is-map-fullscreen:has(.has-live-signal) .game-layout{display:grid;grid-template-rows:minmax(230px,1fr) auto;overflow:auto}}.online-dialog{width:min(560px,calc(100vw - 24px))}.online-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.online-heading h2{margin:0}.online-heading .button{flex-shrink:0}.online-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.online-note{color:var(--ink-muted);font-size:.85rem;line-height:1.5}.online-dialog p{overflow-wrap:anywhere}.online-level{display:grid;gap:8px;margin-top:20px}.online-level select{width:100%;min-width:0;padding:10px;color:var(--ink);background:var(--surface);border:1px solid var(--line)}.online-score-list{padding-left:30px}.online-score-list li{padding:12px 8px;border-bottom:1px solid var(--line)}.online-score-list li span{display:inline-block;width:calc(100% - 85px);overflow-wrap:anywhere;vertical-align:middle}.online-score-list li strong{display:inline-block;width:85px;text-align:right;color:var(--mint-bright)}.online-score-list li small{margin-left:4px;color:var(--ink-muted);font-weight:400}.online-score-list .is-player{background:var(--surface-raised)}.online-result{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding:24px;border:1px solid var(--line);background:var(--surface)}.online-result h2{margin:0;font-size:1.2rem}.online-result p{margin:8px 0}.online-delete{margin-top:18px;padding:14px;border:1px solid var(--danger)}.google-button{min-height:44px;width:100%;margin-top:20px}.online-header-button{background:none;border:1px solid var(--line);color:var(--ink);padding:8px 10px;min-height:44px;white-space:nowrap;font:inherit;cursor:pointer}@media(max-width:900px){.online-header-button{display:none}.header-tools:has(.online-header-button) .header-menu{display:block}}@media(max-width:600px){.online-dialog{padding:18px}.online-heading h2{font-size:1.4rem}.online-result{padding:16px}}
