:root{color-scheme:dark;--ink:#e6eefc;--ink-dim:#9ab0d8;--sea:#0b1e3d;--sea-dark:#061128;--sea-deeper:#040b1c;--accent:#4aa8ff;--accent-hot:#7ec8ff;--start:#5ce0a1;--end:#ff6b8a;--waypoint:#ffcc5c;--danger:#ff4d4d;--border:rgba(122,162,220,0.22);--glass:rgba(6,17,40,0.72);--glass-strong:rgba(6,17,40,0.88);--shadow:0 10px 40px -10px rgba(0,0,0,0.6);--radius:14px;--radius-sm:8px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,SF Pro Display,Roboto,Helvetica Neue,sans-serif}body,html{margin:0;padding:0;height:100%;background:var(--sea-deeper);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}*{box-sizing:border-box}button{cursor:pointer;background:none;border:none;color:inherit}button,input{font:inherit}.nep-root{position:fixed;inset:0;overflow:hidden}.nep-map{width:100%;height:100%;touch-action:none}.maplibregl-ctrl-group{background:var(--glass)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border)!important;border-radius:var(--radius)!important;overflow:hidden;box-shadow:var(--shadow)}.maplibregl-ctrl-group button{background:transparent!important;color:var(--ink)!important;width:36px!important;height:36px!important}.maplibregl-ctrl-group button:hover{background:rgba(255,255,255,.06)!important}.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(1) brightness(1.3)}.maplibregl-ctrl-attrib{background:var(--glass)!important;color:var(--ink-dim)!important;border-radius:var(--radius-sm)!important;font-size:11px!important}.maplibregl-ctrl-attrib a{color:var(--accent)!important}.maplibregl-ctrl-scale{background:var(--glass)!important;color:var(--ink)!important;border:1px solid var(--border)!important;border-radius:4px!important;padding:2px 6px!important;font-size:11px!important}.nep-topbar{position:absolute;top:16px;left:16px;right:16px;display:flex;align-items:center;gap:12px;z-index:20;pointer-events:none}.nep-topbar>*{pointer-events:auto}.nep-brand{display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.nep-brand-mark{color:var(--accent);font-size:22px;line-height:1}.nep-brand-name{font-weight:800;letter-spacing:3px;font-size:14px;color:var(--ink)}.nep-search{flex:1 1;max-width:480px;position:relative;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:border-color .15s ease,box-shadow .15s ease}.nep-search.focused{border-color:var(--accent);box-shadow:0 10px 40px -10px rgba(74,168,255,.45)}.nep-search-icon{opacity:.7;font-size:14px}.nep-search-input{flex:1 1;background:transparent;color:var(--ink);border:none;outline:none;font-size:14px;min-width:0}.nep-search-input::placeholder{color:var(--ink-dim)}.nep-search-clear{width:22px;height:22px;line-height:20px;text-align:center;border-radius:50%;background:rgba(255,255,255,.08);color:var(--ink-dim);font-size:16px}.nep-search-clear:hover{background:rgba(255,255,255,.16);color:var(--ink)}.nep-search-results{position:absolute;top:calc(100% + 8px);left:0;right:0;margin:0;padding:6px;list-style:none;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-height:320px;overflow-y:auto;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.nep-search-loading{padding:10px 12px;color:var(--ink-dim);font-size:12px}.nep-search-result{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer}.nep-search-result:hover{background:rgba(74,168,255,.12)}.nep-search-result-kind{text-transform:uppercase;font-size:10px;letter-spacing:1px;color:var(--accent);margin-bottom:2px}.nep-search-result-name{font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nep-style-switcher{display:flex;gap:4px;padding:6px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow)}.nep-style-btn{width:34px;height:34px;border-radius:var(--radius-sm);color:var(--ink-dim);font-size:18px;transition:background .15s ease,color .15s ease}.nep-style-btn:hover{color:var(--ink);background:rgba(255,255,255,.06)}.nep-style-btn.active{background:var(--accent);color:var(--sea-deeper)}.nep-instruction{position:absolute;top:82px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:10px 16px 10px 10px;background:var(--glass-strong);border:1px solid var(--border);border-radius:40px;box-shadow:var(--shadow);z-index:15;color:var(--ink);font-size:14px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);animation:nep-fade-in .25s ease-out}.nep-instruction-dot{width:28px;height:28px;border-radius:50%;background:var(--start);color:var(--sea-deeper);display:flex;align-items:center;justify-content:center;font-weight:800}.nep-cursor-info{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--glass);border:1px solid var(--border);border-radius:40px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px;color:var(--ink);z-index:12;pointer-events:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.nep-cursor-coord{color:var(--ink)}.nep-cursor-sep{color:var(--ink-dim)}.nep-cursor-val{color:var(--accent);font-weight:600}.nep-fab{position:absolute;bottom:32px;right:16px;z-index:30;display:flex;align-items:center;gap:10px;padding:14px 22px;background:linear-gradient(135deg,var(--accent),var(--accent-hot));color:var(--sea-deeper);font-size:15px;font-weight:800;letter-spacing:.6px;border-radius:999px;box-shadow:0 14px 40px -10px rgba(74,168,255,.5);transition:transform .2s ease,box-shadow .2s ease;animation:nep-fab-in .28s ease-out}.nep-fab:hover{transform:translateY(-2px);box-shadow:0 20px 50px -10px rgba(74,168,255,.6)}.nep-fab.planning{background:var(--glass-strong);color:var(--ink);cursor:default;border:1px solid var(--border)}.nep-fab-icon{font-size:18px}.nep-fab-label{text-transform:uppercase}.nep-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.25);border-top:2px solid var(--accent);border-radius:50%;animation:nep-spin .8s linear infinite}@keyframes nep-spin{to{transform:rotate(1turn)}}@keyframes nep-fade-in{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}@keyframes nep-fab-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.nep-bottom-sheet{position:absolute;bottom:16px;left:16px;right:16px;max-width:640px;margin:0 auto;padding:18px 22px 20px;background:var(--glass-strong);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);z-index:25;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);animation:nep-sheet-in .32s cubic-bezier(.2,.8,.2,1)}.nep-bs-grab{width:40px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 14px}.nep-bs-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px}.nep-bs-kicker{text-transform:uppercase;font-size:10px;color:var(--ink-dim);letter-spacing:1.5px;margin-bottom:2px}.nep-bs-title{font-size:20px;font-weight:700;color:var(--ink)}.nep-bs-engine{padding:4px 10px;background:rgba(74,168,255,.16);color:var(--accent);border-radius:999px;font-size:11px;font-weight:700;letter-spacing:1px}.nep-bs-metrics{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:16px;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}@media (max-width:640px){.nep-bs-metrics{grid-template-columns:repeat(2,1fr)}}.nep-metric{text-align:left}.nep-metric-value{font-size:22px;font-weight:700;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.nep-metric-unit{font-size:13px;color:var(--ink-dim);font-weight:500}.nep-metric-label{font-size:11px;text-transform:uppercase;color:var(--ink-dim);letter-spacing:1px;margin-top:2px}.nep-bs-actions{display:flex;gap:10px;margin-top:14px}.nep-btn{flex:1 1;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;transition:background .15s ease,transform .15s ease}.nep-btn.ghost{border:1px solid var(--border);color:var(--ink);background:transparent}.nep-btn.ghost:hover{background:rgba(74,168,255,.1);border-color:var(--accent)}.nep-btn.danger{background:rgba(255,77,77,.15);color:var(--danger);border:1px solid rgba(255,77,77,.35)}.nep-btn.danger:hover{background:rgba(255,77,77,.25)}@keyframes nep-sheet-in{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.nep-ctx{position:fixed;z-index:50;min-width:220px;padding:8px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);animation:nep-fade-in .14s ease-out}.nep-ctx-header{padding:8px 10px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--ink-dim);border-bottom:1px solid var(--border);margin-bottom:6px}.nep-ctx-item{width:100%;display:flex;align-items:center;gap:10px;padding:10px;border-radius:var(--radius-sm);text-align:left;font-size:13px;color:var(--ink)}.nep-ctx-item:hover{background:rgba(74,168,255,.12)}.nep-ctx-dot{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;color:var(--sea-deeper)}.nep-ctx-dot.start{background:var(--start)}.nep-ctx-dot.end{background:var(--end)}.nep-ctx-dot.wp{background:var(--waypoint)}.nep-overlay-toggle{position:absolute;top:86px;right:16px;z-index:15;width:40px;height:40px;border-radius:var(--radius);background:var(--glass-strong);border:1px solid var(--border);color:var(--ink);font-size:18px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transition:background .15s ease}.nep-overlay-toggle.open,.nep-overlay-toggle:hover{background:var(--accent);color:var(--sea-deeper);border-color:var(--accent)}.nep-overlay-drawer{position:absolute;top:140px;right:16px;z-index:14;width:280px;max-height:calc(100vh - 220px);overflow-y:auto;padding:16px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);animation:nep-drawer-in .22s ease-out}.nep-drawer-title{font-size:11px;text-transform:uppercase;color:var(--ink-dim);letter-spacing:1.5px;margin-bottom:12px}.nep-drawer-spacer{height:12px}.nep-toggle-row{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:13px;color:var(--ink);cursor:pointer}.nep-toggle-row input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}@keyframes nep-drawer-in{0%{opacity:0;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}.nep-toasts{position:fixed;top:80px;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none}.nep-toast{pointer-events:auto;padding:10px 16px;max-width:420px;background:var(--glass-strong);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);color:var(--ink);font-size:13px;box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);animation:nep-toast-in .22s ease-out}.nep-toast.success{border-left-color:var(--start)}.nep-toast.error{border-left-color:var(--danger)}@keyframes nep-toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.nep-marker{position:relative;width:36px;height:44px;cursor:-webkit-grab;cursor:grab}.nep-marker:active{cursor:-webkit-grabbing;cursor:grabbing}.nep-marker-head{top:0;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:var(--sea-deeper);border:3px solid var(--sea-deeper);box-shadow:0 6px 14px rgba(0,0,0,.4);z-index:2}.nep-marker-head,.nep-marker:after{position:absolute;left:50%;transform:translateX(-50%)}.nep-marker:after{content:"";top:26px;width:4px;height:16px;background:var(--sea-deeper);border-radius:2px;z-index:1}.nep-marker.start .nep-marker-head{background:var(--start)}.nep-marker.end .nep-marker-head{background:var(--end)}.nep-marker.wp .nep-marker-head{background:var(--waypoint)}.nep-marker-pulse{position:absolute;left:50%;top:0;transform:translate(-50%,-50%);width:32px;height:32px;border-radius:50%;background:currentColor;opacity:.3;animation:nep-pulse 2s ease-out infinite;z-index:0}.nep-marker.start .nep-marker-pulse{color:var(--start);top:16px}.nep-marker.end .nep-marker-pulse{color:var(--end);top:16px}@keyframes nep-pulse{0%{transform:translate(-50%,-50%) scale(.7);opacity:.45}to{transform:translate(-50%,-50%) scale(2.2);opacity:0}}.nep-user-wrap{position:relative}.nep-user-btn{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 8px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);color:var(--ink);font-size:13px;font-weight:600;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow);transition:border-color .15s ease}.nep-user-btn-signin,.nep-user-btn:hover{border-color:var(--accent)}.nep-user-btn-signin{padding:12px 18px;background:var(--accent);color:var(--sea-deeper);font-weight:700}.nep-user-btn-signin:hover{background:var(--accent-hot)}.nep-user-avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--sea-deeper);display:flex;align-items:center;justify-content:center;font-weight:800}.nep-user-email{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nep-user-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:240px;padding:8px;background:var(--glass-strong);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:40;animation:nep-fade-in .16s ease-out}.nep-user-menu-head{padding:10px 12px 14px;border-bottom:1px solid var(--border);margin-bottom:6px}.nep-user-menu-email{font-size:13px;color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nep-user-menu-plan{font-size:10px;color:var(--accent);letter-spacing:1.2px;margin-top:2px}.nep-user-menu-item{display:block;width:100%;text-align:left;padding:10px 12px;font-size:13px;color:var(--ink);border-radius:var(--radius-sm);transition:background .14s ease}.nep-user-menu-item:hover{background:rgba(74,168,255,.12)}.nep-user-menu-item.danger{color:var(--danger)}.nep-user-menu-item.danger:hover{background:rgba(255,77,77,.15)}.nep-user-menu-sep{height:1px;background:var(--border);margin:6px 4px}.nep-modal-overlay{position:fixed;inset:0;background:rgba(4,8,18,.65);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:nep-fade-in .16s ease-out}.nep-modal{width:100%;max-width:440px;max-height:90vh;overflow-y:auto;background:var(--glass-strong);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);animation:nep-sheet-in .28s cubic-bezier(.2,.8,.2,1)}.nep-modal-wide{max-width:720px}.nep-modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 24px 12px;border-bottom:1px solid var(--border)}.nep-modal-kicker{text-transform:uppercase;font-size:10px;color:var(--ink-dim);letter-spacing:1.4px;margin-bottom:2px}.nep-modal-title{font-size:22px;font-weight:700;color:var(--ink)}.nep-modal-close{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.06);color:var(--ink-dim);font-size:20px;display:flex;align-items:center;justify-content:center}.nep-modal-close:hover{background:rgba(255,255,255,.14);color:var(--ink)}.nep-modal-body{padding:20px 24px 24px;display:flex;flex-direction:column;gap:14px}.nep-modal-error{padding:10px 12px;background:rgba(255,77,77,.12);border:1px solid rgba(255,77,77,.4);color:var(--danger);border-radius:var(--radius-sm);font-size:13px}.nep-modal-hint{font-size:12px;color:var(--ink-dim);text-align:center;margin:4px 0 0}.nep-field{display:flex;flex-direction:column;gap:4px;flex:1 1;min-width:0}.nep-field-label{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--ink-dim)}.nep-input{padding:10px 12px;background:rgba(8,20,42,.8);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink);font-size:14px;outline:none;transition:border-color .14s ease;width:100%}.nep-input:focus{border-color:var(--accent)}.nep-btn.primary{background:var(--accent);color:var(--sea-deeper);border:none}.nep-btn.primary:hover{background:var(--accent-hot)}.nep-btn.full{width:100%}.nep-btn.ghost.active{background:rgba(92,224,161,.15);border-color:var(--start);color:var(--start)}.nep-form{display:flex;flex-direction:column;gap:14px}.nep-form-row{display:flex;gap:12px}.nep-form-actions{display:flex;gap:10px;margin-top:6px}.nep-form-actions .nep-btn{flex:1 1}.nep-vessel-list,.nep-voyage-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}.nep-vessel-card,.nep-voyage-card{display:flex;gap:12px;padding:14px 16px;background:rgba(8,20,42,.6);border:1px solid var(--border);border-radius:var(--radius)}.nep-vessel-card.active{border-color:var(--start);box-shadow:0 0 0 1px var(--start)}.nep-vessel-info,.nep-voyage-info{flex:1 1;min-width:0}.nep-vessel-name,.nep-voyage-name{font-size:15px;font-weight:700;color:var(--ink);margin-bottom:4px}.nep-vessel-meta,.nep-voyage-meta{font-size:12px;color:var(--ink-dim)}.nep-voyage-coords{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;color:var(--ink-dim);margin-top:2px}.nep-vessel-actions,.nep-voyage-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.nep-vessel-actions .nep-btn,.nep-voyage-actions .nep-btn{padding:8px 12px;font-size:11px;flex:0 1}.nep-hint{padding:16px;background:rgba(74,168,255,.08);border-radius:var(--radius-sm);color:var(--ink-dim);font-size:13px;text-align:center}.nep-active-vessel{position:absolute;top:82px;left:16px;display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--glass-strong);border:1px solid var(--border);border-radius:40px;font-size:12px;color:var(--ink);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);z-index:12;animation:nep-fade-in .22s ease-out}.nep-active-vessel-meta{color:var(--ink-dim);font-size:11px}@media (max-width:720px){.nep-topbar{top:12px;left:12px;right:12px;gap:8px;flex-wrap:wrap}.nep-brand{padding:10px 12px}.nep-search{order:3;flex-basis:100%;max-width:none}.nep-user-email{display:none}.nep-user-btn{padding:8px}.nep-instruction{top:136px;font-size:12px;padding:8px 14px 8px 8px}.nep-active-vessel{top:172px;left:12px;max-width:calc(100vw - 80px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nep-active-vessel-meta{display:none}.nep-overlay-toggle{top:136px;right:12px}.nep-overlay-drawer{top:186px;right:12px;width:calc(100vw - 24px);max-width:320px;max-height:calc(100vh - 400px)}.nep-fab{bottom:20px;right:12px;padding:12px 18px}.nep-fab-label{display:none}.nep-bottom-sheet{bottom:12px;left:12px;right:72px;padding:14px 18px 16px}.nep-bs-title{font-size:17px}.nep-metric-value{font-size:18px}.nep-cursor-info{display:none}.nep-toasts{top:72px;max-width:calc(100vw - 24px)}.nep-toast{font-size:12px;padding:8px 14px}.nep-form-row{flex-direction:column}.nep-modal{border-radius:16px}.nep-modal-header{padding:18px 18px 10px}.nep-modal-body{padding:16px 18px 20px}.nep-modal-title{font-size:19px}}@media (max-width:480px){.nep-brand-name{display:none}.nep-brand{padding:10px}.nep-style-switcher{padding:4px}.nep-style-btn{width:30px;height:30px;font-size:16px}.nep-bottom-sheet{right:64px;padding:12px 14px 14px}.nep-fab{bottom:16px;right:10px;padding:11px 14px}.nep-fab-icon{font-size:16px}.nep-vessel-actions,.nep-voyage-actions{flex-direction:column;align-items:stretch}.nep-vessel-actions .nep-btn,.nep-voyage-actions .nep-btn{width:100%;text-align:center}}@media (max-width:900px) and (orientation:landscape) and (max-height:500px){.nep-active-vessel,.nep-instruction{display:none}.nep-topbar{top:8px}}.nep-root{height:100vh;height:100dvh}