*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0}:root{--ink:#050914;--mist:#d7e0ef;--mist-dim:#d7e0ef9e;--panel:#080e1c70;--line:#b4c8e629;--accent:#e8c99b;--font-display:"Fraunces", Georgia, serif;--font-ui:"Sora", system-ui, sans-serif;--hud-width:16rem;--hud-gap:clamp(1.5rem, 3.5vw, 2.5rem);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;min-height:100%;margin:0}body{font-family:var(--font-ui);background:var(--ink);color:var(--mist);overflow:hidden}button,input,select{font:inherit;color:inherit}.app{height:100%;min-height:100dvh;position:relative;overflow:hidden}.sky-stage{animation:1.2s ease-out both sky-in;position:absolute;inset:0;overflow:hidden}.sky-canvas{cursor:crosshair;touch-action:none;width:100%;height:100%;display:block}.sky-canvas.is-zoomable{cursor:grab}.sky-canvas.is-panning{cursor:grabbing}.zoom-controls{z-index:4;flex-direction:column;gap:.3rem;display:flex;position:absolute;bottom:clamp(2.5rem,6vw,3.5rem);left:clamp(.75rem,2vw,1.25rem)}.zoom-btn{color:#f2f6fc;width:2.1rem;height:2.1rem;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(10px);background:#080e1cc7;border:1px solid #b4c8e659;padding:0;font-size:1.15rem;font-weight:500;line-height:1}.zoom-btn:hover:not(:disabled){color:#fff;border-color:#e8c99ba6}.zoom-btn:disabled{opacity:.35;cursor:default}.zoom-btn.zoom-reset{letter-spacing:.04em;width:auto;min-width:2.1rem;padding:0 .4rem;font-size:.68rem;font-weight:600}.pan-controls{z-index:3;pointer-events:none;position:absolute;inset:0}.pan-btn{pointer-events:auto;color:#f2f6fc;width:2.4rem;height:2.4rem;font:inherit;cursor:pointer;-webkit-backdrop-filter:blur(10px);-webkit-user-select:none;user-select:none;background:#080e1cb8;border:1px solid #b4c8e666;place-items:center;padding:0;font-size:1.55rem;font-weight:500;line-height:1;transition:border-color .15s,background .15s,opacity .15s;display:grid;position:absolute}.pan-btn:hover:not(:disabled){color:#fff;background:#0c1426e0;border-color:#e8c99bb3}.pan-btn:disabled{opacity:.25;cursor:default}.pan-btn:active:not(:disabled){background:#142038eb}.pan-horizontal{pointer-events:none;gap:.3rem;display:flex;position:absolute;top:50%;left:clamp(.5rem,1.5vw,1rem);transform:translateY(-50%)}.pan-horizontal .pan-btn{position:static;transform:none}.pan-up{top:clamp(.5rem,1.5vw,1rem);left:50%;transform:translate(-50%)}.pan-down{bottom:clamp(2.75rem,7vw,4rem);left:50%;transform:translate(-50%)}.hero{padding:clamp(1.25rem,4vw,2.5rem);padding-right:calc(var(--hud-width) + var(--hud-gap));pointer-events:none;z-index:2;animation:.9s ease-out both rise;position:absolute;top:0;left:0;right:0}.hero-top{justify-content:space-between;align-items:flex-start;gap:.75rem 1rem;margin-bottom:.35rem;display:flex}.brand-stack{min-width:0}.funapps-home{pointer-events:auto;font-family:var(--font-body,inherit);letter-spacing:.04em;color:#f4f0e6b8;text-shadow:0 1px 10px #00000059;margin:0 0 .4rem;font-size:.78rem;font-weight:600;text-decoration:none;transition:color .16s;display:inline-block}.funapps-home:hover{color:#f4f0e6}.brand{font-family:var(--font-display);letter-spacing:-.03em;color:#f4f0e6;text-shadow:0 2px 28px #00000073;margin:0;font-size:clamp(2.6rem,7vw,4.5rem);font-weight:600;line-height:.95}.hero-when{text-align:right;text-shadow:0 1px 14px #00000073;flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.15rem;max-width:min(46%,14rem);margin:.15rem 0 0;display:flex}.hero-when-label{letter-spacing:.1em;text-transform:uppercase;color:#d7e0efc7;font-size:.6rem}.hero-when strong{color:#f4f0e6;font-size:clamp(.78rem,1.6vw,.95rem);font-weight:600;line-height:1.25}.hero h1{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;color:var(--mist-dim);max-width:min(100%,36rem);margin:0;font-size:clamp(.95rem,2.2vw,1.15rem);font-weight:500}.hero h1 .place-name{color:var(--accent);font-weight:600}.hero-moon-phase-block{max-width:min(100%,36rem);margin:.45rem 0 0}.hero-moon-phase{flex-wrap:wrap;align-items:center;gap:.35rem .55rem;margin:0;display:flex}.hero-moon-phase-icon{filter:drop-shadow(0 0 6px #dce6f559);flex:none;display:block}.hero-moon-phase-label{letter-spacing:.12em;text-transform:uppercase;color:var(--mist-dim);opacity:.85;font-size:.68rem}.hero-moon-phase strong{color:#f4f0e6;font-size:clamp(.82rem,1.7vw,.98rem);font-weight:600;line-height:1.3}.hero-moon-phase-technical{color:#d7e0efb8;font-weight:500}.hero-moon-phase-note{color:#d7e0ef94;margin:.25rem 0 0;font-size:.72rem;line-height:1.35}.lede{max-width:28rem;color:var(--mist-dim);margin:.75rem 0 0;font-size:.95rem;line-height:1.55}.hud{width:min(100% - 1.5rem, var(--hud-width));z-index:3;overscroll-behavior:contain;flex-direction:column;gap:.4rem;max-height:calc(100dvh - 2*clamp(.75rem,3vw,1.75rem));animation:1s ease-out .15s both rise;display:flex;position:absolute;bottom:clamp(.75rem,3vw,1.75rem);right:clamp(.75rem,3vw,1.75rem);overflow:hidden auto}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);padding:.65rem .7rem}.panel-pinned{z-index:2;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#080e1cf0;margin:-.65rem -.7rem .55rem;padding:.65rem .7rem .55rem;position:sticky;top:0}.panel-pinned .place-header{margin-bottom:.5rem;padding-bottom:.5rem}.panel-pinned .panel-row:last-child{margin-bottom:0}.place-header{border-bottom:1px solid var(--line);margin:0 0 .5rem;padding-bottom:.5rem}.place-kicker{letter-spacing:.1em;text-transform:uppercase;color:#d7e0efb8;margin:0 0 .2rem;font-size:.65rem}.place-title{font-family:var(--font-display);letter-spacing:-.02em;color:#f4f0e6;margin:0;font-size:clamp(1.05rem,2vw,1.25rem);font-weight:600;line-height:1.15}.place-meta{color:var(--mist-dim);flex-wrap:wrap;gap:.25rem .35rem;margin:.4rem 0 0;font-size:.72rem;line-height:1.35;display:flex}.place-meta-sep{opacity:.55}.place-actions{grid-template-columns:1fr 1fr;gap:.35rem;margin-bottom:.5rem;display:grid}.panel-compact .place-actions{margin-top:0}.place-action{text-align:center;width:100%}.place-search{border:1px solid var(--line);background:#080e1c73;margin:0 0 .65rem;padding:.65rem .7rem;animation:.25s both fade}.place-search .panel-row{margin-bottom:.35rem}.place-search .city-results{margin-bottom:0}.place-search-hint{color:#d7e0efc7;margin:0 0 .4rem;font-size:.72rem}.panel-row{align-items:end;gap:.35rem;margin-bottom:.4rem;display:flex}.panel-row:last-of-type{margin-bottom:.25rem}.field{flex-direction:column;flex:1;gap:.2rem;min-width:0;display:flex}.field.grow{flex:1}.field span{letter-spacing:.08em;text-transform:uppercase;color:#d7e0efd1;font-size:.68rem}.field select,.field input{color:#f2f6fc;appearance:none;background:#121a2e;border:1px solid #b4c8e661;border-radius:0;outline:none;width:100%;padding:.4rem .45rem;font-size:.82rem}.field select{background-image:linear-gradient(45deg,#0000 50%,#f2f6fc 50%),linear-gradient(135deg,#f2f6fc 50%,#0000 50%);background-position:calc(100% - 16px) calc(50% - 2px),calc(100% - 11px) calc(50% - 2px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:1.75rem}.field select option{color:#f2f6fc;background-color:#121a2e}.field select:focus,.field input:focus{background-color:#182238;border-color:#e8c99bb3}.btn{background:var(--accent);color:#1a140c;cursor:pointer;border:none;flex-shrink:0;padding:.4rem .55rem;font-size:.74rem;font-weight:600;transition:transform .2s,opacity .2s}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:disabled{opacity:.55;cursor:wait}.btn.ghost{color:var(--mist);border:1px solid var(--line);background:0 0}.motion-row{flex-wrap:wrap;align-items:center;gap:.45rem .65rem}.btn.motion-btn{width:100%}.btn.motion-btn.active{color:var(--accent);background:0 0;border:1px solid #e8c99ba6}.btn.motion-btn.active:hover:not(:disabled){border-color:#e8c99be6;transform:none}.motion-status{letter-spacing:.02em;color:var(--accent);flex:100%;margin:0;font-size:.72rem}.iss-pass-banner{background:#0c1c168c;border:1px solid #5cdc8c73;flex-direction:column;gap:.15rem;margin:0 0 .4rem;padding:.55rem .6rem;display:flex}.iss-pass-banner.is-next{background:#1c160c80;border-color:#e8c99b80}.iss-pass-banner-label{letter-spacing:.1em;text-transform:uppercase;color:#92e6b4e6;font-size:.68rem}.iss-pass-banner.is-next .iss-pass-banner-label{color:#e8c99bf2}.iss-pass-banner-when{letter-spacing:.01em;color:#f2faf5;font-size:.82rem;font-weight:600;line-height:1.3}.coords{color:var(--mist-dim);margin:.1rem 0 0;font-size:.74rem}.current-place{color:var(--mist-dim);margin:-.15rem 0 .45rem;font-size:.78rem}.current-place strong{color:var(--mist);font-weight:600}.sun-times{color:#f2f6fc;letter-spacing:.01em;margin:.2rem 0 0;font-size:.76rem;font-weight:500}.city-results{gap:.3rem;max-height:10.5rem;margin:0 0 .65rem;padding:0;list-style:none;display:grid;overflow:auto}.city-result{text-align:left;color:#f2f6fc;cursor:pointer;width:100%;font:inherit;background:#121a2e;border:1px solid #b4c8e647;flex-direction:row;justify-content:space-between;align-items:center;gap:.65rem;padding:.55rem .65rem;transition:border-color .15s,background .15s;display:flex}.city-result:hover,.city-result:focus-visible{background:#182238;border-color:#e8c99ba6;outline:none}.city-result-text{flex-direction:column;align-items:flex-start;gap:.1rem;min-width:0;display:flex}.city-result-name{font-size:.86rem;font-weight:500}.city-result-detail{color:#d7e0efb8;font-size:.72rem}.city-result-go{letter-spacing:.02em;color:#1a140c;background:var(--accent);flex-shrink:0;padding:.28rem .55rem;font-size:.72rem;font-weight:600}.motion-speed-block{margin-top:-.15rem}.motion-speed-hint{color:#d7e0efb8;margin:.15rem 0 0;font-size:.7rem}.motion-speed-hint.is-error{color:#f0a8a8}.iss-pass-choice{background:#080e1c59;border:1px solid #e8c99b73;margin:0 0 .55rem;padding:.65rem .7rem}.iss-pass-choice-text{color:var(--mist);margin:0 0 .5rem;font-size:.78rem}.iss-pass-choice-actions{gap:.35rem;display:grid}.iss-pass-choice-actions .btn{width:100%}.filter-block{flex-direction:column;gap:.25rem;margin:.1rem 0 .4rem;display:flex}.filter-label{letter-spacing:.08em;text-transform:uppercase;color:#d7e0efd1;font-size:.68rem}.filter-group{grid-template-columns:repeat(2,1fr);gap:.25rem;display:grid}.filter-btn{font:inherit;letter-spacing:.02em;color:#d7e0ef;cursor:pointer;background:#121a2e;border:1px solid #b4c8e647;padding:.35rem .25rem;font-size:.64rem;font-weight:500;transition:background .15s,border-color .15s,color .15s}.filter-btn:hover{border-color:#b4c8e680}.filter-btn.active{color:#1a140c;background:var(--accent);border-color:var(--accent);font-weight:600}.status{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#080e1c57;gap:.15rem;padding:.45rem .55rem;display:grid}.status-line{flex-wrap:wrap;align-items:baseline;gap:.2rem .35rem;min-width:0;margin:0;line-height:1.35;display:flex}.status-sep{color:#d7e0ef73;margin:0 .15rem}.status .label{letter-spacing:.08em;text-transform:uppercase;color:var(--mist-dim);font-size:.62rem}.status strong{font-size:.78rem;font-weight:500}.selection{border-left:2px solid var(--accent);background:#080e1c61;flex-direction:column;gap:.2rem;padding:.75rem 1rem;animation:.35s both fade;display:flex}.selection .kind{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:.65rem}.selection strong{font-family:var(--font-display);font-size:1.25rem;font-weight:600}.selection-facts{gap:.45rem;margin:.55rem 0 0;display:grid}.selection-facts div{gap:.1rem;display:grid}.selection-facts dt{letter-spacing:.08em;text-transform:uppercase;color:var(--mist-dim);font-size:.62rem}.selection-facts dd{color:var(--mist);margin:0;font-size:.84rem}.error{color:#e8a090;margin:0;font-size:.78rem}.hint{z-index:2;letter-spacing:.06em;text-transform:uppercase;color:#b4c8e666;pointer-events:none;margin:0;font-size:.72rem;animation:1.4s .4s both fade;position:absolute;bottom:clamp(1rem,3vw,1.75rem);left:clamp(1rem,3vw,2rem)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes sky-in{0%{opacity:0;filter:brightness(.7)}to{opacity:1;filter:brightness()}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (width<=720px){body{overflow:auto}.app.is-mobile{height:100dvh;min-height:100dvh;padding-bottom:env(safe-area-inset-bottom,0);flex-direction:column;display:flex;overflow:hidden}.app.is-mobile .sky-stage{flex:auto;height:auto;min-height:0;position:relative}.app.is-mobile.controls-open{height:100dvh;min-height:100dvh;overflow:hidden}.zoom-controls{left:max(.75rem, env(safe-area-inset-left,0px));bottom:calc(5.85rem + env(safe-area-inset-bottom,0px))}.zoom-btn{width:2.75rem;height:2.75rem;font-size:1.35rem}.zoom-btn.zoom-reset{min-width:2.75rem;font-size:.72rem}.pan-btn{width:2.75rem;height:2.75rem;font-size:1.55rem}.pan-horizontal{left:max(.45rem, env(safe-area-inset-left,0px))}.pan-up{top:max(.55rem, env(safe-area-inset-top,0px))}.pan-down{bottom:calc(6rem + env(safe-area-inset-bottom,0px))}.hero{padding:max(.85rem, env(safe-area-inset-top,0px)) 1rem .5rem;padding-right:1rem;position:absolute;top:0;left:0;right:0}.hero-top{gap:.5rem;margin-bottom:.1rem}.brand{font-size:clamp(1.7rem,8vw,2.3rem)}.hero-when{max-width:48%;margin-top:.2rem}.hero-when-label{font-size:.55rem}.hero-when strong{font-size:.72rem}.hero h1{max-width:100%;padding-right:0;font-size:.72rem}.lede,.hint{display:none}.mobile-dock{z-index:5;padding:.55rem .75rem calc(.55rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(14px);background:#060a14e0;flex-shrink:0;position:relative}.mobile-bar{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.45rem;display:grid}.mobile-place{flex-direction:column;gap:.12rem;min-width:0;display:flex}.mobile-place-label{letter-spacing:.08em;text-transform:uppercase;color:var(--mist-dim);font-size:.6rem}.mobile-place strong{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.mobile-place-meta{color:var(--mist-dim);font-size:.68rem;line-height:1.3}.mobile-controls-toggle{align-self:start;min-height:2.75rem;padding:.55rem .85rem;font-size:.82rem}.mobile-controls-toggle.active{color:var(--accent);background:0 0;border:1px solid #e8c99ba6}.mobile-error{margin:.45rem 0 0}.identify-card{left:.75rem;right:.75rem;bottom:calc(6.2rem + env(safe-area-inset-bottom,0px));z-index:6;-webkit-backdrop-filter:blur(14px);background:#080e1ceb;border:1px solid #e8c99b73;border-left-width:3px;padding:.75rem .85rem;animation:.28s both rise;position:absolute}.identify-card-top{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.15rem;display:flex}.identify-card .kind{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:.65rem}.identify-dismiss{color:var(--mist-dim);font:inherit;cursor:pointer;background:0 0;border:none;min-height:2.25rem;padding:.35rem .25rem;font-size:.78rem;font-weight:600}.identify-card strong{font-family:var(--font-display);font-size:1.35rem;font-weight:600;line-height:1.15;display:block}.identify-distance,.identify-pos{color:var(--mist);margin:.25rem 0 0;font-size:.84rem}.identify-pos{color:var(--mist-dim);font-size:.78rem}.app.is-mobile .hud{z-index:30;overscroll-behavior:contain;width:100%;max-height:82dvh;padding:.15rem .75rem calc(1rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(16px);touch-action:pan-y;background:#060a14f7;border-radius:18px 18px 0 0;margin-top:0;transition:transform .2s;animation:.24s both sheet-up;position:fixed;inset:auto 0 0;overflow-y:auto;box-shadow:0 -14px 34px #0000008c}.app.is-mobile .hud.is-dragging{transition:none;animation:none}.panel-compact{padding-top:.65rem}.panel-compact .panel-pinned{margin-top:-.65rem;padding-top:.65rem}.hud[hidden]{display:none!important}.sheet-header{z-index:2;touch-action:none;cursor:grab;background:#060a14f7;border-radius:18px 18px 0 0;justify-content:flex-end;align-items:center;min-height:2.5rem;margin:0 -.75rem .35rem;padding:.5rem .75rem .4rem;display:flex;position:sticky;top:0}.sheet-grip{pointer-events:none;background:#c8d7f08c;border-radius:999px;width:2.75rem;height:.3rem;position:absolute;top:.5rem;left:50%;transform:translate(-50%)}.sheet-hide{min-height:2.1rem;padding:.35rem .7rem;font-size:.78rem}.place-actions .btn,.filter-btn,.btn.motion-btn,.field input,.field select{min-height:2.75rem}.filter-btn{padding:.55rem .35rem;font-size:.78rem}.place-title{font-size:1.25rem}}@media (width<=720px) and (orientation:landscape){.app.is-mobile:not(.controls-open) .sky-stage{min-height:100dvh}.hero .brand{font-size:1.35rem}.hero h1{display:none}.identify-card{width:min(20rem,46vw);left:auto;right:.75rem;bottom:calc(5.7rem + env(safe-area-inset-bottom,0px))}.zoom-controls{bottom:calc(5.3rem + env(safe-area-inset-bottom,0px))}}
