:root{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#e8eef0;background:#0b1822;font-synthesis:none;text-rendering:optimizeLegibility;--bg:#0b1822;--panel:#11232e;--border:#233b47;--muted:#89a0aa;--mint:#66d7b1;--mono:ui-monospace,SFMono-Regular,Consolas,monospace}*{box-sizing:border-box}body{margin:0;min-width:320px;background:radial-gradient(ellipse at 74% 3%,#15323b 0,transparent 36%),var(--bg)}button,input{font:inherit}.topbar{height:68px;border-bottom:1px solid #203541;display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100vw - 1200px)/2),32px);letter-spacing:.13em;font-size:11px}.brand{display:flex;align-items:center;gap:10px;color:#e8eef0;text-decoration:none;font-weight:700}.brand-mark{background:var(--mint);color:#082018;border-radius:6px;width:25px;height:25px;display:grid;place-items:center;font:800 16px ui-sans-serif,system-ui,sans-serif}.topbar-note{font:10px var(--mono);color:#8199a4}main{max-width:1200px;margin:0 auto;padding:0 32px}.intro{padding:61px 0 35px;max-width:690px}.eyebrow,.step{font:500 10px var(--mono);letter-spacing:.13em;color:var(--mint)}.eyebrow{display:flex;align-items:center;gap:9px}.status-dot{width:7px;height:7px;background:var(--mint);border-radius:50%;box-shadow:0 0 12px #66d7b188}h1{font:700 clamp(38px,5vw,58px)/1.07 ui-sans-serif,system-ui,sans-serif;letter-spacing:-.05em;margin:19px 0 14px}h1 em{font-style:normal;color:var(--mint)}.intro-copy{max-width:515px;color:#9eb0b6;font-size:15px;line-height:1.6;margin:0}.panel{background:linear-gradient(145deg,#132732,#10212c);border:1px solid var(--border);border-radius:12px}.setup{padding:25px 28px 17px}.panel-heading,.panel-heading>div,.results-heading>div,.section-title,.section-title>div{display:flex;align-items:center}.panel-heading,.results-heading,.section-title{justify-content:space-between}.panel-heading>div,.results-heading>div,.section-title>div{gap:13px}h2,h3{font-family:ui-sans-serif,system-ui,sans-serif;margin:0;font-weight:600;letter-spacing:-.025em}h2{font-size:19px}h3{font-size:17px}.local-badge{font:9px var(--mono);color:#829ba4;letter-spacing:.08em;border:1px solid #34505b;padding:7px 9px;border-radius:4px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:23px;margin-top:24px}.upload-box{min-height:258px;border:1px dashed #3e606a;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;background:#0e202a;transition:.2s}.upload-box:hover,.upload-box.dragging,.upload-box.has-file{border-color:var(--mint);background:#122c32}.upload-box input{display:none}.upload-icon{width:44px;height:44px;border:1px solid #41626c;border-radius:50%;display:grid;place-items:center;font-size:24px;color:var(--mint);margin-bottom:15px}.upload-title{font-size:14px;font-weight:600}.upload-hint{margin-top:7px;font-size:12px;color:#8499a1}.settings{display:flex;flex-direction:column;gap:15px}.field{display:flex;flex-direction:column;gap:8px;color:#93a9b0;font:10px var(--mono);letter-spacing:.05em}.field>span{display:flex;justify-content:space-between;align-items:center}.field>span small{color:#627e88;font-size:9px}.wind-field{padding:0 0 13px;border-bottom:1px solid #29414b}.input-wrap{height:39px;border:1px solid #35515d;background:#0c1c25;border-radius:5px;display:flex;align-items:center;padding:0 11px}.input-wrap:focus-within{border-color:var(--mint)}.input-wrap input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:#edf4f3;font:15px var(--mono)}.input-wrap input::-webkit-inner-spin-button{-webkit-appearance:none}.input-wrap b{white-space:nowrap;color:#82a0a9;font:11px var(--mono)}.field-hint{font:10px DM Sans,sans-serif;letter-spacing:0;color:#718993}.advanced{display:grid;grid-template-columns:1fr 1fr;gap:12px}.advanced .input-wrap{height:34px}.advanced .input-wrap input{font-size:12px}.analyze-button{height:44px;margin-top:auto;border:0;border-radius:5px;background:var(--mint);color:#082018;font-weight:700;cursor:pointer;transition:.2s}.analyze-button:hover:not(:disabled){background:#81e7c5;transform:translateY(-1px)}.analyze-button:disabled{opacity:.42;cursor:not-allowed}.analyze-button span:last-child{float:right;margin-right:15px;font-size:18px;line-height:17px}.privacy-note{color:#8299a1;font-size:10px;margin:16px 0 0}.privacy-note span{color:var(--mint);margin-right:5px}.wind-source{min-height:60px;display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #29444d;border-radius:6px;background:#0d2028}.wind-source-icon{display:grid;place-items:center;flex:0 0 34px;height:34px;border-radius:50%;background:#173830;color:var(--mint);font-size:20px}.wind-source strong,.wind-source small{display:block}.wind-source strong{font-size:12px;color:#dfe9e8}.wind-source small{font-size:10px;color:#8099a1;margin-top:4px;line-height:1.4}.wind-source-badge{margin-left:auto;color:#7e9ba3;font:8px var(--mono);letter-spacing:.07em}.form-error{color:#ff918b;font-size:12px;margin:0;min-height:0}.form-error:not(:empty){min-height:16px}.results{padding-top:56px;scroll-margin-top:24px}.results-heading{margin-bottom:18px}.results-heading p{margin:5px 0 0 33px;color:#849ba4;font-size:12px}.reset-button,.download-button{border:1px solid #36515c;background:transparent;color:#c0d0d3;border-radius:5px;cursor:pointer}.reset-button{padding:9px 13px;font-size:12px}.reset-button:hover,.download-button:hover{border-color:var(--mint);color:var(--mint)}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.metric{padding:17px 18px;background:#10232d;border:1px solid #263d48;border-radius:8px}.metric span,.metric small{display:block;color:#89a0a8;font:9px var(--mono);letter-spacing:.08em}.metric strong{display:block;font:700 29px ui-sans-serif,system-ui,sans-serif;margin:10px 0 3px;color:#eaf1f1}.metric small{font:10px DM Sans,sans-serif;letter-spacing:0;color:#839aa3}.content-grid{display:grid;grid-template-columns:1.65fr 1fr;gap:14px;margin-bottom:14px}.map-panel,.summary-panel,.table-panel{padding:20px}.section-title{margin-bottom:17px}.section-title>div{align-items:flex-start;flex-direction:column;gap:5px}.section-title .step{color:#6b8893;font-size:9px}.download-button{font-size:11px;padding:8px 10px}.map-wrap{position:relative;background:#0b1a23;border:1px solid #233b46;border-radius:7px;overflow:hidden}#track-map{display:block;width:100%;height:520px;min-height:0;background:#d7e0e1}.leaflet-container{font-family:ui-sans-serif,system-ui,sans-serif}.leaflet-control-zoom a{background:#10232d!important;color:#e8eef0!important;border-color:#46616a!important}.leaflet-control-zoom a:hover{background:#193640!important;color:var(--mint)!important}.leaflet-control-attribution{font-size:9px!important;background:#0c1a23c2!important;color:#bdcacc!important}.leaflet-control-attribution a{color:#8edbc4!important}.leaflet-control-scale-line{background:#0c1a23c7!important;border-color:#dbe5e3!important;color:#eef3f1!important;text-shadow:none!important}.maneuver-tooltip{background:#10212c!important;border:1px solid #50717c!important;color:#f0f5f3!important;box-shadow:0 2px 6px #0006!important;font:10px var(--mono)!important}.maneuver-tooltip:before{border-right-color:#50717c!important}.endpoint-tooltip{background:#10212c!important;border:1px solid #50717c!important;color:#f0f5f3!important;font:9px var(--mono)!important}.endpoint-tooltip:before{border-right-color:#50717c!important}.stop-marker{background:transparent;border:0}.stop-marker span{display:block;width:11px;height:11px;background:#ffb454;border:2px solid #10212c;border-radius:2px}.finish-marker{background:transparent;border:0}.finish-marker span{display:block;width:12px;height:12px;background:#f3f6f7;border:2px solid #10212c}.wind-compass{width:104px;min-height:107px;margin:10px 10px 0 0;padding:7px;border:1px solid #38535e;border-radius:8px;background:#0c1a23e0;color:#eaf1f0;display:flex;align-items:center;flex-direction:column;gap:2px;box-shadow:0 2px 8px #0005}.wind-compass strong{font:10px var(--mono);color:#a7bbc0}.wind-compass span{height:44px;color:#f3f6f7;font-size:39px;line-height:42px;transform-origin:50% 50%}.wind-compass small{font:8px var(--mono);white-space:nowrap;letter-spacing:.02em;color:#d4dfdf}.map-actions{display:flex;align-items:center;gap:9px}.map-layer-toggle{display:flex;border:1px solid #36515c;border-radius:5px;padding:2px;background:#0d2028}.map-layer-toggle button{border:0;background:transparent;color:#91a7ad;font-size:10px;padding:6px 9px;border-radius:3px;cursor:pointer}.map-layer-toggle button.active{background:#26433f;color:#78e1bb}.seamark-toggle{display:flex;align-items:center;gap:6px;color:#b9c9cb;font-size:10px;white-space:nowrap;cursor:pointer}.seamark-toggle input{accent-color:#66d7b1;margin:0}#map-export-status{font-size:9px;color:#ffb5a9;max-width:130px}.map-legend{display:flex;gap:16px;flex-wrap:wrap;padding-top:13px;color:#96aab0;font-size:10px}.map-legend span{display:flex;align-items:center;gap:6px}.legend-line{width:13px;border-top:2px solid #58c4c0}.legend-dot{width:8px;height:8px;border-radius:50%}.legend-dot.tack{background:#5adc9c}.legend-dot.jibe{background:#65b9ff}.legend-dot.failed{background:#ff706d}.legend-square{width:8px;height:8px;border-radius:1px;background:#ffb454}.speed-legend-title{font:9px var(--mono);letter-spacing:.06em;color:#bed0d1}.speed-swatch{display:inline-block;width:12px;height:6px;border-radius:3px;background:var(--speed-color)}.summary-panel{min-height:400px}.summary-row{display:flex;justify-content:space-between;align-items:flex-start;padding:15px 0;border-bottom:1px solid #263d48;color:#99abb0;font-size:12px}.summary-row b{text-align:right;color:#e8f0f0;font:600 16px ui-sans-serif,system-ui,sans-serif}.summary-row b small{display:block;color:#76919a;font:10px DM Sans,sans-serif;margin-top:3px}.wind-card{margin-top:20px;background:#0d2028;border:1px solid #27434b;border-radius:7px;padding:13px;display:flex;align-items:center;gap:12px}.weather-source{font-size:10px;line-height:1.5;color:#78919a;margin:13px 0 0}.wind-card>span{font:9px var(--mono);letter-spacing:.08em;color:#82a0a6}.wind-card strong{font:600 20px ui-sans-serif,system-ui,sans-serif;color:var(--mint)}.wind-card small{margin-left:auto;color:#829ba3;font-size:10px}.table-panel{margin-bottom:14px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th{text-align:left;color:#738e98;font:9px var(--mono);letter-spacing:.07em;padding:11px 12px;border-bottom:1px solid #2b424d}td{padding:12px;color:#bac9cb;font-size:11px;border-bottom:1px solid #203641}tbody tr:last-child td{border-bottom:0}.id-cell,.angle-cell{font-family:var(--mono);color:#e5efee}.outcome{font-size:10px;padding:4px 7px;border-radius:4px;background:#263a42;color:#adc0c2}.outcome.successful{color:#6de0ad;background:#143a33}.outcome.failed{color:#ff8c82;background:#452b30}.outcome.unknown{color:#d5c285;background:#3c3724}.empty-note{color:#849ba4;font-size:12px;padding:5px}.stops-panel{margin-bottom:12px}.caveat{color:#758e97;font-size:10px;line-height:1.6;margin:12px 2px 0}footer{border-top:1px solid #203541;margin-top:52px;padding:22px 0 28px;display:flex;justify-content:space-between;color:#67808a;font:9px var(--mono);letter-spacing:.08em}.spinner{display:inline-block;width:14px;height:14px;border:2px solid #17493d;border-top-color:transparent;border-radius:50%;vertical-align:middle;animation:spin .7s linear infinite;margin-right:8px}@keyframes spin{to{transform:rotate(360deg)}}[hidden]{display:none!important}@media(max-width:850px){.content-grid{grid-template-columns:1fr}.summary-panel{min-height:unset}.form-grid{grid-template-columns:1fr}.upload-box{min-height:185px}.metric-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){main{padding:0 16px}.topbar{padding:0 16px}.topbar-note{font-size:8px}.intro{padding:42px 0 27px}.setup{padding:19px 16px 15px}.panel-heading{align-items:flex-start;gap:12px}.local-badge{font-size:7px}.advanced{grid-template-columns:1fr 1fr}.metric-grid{gap:7px}.metric{padding:13px}.metric strong{font-size:24px}.metric small{font-size:9px}.map-panel,.summary-panel,.table-panel{padding:15px}.map-legend{gap:10px}#track-map{height:400px}.map-section-title{align-items:flex-start;gap:10px}.map-actions{gap:5px;flex-wrap:wrap;justify-content:flex-end}.map-layer-toggle button{padding:6px}.download-button{padding:7px;font-size:10px}footer{font-size:8px;gap:8px}.reset-button span{display:none}}.direction-arrow span{display:block;width:18px;height:18px;font-size:16px;line-height:18px;text-align:center;color:#fff;text-shadow:0 0 3px #000,0 0 3px #000,0 0 2px #000}
