*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;overflow-x:hidden;overflow-y:auto;background:#05070d;color:#eef3ff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%;touch-action:manipulation}
#app{position:relative;display:flex;flex-direction:column;min-height:100vh;min-height:100svh;width:100%;overflow-x:hidden;
  padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);
  max-width:640px;margin:0 auto;background:radial-gradient(ellipse at top,#122042 0%,#05070d 60%)}
header{text-align:center;padding:clamp(4px,1.2svh,12px) 8px 0;flex:none}
h1{font-size:clamp(26px,4.4svh,40px);font-weight:900;letter-spacing:.5px;line-height:1.05;text-transform:uppercase;
  background:linear-gradient(180deg,#fff,#9fc4ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.by{font-size:clamp(15px,2.2svh,19px);color:#b7c6e6;margin-top:2px}
.by a{color:#7fd0ff;font-weight:700;text-decoration:none}
#stats{flex:none;display:flex;gap:6px;justify-content:center;align-items:center;flex-wrap:nowrap;padding:clamp(3px,.8svh,8px) 6px;font-size:clamp(14px,2.2svh,19px);font-weight:700;white-space:nowrap;overflow:hidden}
#stats span{overflow:hidden;text-overflow:ellipsis}
.pill{padding:2px 8px;border-radius:999px;font-size:.85em;letter-spacing:.5px}
.pill.ok{background:#0b5d2a;color:#b9ffcf}.pill.ok::before{content:"● ";color:#3dff7a}
.pill.wait{background:#5a4a0b;color:#ffe9a6}.pill.bad{background:#6a1414;color:#ffc2c2}
#mapwrap{flex:none;margin-top:2px;margin-bottom:2px;height:41vh;height:41svh;min-height:225px;max-height:570px;position:relative;margin:0 6px;border-radius:12px;overflow:hidden;border:1px solid #1f2d4d}
#map{touch-action:none;overscroll-behavior:contain;position:absolute;inset:0;background:#070b16}
.leaflet-container{background:#070b16}
.leaflet-control-attribution{display:none}
.mapbtn{display:flex;align-items:center;justify-content:center;padding:0;position:absolute;right:8px;bottom:8px;z-index:500;width:44px;height:44px;border-radius:10px;border:1px solid #33507f;background:#0d1730e6;color:#fff;font-size:26px;line-height:1}
#where{position:absolute;left:8px;top:8px;z-index:500;background:#05070dcc;padding:3px 8px;border-radius:8px;font-size:clamp(13px,1.9svh,16px);font-weight:600;color:#cfe0ff;pointer-events:none;max-width:70%}
.ship{width:44px;height:44px;margin:-22px 0 0 -22px;will-change:transform}
.ship svg{width:44px;height:44px;filter:drop-shadow(0 0 6px #6fc3ff)}
.me{width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:#ffcf3d;border:3px solid #fff;box-shadow:0 0 10px #ffcf3d}
#panel{flex:none;padding:clamp(4px,1svh,10px) 10px 0;display:flex;flex-direction:column;gap:clamp(4px,.9svh,8px)}
h2{font-size:clamp(19px,3svh,26px);font-weight:800;text-align:center;line-height:1.1;color:#fff}
#locbtn{font-size:clamp(17px,2.6svh,21px);font-weight:800;padding:clamp(7px,1.3svh,12px);border-radius:12px;border:0;background:linear-gradient(180deg,#2f8bff,#1a5fd1);color:#fff;width:100%}
#locform{display:flex;gap:6px}
#locinput{flex:1;min-width:0;font-size:max(16px,clamp(16px,2.4svh,20px));padding:clamp(6px,1.2svh,11px) 10px;border-radius:12px;border:1px solid #33507f;background:#0d1730;color:#fff}
#locinput::placeholder{color:#8ea3c9}
#gobtn{font-size:clamp(17px,2.5svh,20px);font-weight:800;padding:0 18px;border-radius:12px;border:0;background:#ffb020;color:#1a1200}
button:active{transform:scale(.98)}
#result{min-height:clamp(84px,15svh,140px);background:#0b1328;border:1px solid #1f2d4d;border-radius:12px;padding:clamp(5px,1svh,10px) 10px;text-align:center;display:flex;flex-direction:column;justify-content:center;gap:2px;overflow:hidden}
.hint{font-size:clamp(14px,2.1svh,18px);color:#b7c6e6;line-height:1.25}
.place{font-size:clamp(13px,1.9svh,16px);color:#9fb3da;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.when{font-size:clamp(17px,2.6svh,22px);font-weight:800}
.cd{font-size:clamp(30px,5.4svh,48px);font-weight:900;font-variant-numeric:tabular-nums;color:#7fffb0;line-height:1.05;letter-spacing:1px}
.cd.now{color:#ffcf3d}
.det{font-size:clamp(14px,2.1svh,18px);color:#dbe6ff;line-height:1.2}
.vis-yes{color:#7fffb0;font-weight:800}.vis-no{color:#ffb4a1;font-weight:700}
.err{font-size:clamp(15px,2.2svh,18px);color:#ffc2c2;line-height:1.25}
footer{flex:none;font-size:9px;line-height:1.25;color:#7d8bab;text-align:center;padding:4px 8px 4px}
footer a{color:#9fb3da}
@media (min-width:900px){#app{border-left:1px solid #14203a;border-right:1px solid #14203a}}
.det.low{color:#ffd37a;font-weight:700}
.plist{margin-top:4px;border-top:1px solid #1f2d4d;padding-top:4px;display:flex;flex-direction:column;gap:2px}
.phead{display:flex;justify-content:space-between;align-items:center;font-size:clamp(13px,1.9svh,16px);color:#9fb3da;font-weight:700;min-height:1.6em}
.prow{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:baseline;font-size:clamp(15px,2.2svh,19px);text-align:left}
.prow .pt{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.prow .pe{color:#cfe0ff;white-space:nowrap}
.prow .pc{font-weight:800;font-variant-numeric:tabular-nums;color:#7fffb0;white-space:nowrap;text-align:right;min-width:6.5em}
.prow .pc.now{color:#ffcf3d}
.morebtn{font:inherit;font-size:clamp(14px,2svh,17px);font-weight:800;color:#1a1200;background:#ffb020;border:0;border-radius:999px;padding:3px 12px;cursor:pointer}
#morepop{position:fixed;z-index:2000;background:#0d1730f5;border:1px solid #33507f;border-radius:14px;padding:10px 12px;box-shadow:0 10px 30px #000a;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:6px}
#morepop[hidden]{display:none}
.pophead{font-size:clamp(16px,2.4svh,20px);font-weight:800;color:#fff}
.popkey{font-size:13px;color:#9fb3da;margin-top:2px}
#catch{flex:none;display:flex;flex-direction:column;gap:2px;margin:0 6px 8px;padding:8px 12px;border-radius:12px;background:linear-gradient(90deg,#3a1d00,#5a2a00);border:1px solid #ff9a2e}
#catch[hidden]{display:none}
#catch .c-row{display:flex;flex-wrap:nowrap;align-items:baseline;justify-content:space-between;gap:8px}
#c-title{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:clip;font-size:clamp(16px,4.6vw,26px);font-weight:900;letter-spacing:.3px;color:#ffd27a;line-height:1.1;white-space:nowrap}
#c-cd{flex:0 0 auto;margin-left:auto;font-size:clamp(20px,6.1vw,38px);font-feature-settings:'tnum' 1;font-weight:900;font-variant-numeric:tabular-nums;color:#fff;white-space:nowrap;line-height:1.05}
#c-cd.now{color:#ffcf3d;font-size:clamp(16px,4.6vw,26px)}
#c-sub{font-size:clamp(15px,4.2vw,19px);color:#ffe3b8;font-weight:700;line-height:1.25;overflow-wrap:anywhere}
@media (min-width:900px){#app{max-width:1100px}#mapwrap{height:46vh;height:46svh}#panel{width:100%;max-width:640px;align-self:center}#catch{width:calc(100% - 12px);max-width:628px;align-self:center}}
#panel{padding-bottom:10px}
#catch .c-row2{align-items:center}
#c-sub{flex:1 1 auto;min-width:0}
#c-rem{flex:0 0 auto;margin-left:auto;padding:4px 11px;border-radius:999px;background:#2563eb;border:1px solid #6ea0ff;color:#fff;font-weight:800;font-size:clamp(12px,3.4vw,15px);line-height:1.2;text-decoration:none;white-space:nowrap}
#c-rem:active{background:#3b82f6}
#nextev{flex:none;display:flex;align-items:baseline;gap:6px;margin:0 6px 8px;padding:6px 14px;border-radius:999px;background:#000;border:1px solid #6b7280;color:#fff;font-size:clamp(14px,4vw,18px);font-weight:800;line-height:1.2;white-space:nowrap;overflow:hidden}
#nextev[hidden]{display:none}
#nextev .ne-k{color:#9ca3af;flex:none}
#ne-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
#ne-cd{flex:none;margin-left:auto;font-variant-numeric:tabular-nums}
@media (min-width:900px){#nextev{width:calc(100% - 12px);max-width:628px;align-self:center;box-sizing:border-box}}

#done{position:fixed;inset:0;z-index:9999;background:#05070b;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:auto;touch-action:none;padding:24px;text-align:center}
#done[hidden]{display:none}
.done-in{max-width:620px}
.done-big{font-weight:900;font-size:clamp(52px,15vw,112px);line-height:.95;color:#fff;letter-spacing:-.01em;text-shadow:0 0 30px rgba(90,168,255,.7)}
.done-sub{margin-top:18px;font-weight:800;font-size:clamp(22px,6.2vw,34px);color:#ffcf3d}
.done-small{margin-top:14px;font-weight:700;font-size:clamp(18px,5vw,24px);color:#d1d5db}

html.locked,html.locked body{overflow:hidden;height:100%;overscroll-behavior:none;touch-action:none}

.done-date{color:#fff;font-weight:800;font-size:clamp(20px,5.6vw,28px);margin-top:10px}.done-cta{display:inline-block;margin-top:26px;padding:16px 26px;border-radius:14px;background:#1d9bf0;color:#fff;font-weight:900;font-size:clamp(20px,5.6vw,26px);text-decoration:none}.done-foot{position:fixed;left:0;right:0;bottom:14px;color:#9ca3af;font-size:12px}

#done .done-cta{pointer-events:auto}.t-top{position:absolute;top:18px;left:0;right:0}.t-title{font-weight:900;font-size:clamp(30px,9vw,46px);color:#fff;letter-spacing:.5px}.t-by{color:#9ca3af;font-size:clamp(17px,4.6vw,22px)}.t-by b{color:#7cc4ff}.t-congrats{color:#e5e7eb;font-size:clamp(19px,5vw,24px);margin:10px 0 18px;line-height:1.3}.t-hook{color:#d1d5db;font-size:clamp(18px,4.8vw,22px);margin-top:16px;line-height:1.3}.done-foot{line-height:1.5;padding:0 14px}.done-foot span{font-size:11px;color:#6b7280}
