@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--bg-deep: #050810;--bg-base: #080d1a;--bg-surface: rgba(10, 15, 32, .94);--bg-card: rgba(16, 24, 48, .88);--bg-card-hover: rgba(22, 34, 66, .95);--bg-input: rgba(8, 12, 28, .95);--accent-primary: #3b82f6;--accent-secondary: #8b5cf6;--accent-success: #10b981;--accent-warning: #f59e0b;--accent-danger: #ef4444;--accent-cyan: #06b6d4;--accent-gold: #fbbf24;--accent-glow: rgba(59, 130, 246, .4);--accent-glow-strong: rgba(59, 130, 246, .7);--text-primary: #f0f4ff;--text-secondary: #8b9dc4;--text-muted: #526084;--text-mono: #38bdf8;--border-subtle: rgba(59, 130, 246, .15);--border-active: rgba(59, 130, 246, .45);--border-glow: rgba(59, 130, 246, .75);--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-card: 0 4px 24px rgba(0, 0, 0, .4), 0 0 0 1px var(--border-subtle);--shadow-glow: 0 0 30px var(--accent-glow), 0 4px 24px rgba(0, 0, 0, .5);--sidebar-width: 360px;--header-height: 64px;--status-height: 38px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-smooth: .3s cubic-bezier(.4, 0, .2, 1)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;background:var(--bg-deep);color:var(--text-primary);-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-active);border-radius:2px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at center,#0a143cf7,#050810fc);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:0;pointer-events:none;transition:opacity var(--transition-smooth)}.modal-overlay.active{opacity:1;pointer-events:all}.modal-card{width:100%;max-width:480px;margin:20px;background:#0c1228f2;border:1px solid var(--border-active);border-radius:var(--radius-xl);padding:48px 40px;text-align:center;box-shadow:0 0 80px #3b82f626,0 20px 60px #0009;animation:modalSlideIn .5s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-icon{width:64px;height:64px;margin:0 auto 24px;border-radius:50%;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));display:flex;align-items:center;justify-content:center;box-shadow:0 0 30px var(--accent-glow-strong)}.modal-icon svg{width:28px;height:28px;color:#fff}.modal-card h1{font-size:28px;font-weight:800;background:linear-gradient(135deg,#fff 0%,var(--text-mono) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:6px}.modal-subtitle{font-size:13px;color:var(--text-secondary);font-weight:500;letter-spacing:2px;text-transform:uppercase;margin-bottom:20px}.modal-desc{font-size:14px;color:var(--text-secondary);line-height:1.6;margin-bottom:28px}.modal-desc a{color:var(--accent-primary);text-decoration:none}.input-group{text-align:left;margin-bottom:20px}.input-group label{display:block;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;margin-bottom:8px}.input-wrapper{position:relative;display:flex;align-items:center}.input-wrapper input{width:100%;padding:14px 48px 14px 16px;background:var(--bg-input);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-primary);font-family:JetBrains Mono,monospace;font-size:13px;outline:none}.input-wrapper input:focus{border-color:var(--border-active);box-shadow:0 0 0 3px var(--accent-glow)}.icon-btn{position:absolute;right:12px;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px}.primary-btn{width:100%;padding:16px 24px;background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));border:none;border-radius:var(--radius-md);color:#fff;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 4px 20px #3b82f666;margin-bottom:16px;transition:transform var(--transition-fast)}.primary-btn:hover{transform:translateY(-2px)}.hidden{display:none!important}#app{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.app-header{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#080d1cf2;border-bottom:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:100;flex-shrink:0;gap:8px}.header-left,.header-right,.logo{display:flex;align-items:center;gap:8px}.logo-pulse{width:10px;height:10px;border-radius:50%;background:var(--accent-primary);animation:logoPulse 2s ease-in-out infinite}@keyframes logoPulse{0%,to{box-shadow:0 0 0 0 var(--accent-glow-strong)}50%{box-shadow:0 0 0 6px transparent}}.logo-text{font-size:15px;font-weight:800;background:linear-gradient(90deg,var(--text-primary),var(--text-mono));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.accuracy-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:100px;background:#3b82f61a;border:1px solid var(--border-subtle);font-size:11px;font-weight:600;color:var(--text-secondary)}.accuracy-badge.good{background:#10b98126;border-color:#10b98166;color:var(--accent-success)}.accuracy-badge.fair{background:#f59e0b26;border-color:#f59e0b66;color:var(--accent-warning)}.accuracy-badge.poor{background:#ef444426;border-color:#ef444466;color:var(--accent-danger)}.badge-dot{width:7px;height:7px;border-radius:50%;background:currentColor}.lock-indicator{padding:4px 10px;border-radius:100px;background:#10b9811f;border:1px solid rgba(16,185,129,.35);font-size:10px;font-weight:700;color:#34d399;letter-spacing:.5px}.basemap-selector{display:flex;align-items:center;gap:3px;padding:3px;background:#050814b3;border:1px solid var(--border-subtle);border-radius:100px}.basemap-btn{display:flex;align-items:center;gap:4px;padding:5px 10px;background:transparent;border:none;border-radius:100px;color:var(--text-secondary);font-size:11px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.basemap-btn.active{background:linear-gradient(135deg,var(--accent-primary),#2563eb);color:#fff;box-shadow:0 2px 8px #3b82f666}.calibrate-btn{background:linear-gradient(135deg,#f59e0b40,#d9770640)!important;border:1px solid #fbbf24!important;color:#fbbf24!important;font-weight:700!important;box-shadow:0 0 15px #fbbf244d!important}.calibrate-btn:hover,.calibrate-btn.active{background:linear-gradient(135deg,#f59e0b,#d97706)!important;color:#050810!important;box-shadow:0 0 25px #fbbf24b3!important}.icon-action-btn{display:flex;align-items:center;gap:5px;padding:6px 12px;background:#ffffff0d;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.icon-action-btn:hover{background:#3b82f626;border-color:var(--border-active);color:var(--text-primary)}.icon-action-btn.active{background:#3b82f640;border-color:var(--border-glow);color:#60a5fa;box-shadow:0 0 12px #3b82f64d}.icon-action-btn.danger:hover{background:#ef444426;border-color:#ef444466;color:var(--accent-danger)}.icon-action-btn.info:hover{background:#a855f726;border-color:#a855f766;color:#c084fc}.calibration-banner{position:absolute;top:var(--header-height);left:0;right:var(--sidebar-width);z-index:90;background:linear-gradient(90deg,#f59e0bf2,#d97706f2);color:#050810;padding:10px 16px;box-shadow:0 4px 20px #f59e0b66;animation:bannerSlide .3s ease-out}@keyframes bannerSlide{0%{transform:translateY(-100%)}to{transform:translateY(0)}}.cal-banner-content{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.cal-banner-text strong{color:#000}.cal-cancel-btn{padding:4px 10px;background:#0003;border:1px solid rgba(0,0,0,.3);border-radius:6px;color:#000;font-weight:700;cursor:pointer}.cal-reset-btn{padding:4px 10px;background:#ffffffe6;border:none;border-radius:6px;color:#92400e;font-weight:700;cursor:pointer}.map-container{flex:1;position:relative;margin-right:var(--sidebar-width);transition:margin-right var(--transition-smooth)}.map-container.full-width{margin-right:0}#map-view{position:absolute;top:0;right:0;bottom:0;left:0}.quick-map-controls{position:absolute;bottom:24px;right:24px;display:flex;flex-direction:column;gap:8px;z-index:40}.quick-btn{width:44px;height:44px;border-radius:12px;background:#0a0f20d9;border:1px solid var(--border-active);color:var(--text-primary);font-size:20px;font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 4px 16px #0006}.quick-btn.fab-gps{background:linear-gradient(135deg,var(--accent-primary),var(--accent-secondary));color:#fff;border:none;box-shadow:0 4px 20px #3b82f680}.sidebar{position:fixed;right:0;top:var(--header-height);bottom:var(--status-height);width:var(--sidebar-width);background:var(--bg-surface);border-left:1px solid var(--border-subtle);overflow-y:auto;overflow-x:hidden;padding:16px;display:flex;flex-direction:column;gap:12px;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:transform var(--transition-smooth);z-index:50}.sidebar.collapsed{transform:translate(100%)}.sidebar-toggle{position:absolute;left:-28px;top:50%;transform:translateY(-50%);width:28px;height:52px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-right:none;border-radius:8px 0 0 8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted)}.sidebar.collapsed .sidebar-toggle svg{transform:rotate(180deg)}.card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px;box-shadow:var(--shadow-card)}.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.card-title-row{display:flex;align-items:center;gap:8px}.card-icon{color:var(--accent-primary);flex-shrink:0}.card-title{font-size:13px;font-weight:700;color:var(--text-primary)}.live-indicator{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:var(--accent-success)}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-success)}.coord-display{background:#050814bf;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px;margin-bottom:12px}.coord-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0}.coord-label{font-size:11px;font-weight:700;letter-spacing:2px;color:var(--text-muted)}.coord-value{font-family:JetBrains Mono,monospace;font-size:16px;font-weight:700;color:var(--text-mono)}.coord-divider{height:1px;background:var(--border-subtle);margin:4px 0}.gps-accuracy-meter{background:#05081499;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:12px;margin-bottom:12px}.meter-header{display:flex;justify-content:space-between;font-size:11px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}.meter-val{font-family:JetBrains Mono,monospace;color:var(--accent-success);font-weight:700}.accuracy-gauge{height:6px;background:#ffffff14;border-radius:4px;overflow:hidden;margin-bottom:6px}.gauge-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--accent-danger),var(--accent-warning),var(--accent-success));border-radius:4px;transition:width .4s ease}.meter-ticks{display:flex;justify-content:space-between;font-size:9px;color:var(--text-muted);font-family:JetBrains Mono,monospace}.cal-offset-info{background:#f59e0b1f;border:1px solid rgba(245,158,11,.35);border-radius:var(--radius-sm);padding:8px 12px;font-size:12px;color:#fbbf24;margin-bottom:12px}.copy-btn-wrapper{display:flex;gap:8px}.copy-btn,.share-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.copy-btn{background:#3b82f61a;border:1px solid var(--border-active);color:var(--accent-primary)}.share-btn{background:#10b9811f;border:1px solid rgba(16,185,129,.35);color:var(--accent-success)}.address-text{font-size:13px;line-height:1.5;color:var(--text-primary);margin-bottom:10px;font-weight:500;min-height:38px}.address-parts{display:flex;flex-wrap:wrap;gap:6px}.address-tag{padding:3px 10px;background:#3b82f614;border:1px solid var(--border-subtle);border-radius:100px;font-size:11px;color:var(--text-secondary);display:none}.address-tag:not(:empty){display:inline-block}.mini-spinner{width:14px;height:14px;border:2px solid var(--border-subtle);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px 12px;display:flex;flex-direction:column;gap:8px}.stat-icon{width:32px;height:32px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.accuracy-icon{background:#10b98126;color:var(--accent-success)}.altitude-icon{background:#8b5cf626;color:var(--accent-secondary)}.speed-icon{background:#f59e0b26;color:var(--accent-warning)}.heading-icon{background:#06b6d426;color:var(--accent-cyan)}.stat-info{display:flex;flex-direction:column;gap:2px}.stat-label{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase}.stat-value{font-family:JetBrains Mono,monospace;font-size:15px;font-weight:600;color:var(--text-primary)}.compass-mini{width:28px;height:28px;border-radius:50%;border:1px solid var(--border-subtle);position:relative;display:flex;align-items:center;justify-content:center;background:#05081480}.needle{width:2px;height:20px;position:absolute;top:50%;left:50%;transform-origin:center bottom;transform:translate(-50%) translateY(-100%) rotate(0);background:linear-gradient(to bottom,var(--accent-danger) 50%,var(--accent-primary) 50%);border-radius:1px}.log-entries{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow-y:auto}.log-entry{display:flex;gap:8px;align-items:flex-start;padding:6px 8px;border-radius:var(--radius-sm);font-size:11px}.log-entry.log-info{background:#3b82f60f}.icon-action-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.icon-action-btn:active{background:#ffffff1a;transform:scale(.95)}.icon-action-btn.danger:hover{background:#ef444426;color:var(--accent-danger);border-color:#ef44444d}.icon-action-btn.active{background:var(--accent-primary);color:#fff;border-color:var(--accent-primary);box-shadow:0 0 15px var(--accent-glow-strong)}.track-path-btn{border-color:#ef444480;color:#f87171;font-weight:600;box-shadow:0 0 10px #ef444433}.track-path-btn:hover{background:#ef44441a}.track-path-btn.recording{background:#ef4444;color:#fff;border-color:#ef4444;box-shadow:0 0 15px #ef444499;animation:pulse-red 2s infinite}@keyframes pulse-red{0%{box-shadow:0 0 #ef4444b3}70%{box-shadow:0 0 0 10px #ef444400}to{box-shadow:0 0 #ef444400}}.calibrate-btn{border-color:var(--accent-glow-strong)}.calibrate-btn.active{background:var(--accent-glow-strong);color:#0f172a}.log-entry.log-ok{background:#10b9810f}.log-entry.log-warn{background:#f59e0b0f}.log-entry.log-error{background:#ef44440f}.log-time{font-family:JetBrains Mono,monospace;font-size:10px;color:var(--text-muted)}.log-msg{color:var(--text-secondary);line-height:1.4}.log-entry.log-ok .log-msg{color:var(--accent-success)}.log-entry.log-warn .log-msg{color:var(--accent-warning)}.log-entry.log-error .log-msg{color:var(--accent-danger)}.status-bar{height:var(--status-height);display:flex;align-items:center;gap:20px;padding:0 16px;background:#050810f2;border-top:1px solid var(--border-subtle);z-index:100;flex-shrink:0;position:fixed;bottom:0;left:0;right:0}.status-item{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text-muted);font-weight:500}.status-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted)}.status-dot.active{background:var(--accent-success)}.status-dot.error{background:var(--accent-danger)}.kalman-badge{margin-left:auto;padding:3px 10px;background:#10b9811f;border:1px solid rgba(16,185,129,.3);border-radius:100px;color:var(--accent-success);font-size:10px;font-weight:700}.latency-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:16px}.latency-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.latency-item{background:#ffffff08;border:1px solid rgba(255,255,255,.06);border-radius:var(--radius-sm);padding:8px 10px;display:flex;flex-direction:column;gap:3px}.latency-item .l-label{font-size:10px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.latency-item .l-val{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:700;color:var(--text-primary)}.latency-item .l-val.highlight{color:var(--accent-success)}@media (max-width: 900px){:root{--sidebar-width: 100vw;--header-height: 56px}.app-header{padding:0 8px}.logo-text,.lock-indicator,.basemap-btn span.btn-label{display:none}.basemap-btn{padding:5px 6px}.calibrate-btn span:not(.cal-icon){display:none}.icon-action-btn span{display:none}.icon-action-btn{padding:6px 8px}.calibration-banner{right:0}.map-container{margin-right:0;height:calc(100vh - var(--header-height) - var(--status-height) - 230px)}.sidebar{top:auto;bottom:var(--status-height);height:230px;width:100%;border-left:none;border-top:1px solid var(--border-subtle)}.sidebar-toggle{display:none}.status-bar{gap:8px}.kalman-badge{display:none}}
