:root{color-scheme:light;--bg-root: #f1f5f9;--bg-surface: #ffffff;--bg-surface-elevated: #e2e8f0;--border-subtle: #cbd5e1;--border-strong: #94a3b8;--text-primary: #0f172a;--text-secondary: #334155;--text-muted: #475569;--accent: #0284c7;--accent-strong: #0369a1;--zone-far: #dc2626;--zone-approaching: #d97706;--zone-reached: #059669;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg-root);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overscroll-behavior-y:contain}button,input{font:inherit;color:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.tabular-nums{font-variant-numeric:tabular-nums}.shrink-0{flex-shrink:0}.icon-xs{width:16px;height:16px}.icon-sm{width:18px;height:18px}.icon-md{width:22px;height:22px}.app-shell{min-height:100dvh;max-width:600px;margin:0 auto;display:flex;flex-direction:column;background:var(--bg-root)}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:#f1f5f9f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border-subtle)}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-icon{width:28px;height:28px;color:var(--accent);flex-shrink:0}.brand h1{margin:0;font-size:1rem;font-weight:800;letter-spacing:-.01em;line-height:1.15}.brand-sub{display:block;font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.header-file-chip{max-width:44%;padding:6px 10px;border-radius:999px;border:1px solid var(--border-strong);background:var(--bg-surface);color:var(--accent-strong);font-size:.75rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.app-main{flex:1;padding:14px 16px calc(86px + env(safe-area-inset-bottom))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 16px;border-radius:12px;border:1px solid transparent;font-weight:700;font-size:.92rem;cursor:pointer;transition:transform .08s ease,background-color .15s ease;touch-action:manipulation}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-sm{min-height:38px;padding:7px 12px;font-size:.84rem}.btn-xs{min-height:32px;padding:4px 10px;font-size:.78rem;border-radius:8px}.btn-primary{background:var(--zone-reached);color:#fff}.btn-accent{background:var(--accent);color:#fff}.btn-secondary{background:var(--bg-surface);border-color:var(--border-strong);color:var(--text-primary)}.btn-ghost{background:transparent;border-color:var(--border-subtle);color:var(--text-secondary)}.status-strip{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.pill{padding:4px 9px;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.04em;border:1px solid var(--border-subtle);background:var(--bg-surface)}.pill-ok,.pill-gps-ok{color:#065f46;border-color:#05966973;background:#ecfdf5}.pill-wait,.pill-gps-wait{color:#92400e;border-color:#d9770673;background:#fffbeb}.pill-gps-err{color:#991b1b;border-color:#dc262673;background:#fef2f2}.pill-muted{color:var(--text-secondary)}@keyframes pulseFlash{0%,to{box-shadow:0 0 #05966973;border-color:#059669}50%{box-shadow:0 0 22px 2px #05966959;border-color:#10b981}}.target-reached-banner{display:flex;flex-direction:column;gap:10px;padding:14px;margin-bottom:12px;border-radius:14px;background:#ecfdf5;border:2px solid #059669;color:#064e3b;animation:pulseFlash 1.2s ease-in-out infinite}.banner-title-row{display:flex;align-items:center;gap:8px;font-size:1rem;font-weight:800}.banner-sub{margin:4px 0 0;font-size:.88rem;color:#065f46}.banner-actions{display:flex;flex-wrap:wrap;gap:8px}.warning-banner{display:flex;align-items:center;gap:10px;padding:12px;margin-bottom:12px;border-radius:12px;background:#fffbeb;border:1.5px solid var(--zone-approaching);color:#78350f}.warning-text{flex:1;display:flex;flex-direction:column;gap:2px;font-size:.84rem}.permission-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin-bottom:12px;border-radius:12px;background:#e0f2fe;border:1.5px solid var(--accent)}.permission-card p{margin:3px 0 0;font-size:.82rem;color:var(--text-secondary)}.active-target-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;background:var(--bg-surface);border:1px solid var(--border-subtle);margin-bottom:14px;box-shadow:0 1px 2px #0f172a0a}.target-title-block{min-width:0}.target-eyebrow{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:.72rem;font-weight:700;color:var(--accent-strong);letter-spacing:.06em}.target-name{margin:4px 0 0;font-size:1.2rem;font-weight:800;line-height:1.2}.target-desc{margin:4px 0 0;font-size:.84rem;color:var(--text-secondary)}.compass-stage{position:relative;width:min(86vw,340px);height:min(86vw,340px);margin:0 auto 14px}.compass-svg{width:100%;height:100%;display:block}.distance-ring{transition:stroke .25s ease}.ring-far{stroke:var(--zone-far)}.ring-approaching{stroke:var(--zone-approaching)}.ring-reached{stroke:var(--zone-reached)}.rose-label{fill:var(--text-secondary);font-size:15px;font-weight:800}.rose-north{fill:#dc2626;font-size:17px}.target-arrow{transition:fill .25s ease}.arrow-far{fill:#dc2626}.arrow-approaching{fill:#d97706}.arrow-reached{fill:#059669}.compass-center-readout{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center;padding:20px}.zone-chip{font-size:.62rem;font-weight:800;letter-spacing:.08em;padding:2px 7px;border-radius:999px;margin-bottom:2px}.zone-chip-far{color:#991b1b;background:#fee2e2}.zone-chip-approaching{color:#92400e;background:#fef3c7}.zone-chip-reached{color:#065f46;background:#d1fae5}.distance-main{display:flex;align-items:baseline;justify-content:center;gap:3px;line-height:1.05}.distance-number{font-size:2.1rem;font-weight:900;letter-spacing:-.02em;color:var(--text-primary)}.distance-unit{font-size:1rem;font-weight:700;color:var(--text-secondary)}.bearing-sub{margin-top:4px;font-size:.85rem;font-weight:700;color:var(--accent-strong)}.telemetry-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:12px}.telemetry-cell{padding:10px 12px;border-radius:12px;background:var(--bg-surface);border:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:3px}.telemetry-wide{grid-column:span 2}.telemetry-label{font-size:.68rem;font-weight:700;color:var(--text-muted);letter-spacing:.06em}.telemetry-value{font-size:1.05rem;font-weight:800}.telemetry-value-mono{font-family:var(--font-mono);font-size:.9rem;font-weight:700;color:var(--text-primary)}.quick-controls-card{padding:12px 14px;border-radius:14px;background:var(--bg-surface);border:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:12px}.declination-row{display:flex;flex-direction:column;gap:8px}.declination-header{display:flex;align-items:center;justify-content:space-between;font-size:.86rem}.field-slider{width:100%;height:28px;accent-color:var(--accent);cursor:pointer}.quick-action-row{display:flex;flex-wrap:wrap;gap:8px}.panel-container{display:flex;flex-direction:column;gap:12px}.panel-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.panel-title{margin:0;font-size:1.15rem;font-weight:800}.panel-subtitle{margin:3px 0 0;font-size:.82rem;color:var(--text-muted)}.search-bar-wrap{display:flex;align-items:center;gap:8px;padding:4px 12px;min-height:48px;border-radius:12px;background:var(--bg-surface);border:1.5px solid var(--border-strong)}.search-icon{width:18px;height:18px;color:var(--text-muted);flex-shrink:0}.search-input{flex:1;min-width:0;border:none;background:transparent;color:var(--text-primary);font-size:.95rem;outline:none}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}.checkbox-pill{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;color:var(--text-secondary);cursor:pointer}.checkbox-pill input{width:18px;height:18px;accent-color:var(--accent)}.waypoint-list,.file-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.waypoint-card,.file-card{display:flex;align-items:stretch;border-radius:14px;background:var(--bg-surface);border:1.5px solid var(--border-subtle);overflow:hidden}.waypoint-active,.file-card-active{border-color:var(--accent);background:#f0f9ff}.waypoint-visited{opacity:.72}.waypoint-main-btn,.file-select-btn{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:transparent;border:none;text-align:left;cursor:pointer}.file-select-btn{flex-direction:column;align-items:flex-start;gap:6px}.waypoint-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:3px}.waypoint-name-row,.file-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.waypoint-name,.file-name{font-size:.98rem;font-weight:700;word-break:break-word}.waypoint-desc{margin:0;font-size:.82rem;color:var(--text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.waypoint-coords{font-family:var(--font-mono);font-size:.74rem;color:var(--text-muted)}.waypoint-metrics{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}.dist-badge{padding:4px 8px;border-radius:8px;font-size:.85rem;font-weight:800}.dist-far{background:#fee2e2;color:#991b1b}.dist-approaching{background:#fef3c7;color:#92400e}.dist-reached{background:#d1fae5;color:#065f46}.bearing-badge{font-size:.76rem;font-weight:700;color:var(--text-secondary)}.visit-toggle-btn,.delete-file-btn{width:52px;border:none;border-left:1px solid var(--border-subtle);background:transparent;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer}.visit-toggle-btn.is-visited{color:var(--zone-reached);background:#ecfdf5}.delete-file-btn:hover{color:#dc2626}.badge-active,.badge-visited,.file-type-tag{padding:2px 7px;border-radius:6px;font-size:.68rem;font-weight:800;letter-spacing:.04em}.badge-active{background:var(--accent);color:#fff}.badge-visited{background:#d1fae5;color:#065f46}.file-type-tag{background:var(--bg-surface-elevated);border:1px solid var(--border-strong);color:var(--text-secondary)}.file-meta{display:flex;flex-wrap:wrap;gap:6px;font-size:.8rem;color:var(--text-muted)}.upload-zone{padding:24px 16px;border-radius:16px;border:2px dashed var(--border-strong);background:var(--bg-surface);text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}.upload-zone-drag{border-color:var(--accent);background:#f0f9ff}.upload-hero-icon{width:36px;height:36px;color:var(--accent)}.upload-zone h3{margin:0;font-size:1.05rem}.upload-zone p{margin:0;font-size:.84rem;color:var(--text-muted)}.upload-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:8px}.section-label{margin:4px 0 8px;font-size:.82rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.empty-state-card{padding:28px 18px;border-radius:16px;background:var(--bg-surface);border:1px solid var(--border-subtle);text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.empty-icon{width:44px;height:44px;color:var(--accent)}.empty-state-card h2{margin:0;font-size:1.12rem}.empty-state-card p{margin:0;font-size:.88rem;color:var(--text-secondary);max-width:34ch}.settings-card{padding:14px;border-radius:14px;background:var(--bg-surface);border:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:12px}.settings-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.settings-card-title{margin:0;font-size:.98rem;font-weight:800}.settings-help{margin:2px 0 0;font-size:.82rem;color:var(--text-muted)}.preset-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.preset-btn{min-height:44px;border-radius:10px;border:1.5px solid var(--border-strong);background:var(--bg-root);font-weight:800;cursor:pointer}.preset-active{background:var(--accent);border-color:var(--accent);color:#fff}.custom-threshold-row{display:flex;gap:8px}.text-input{flex:1;min-width:0;min-height:44px;padding:8px 12px;border-radius:10px;border:1.5px solid var(--border-strong);background:var(--bg-root);color:var(--text-primary)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:6px;border-top:1px solid var(--border-subtle)}.setting-row:first-of-type{border-top:none;padding-top:0}.toggle-switch{position:relative;width:52px;height:30px;border-radius:999px;border:1px solid var(--border-strong);background:#cbd5e1;padding:2px;cursor:pointer;flex-shrink:0;transition:background-color .15s ease}.toggle-on{background:var(--zone-reached);border-color:var(--zone-reached)}.toggle-thumb{display:block;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0f172a40;transition:transform .15s ease}.toggle-on .toggle-thumb{transform:translate(22px)}.diag-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.diag-item{padding:8px 10px;border-radius:10px;background:var(--bg-root);border:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:2px;font-size:.78rem}.diag-item span{color:var(--text-muted)}.diag-actions{display:flex;flex-wrap:wrap;gap:8px}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:600px;z-index:30;display:grid;grid-template-columns:repeat(4,1fr);background:#fffffff5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border-subtle);padding-bottom:env(safe-area-inset-bottom)}.nav-tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:60px;padding:8px 4px;background:transparent;border:none;color:var(--text-muted);font-size:.72rem;font-weight:700;cursor:pointer}.nav-tab-active{color:var(--accent-strong)}.nav-icon{width:22px;height:22px}
