
:root{--night:#07101e;--panel:#102039;--edge:#31435c;--muted:#b4c6da;--ink:#f3f7fc;--aqua:#83e1da;--gold:#ffda8c;color-scheme:dark;font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--night);color:var(--ink);line-height:1.58}a{color:#b6e8fc}a:hover{text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}
.wrap{width:min(1160px,calc(100% - 34px));margin:auto}header{border-bottom:1px solid var(--edge);background:#0c1a2e}.headrow{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 0;flex-wrap:wrap}.headrow a{text-decoration:none;font-size:13px}.headrow nav{display:flex;gap:15px;flex-wrap:wrap}
.hero{padding:56px 0 46px;background:radial-gradient(ellipse at 80% 5%,#244d69 0,transparent 45%),radial-gradient(ellipse at 12% 65%,#263557 0,transparent 50%),#091426;position:relative;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.65;background-image:radial-gradient(2px 2px at 15% 30%,white 95%,transparent),radial-gradient(1px 1px at 63% 12%,white 95%,transparent),radial-gradient(1px 1px at 85% 74%,white 95%,transparent);background-size:205px 193px,190px 160px,125px 171px}.hero .wrap{position:relative}h1{font-size:clamp(34px,4.9vw,64px);line-height:1.08;letter-spacing:-.045em;margin:13px 0 16px;max-width:880px}.eyebrow,.kicker{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--aqua);font-weight:800}.lede{max-width:810px;color:#d5e2f4;font-size:18px;margin:0}.crumb{font-size:12px;color:var(--muted);margin-bottom:12px}.crumb a{color:#b6e8fc}.hero-links{display:flex;gap:12px;flex-wrap:wrap;margin-top:21px}
.btn,.hero-links a,.actions a,.actions button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;background:#b4eee5;color:#06313c;border:1px solid #b4eee5;border-radius:9px;font-weight:750;padding:10px 15px;min-height:43px}.btn.secondary,.hero-links a.secondary,.actions .secondary{background:#172d43;color:#d2eafd;border-color:#59718b}
main{padding:21px 0 55px}.panel{border:1px solid var(--edge);background:var(--panel);border-radius:15px;padding:23px;min-width:0;margin:20px 0}.panel h2{font-size:clamp(22px,2.5vw,28px);margin:4px 0 9px;letter-spacing:-.02em}.panel h3{font-size:17px;margin:0 0 8px}.panel p{margin:8px 0 13px}.subtle{color:var(--muted)}.small{font-size:13px}.large{font-size:clamp(24px,3vw,37px);font-weight:800;line-height:1.15;letter-spacing:-.03em}.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.fieldgroup{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin:18px 0}.fieldgroup label{color:#c7d8ec;font-size:12px;font-weight:750;display:flex;flex-direction:column;gap:5px}.fieldgroup input,.fieldgroup select{background:#091527;color:#fff;border:1px solid #56718c;border-radius:9px;min-height:43px;padding:9px 12px;min-width:140px}.fieldgroup input{width:240px}.fieldgroup button{background:#1b5065;color:#e9fdff;border:1px solid #6b91ab;border-radius:9px;padding:9px 14px;min-height:43px;font-weight:750}.fieldgroup button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.metric{background:#0b1a2d;border:1px solid #334965;padding:14px;border-radius:11px}.metric strong{font-size:21px;display:block;color:#fff}.metric span{font-size:12px;color:#b8cddd}.signal{display:inline-block;border:1px solid #56708b;color:#d6e9f9;border-radius:99px;padding:5px 9px;font-size:12px;margin:4px 6px 4px 0}.decision{border-left:4px solid var(--aqua);padding-left:16px}.decision.caution{border-color:var(--gold)}.decision.muted{border-color:#9eafc7}
.timeline{display:flex;gap:6px;min-height:180px;overflow-x:auto;padding:12px 0;border-bottom:1px solid var(--edge)}.hour{flex:0 0 44px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px;min-height:152px;background:transparent;border:0;color:#ddeafc}.hour time{font-size:10px;white-space:nowrap}.hour b{font-size:11px}.bar{background:linear-gradient(0deg,#3f88a3,#8ee5c8);border-radius:5px 5px 0 0;width:30px;min-height:3px}.bar.dim{background:linear-gradient(0deg,#776b78,#d5c08f)}.explain{margin-top:13px;padding:13px;border-radius:9px;background:#1c2e45;color:#d7e8f7;font-size:13px}
#darkSkyMap{height:410px;min-height:0;width:100%;position:relative;contain:layout paint size;border-radius:11px;background:#0a233c;overflow:hidden;margin-top:8px}.mapstatus{font-size:12px;min-height:20px;color:#bdcfe3;margin:9px 0}.list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.site{background:#0c1c30;border:1px solid #334a67;border-radius:11px;padding:15px;min-width:0}.site h3{margin:0 0 5px}.site h3 a{text-decoration:none}.site p{color:#bfd0e3;font-size:13px}.site .tag{font-size:11px;color:var(--aqua);font-weight:750}.site .actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.site .actions a{padding:7px 11px;font-size:12px;min-height:35px}.access{background:#17283c;border:1px solid #4b5c75;border-radius:10px;padding:16px}.access strong{color:var(--gold)}.weather-status{min-height:20px;color:#d7e8fb;font-size:13px}.tripline{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:11px 0;font-size:13px}.site-recommendations{max-height:460px;overflow-y:auto}.nextsite{padding:10px 0;border-top:1px solid #354864}.nextsite a{font-weight:750}.nextsite p{font-size:12px;margin:3px 0}.note{padding:12px;border-left:3px solid var(--gold);background:#1b2b41;color:#d3e2f2;font-size:13px;margin:14px 0}footer{border-top:1px solid var(--edge);padding:23px 0;color:#9eb2ca;font-size:12px}footer a{color:#a8d7ed}.leaflet-container{color:#1b2b3b}.leaflet-popup-content{overflow-wrap:anywhere}
@media(max-width:800px){.two-col,.three-col,.list{grid-template-columns:1fr}.panel{padding:19px}.hero{padding:43px 0 34px}#darkSkyMap{height:330px;min-height:0}.fieldgroup label{flex:1 1 150px}.fieldgroup input,.fieldgroup select{width:100%}.fieldgroup button{flex:1 1 145px}}

/* Critical Leaflet geometry is self-contained. A blocked CDN stylesheet or global image reset must never turn positioned tiles into normal-flow images. */
#darkSkyMap .leaflet-pane,#darkSkyMap .leaflet-tile,#darkSkyMap .leaflet-marker-icon,#darkSkyMap .leaflet-marker-shadow,#darkSkyMap .leaflet-tile-container,#darkSkyMap .leaflet-pane > svg,#darkSkyMap .leaflet-pane > canvas{position:absolute!important;left:0;top:0}
#darkSkyMap .leaflet-tile{display:block;max-width:none!important;max-height:none!important;border:0;pointer-events:none}
#darkSkyMap .leaflet-tile-pane{z-index:200}
#darkSkyMap .leaflet-overlay-pane{z-index:400}
#darkSkyMap .leaflet-marker-pane{z-index:600}
#darkSkyMap .leaflet-tooltip-pane{z-index:650}
#darkSkyMap .leaflet-popup-pane{z-index:700}
#darkSkyMap .leaflet-control-container{position:static}
#darkSkyMap .leaflet-top,#darkSkyMap .leaflet-bottom{position:absolute!important;z-index:1000;pointer-events:none}
#darkSkyMap .leaflet-top{top:0}#darkSkyMap .leaflet-bottom{bottom:0}
#darkSkyMap .leaflet-left{left:0}#darkSkyMap .leaflet-right{right:0}
#darkSkyMap .leaflet-control{clear:both;pointer-events:auto}
#darkSkyMap .leaflet-left .leaflet-control{float:left;margin-left:10px}
#darkSkyMap .leaflet-right .leaflet-control{float:right;margin-right:10px}
#darkSkyMap .leaflet-top .leaflet-control{margin-top:10px}
#darkSkyMap .leaflet-bottom .leaflet-control{margin-bottom:10px}
#darkSkyMap .leaflet-control-attribution{font-size:10px;line-height:1.25;padding:2px 5px;background:rgba(255,255,255,.9);max-width:min(300px,calc(100vw - 32px));color:#222}
#darkSkyMap .leaflet-control-attribution a{color:#175a8a}
#darkSkyMap .leaflet-bar a{display:block;width:30px;height:30px;line-height:30px;text-align:center;font-size:19px;font-weight:bold;background:#fff;color:#222;text-decoration:none;border-bottom:1px solid #ccc}
#darkSkyMap .leaflet-control-scale-line{border:2px solid #777;border-top:none;background:rgba(255,255,255,.88);padding:2px 5px;white-space:nowrap;font-size:11px;color:#222}

#darkSkyMap .leaflet-container{overflow:hidden}
