*{box-sizing:border-box}body{margin:0;background:#dbe5e5;color:#263f43;font:14px/1.5 system-ui,sans-serif}canvas{display:block;width:100%;height:100%}#viewport{position:fixed;inset:0}aside{position:absolute;top:20px;left:20px;width:295px;padding:22px;background:#fffffff0;border-radius:18px;box-shadow:0 8px 35px #20383818}h1{margin:0;font-size:25px}small{font-size:11px;letter-spacing:2px;color:#708b8a;margin-left:10px}#metrics{font-size:21px;font-variant-numeric:tabular-nums;font-weight:650}#details,#status{font-size:12px}label{display:flex;align-items:center;gap:9px;margin:12px 0}select{margin-left:auto;padding:5px;border:1px solid #bdcece;border-radius:6px;background:#fff;color:inherit}input{accent-color:#548c7d}input[type=range]{margin-left:auto;width:118px}output{font-variant-numeric:tabular-nums;font-size:12px;color:#708b8a;min-width:38px;text-align:right}.note{font-size:11px;color:#657b7d;margin-bottom:0}@media(max-width:600px){aside{top:10px;left:10px;width:250px;padding:14px}.note{display:none}}aside{max-height:calc(100dvh - 40px);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.day-controls{margin:14px 0;padding:8px 10px;border:1px solid #bdcece;border-radius:9px}.day-controls legend{padding:0 5px;font-weight:600}.day-controls label{margin:8px 0}.day-controls input[type=time]{margin-left:auto;min-width:0;border:1px solid #bdcece;border-radius:6px;padding:4px;background:#fff;color:inherit;font:inherit}.day-controls select{max-width:140px;font-size:12px}.day-status{font-size:11px;color:#657b7d;margin:8px 0 2px}input:disabled,select:disabled{opacity:.55}@media(max-width:600px){aside{max-height:calc(100dvh - 20px)}}body.clean aside{display:none}#preloader{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:16px;background:#dbe5e5;transition:opacity .6s,visibility 0s .6s}body[data-ready=true] #preloader{opacity:0;visibility:hidden;pointer-events:none}.preloader-card{width:min(320px,100%);text-align:center}.preloader-card h2{margin:0 0 18px;font-size:22px;font-weight:650}.preloader-bar{height:6px;border-radius:3px;background:#bdcece;overflow:hidden}.preloader-bar span{display:block;width:0;height:100%;border-radius:3px;background:#548c7d;transition:width .25s}#preloaderText{margin:12px 0 0;font-size:12px;color:#657b7d;font-variant-numeric:tabular-nums}body[data-ready=error] .preloader-bar span{background:#b5553f}.credit{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));z-index:2;visibility:hidden;font-size:12px;letter-spacing:.02em}body[data-ready=true] .credit{visibility:visible}.credit a{display:inline-block;padding:6px 10px;border:1px solid #ffffff45;border-radius:10px;background:#e9efea85;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#405a52;text-decoration:none;opacity:.7;transition:opacity .18s,background .18s}.credit a:hover,.credit a:focus-visible{opacity:1;background:#edf2eddf}.credit a:focus-visible{outline:2px solid #54806b;outline-offset:2px}.credit strong{font-weight:650}.credit-about{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(max-width:600px){.credit{left:auto;right:max(10px,env(safe-area-inset-right));bottom:auto;top:max(10px,env(safe-area-inset-top))}}@media(prefers-reduced-motion:reduce){.credit a{transition:none}}.map-navigation{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));z-index:2;display:flex;padding:2px;border:1px solid #ffffff45;border-radius:12px;background:#e9efea85;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.65;visibility:hidden;transition:opacity .18s,background .18s}body[data-ready=true] .map-navigation{visibility:visible}.map-navigation:hover,.map-navigation:focus-within{opacity:1;background:#edf2eddf}.map-navigation button{display:grid;place-items:center;width:38px;height:38px;padding:0;touch-action:none;-webkit-user-select:none;user-select:none;border:0;border-radius:8px;background:transparent;color:#405a52;cursor:pointer;transition:background .15s}.map-navigation svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.map-navigation button:hover{background:#547b6812}.map-navigation button:active{background:#547b6825}.map-navigation button:focus-visible{outline:2px solid #54806b;outline-offset:-3px}@media(pointer:coarse){.map-navigation button{width:44px;height:44px}}@media(max-width:600px){.map-navigation{right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom))}}@media(prefers-reduced-motion:reduce){.map-navigation,.map-navigation button{transition:none}}.city-audio{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:calc(max(14px,env(safe-area-inset-bottom)) + 52px);z-index:2;display:flex;align-items:center;gap:2px;padding:2px;border:1px solid #ffffff45;border-radius:12px;background:#e9efea85;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#405a52;opacity:.65;visibility:hidden;transition:opacity .18s,background .18s}body[data-ready=true] .city-audio{visibility:visible}.city-audio:hover,.city-audio:focus-within{opacity:1;background:#edf2eddf}.city-audio.on{opacity:.85}.city-audio button{display:grid;place-items:center;width:38px;height:38px;padding:0;border:0;border-radius:8px;background:transparent;color:inherit;cursor:pointer;transition:background .15s}.city-audio button:hover{background:#547b6812}.city-audio button:focus-visible,.city-audio input:focus-visible{outline:2px solid #54806b;outline-offset:2px}.city-audio svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.city-audio input{width:0;margin:0;opacity:0;accent-color:#54806b;cursor:pointer;transition:width .18s,opacity .18s,margin .18s}.city-audio:hover input,.city-audio:focus-within input{width:96px;margin:0 6px 0 8px;opacity:1}@media(pointer:coarse){.city-audio{bottom:calc(max(14px,env(safe-area-inset-bottom)) + 58px)}.city-audio button{width:44px;height:44px}.city-audio.on input{width:110px;margin:0 6px 0 10px;opacity:1}}@media(max-width:600px){.city-audio{right:max(10px,env(safe-area-inset-right));bottom:calc(max(10px,env(safe-area-inset-bottom)) + 58px)}}@media(prefers-reduced-motion:reduce){.city-audio,.city-audio input,.city-audio button{transition:none}}
