*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Segoe UI',system-ui,sans-serif;background:#0a0e17;color:#e0e6ed;overflow:hidden;height:100vh;height:-webkit-fill-available;height:100dvh}
#file-protocol-warning{position:fixed;z-index:1000;left:12px;right:12px;top:12px;padding:12px 16px;border:1px solid #f59e0b;border-radius:9px;background:#451a03;color:#fef3c7;font:600 14px/1.4 'Segoe UI',system-ui,sans-serif;box-shadow:0 10px 28px rgba(0,0,0,.45)}
#file-protocol-warning a{color:#7dd3fc}
#app{display:flex;height:100vh;height:-webkit-fill-available;height:100dvh}
#sidebar{width:340px;background:#111827;border-right:1px solid #1f2937;display:flex;flex-direction:column;z-index:10;overflow-y:auto;overflow-x:hidden}
#sidebar header{padding:20px;border-bottom:1px solid #1f2937;background:linear-gradient(135deg,#1e3a5f,#111827)}
#sidebar header h1{font-size:1.4rem;color:#60a5fa;margin-bottom:6px;display:flex;align-items:center;gap:10px}
#sidebar header p{font-size:.82rem;color:#6b7280;line-height:1.4}
.panel{padding:16px 20px;border-bottom:1px solid #1f2937}
.panel h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#9ca3af;margin-bottom:12px;font-weight:600}
.btn-group{display:flex;flex-direction:column;gap:6px}
button{background:#1f2937;border:1px solid #374151;color:#d1d5db;padding:10px 14px;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .2s;display:flex;align-items:center;gap:8px;text-align:left}
button:hover{background:#374151;border-color:#4b5563;transform:translateX(2px)}
button.active{background:#2563eb;border-color:#3b82f6;color:white;box-shadow:0 0 12px rgba(37,99,235,.3)}
button .icon{font-size:1.1rem;width:20px;text-align:center}
.style-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.style-btn{padding:8px;font-size:.8rem;justify-content:center}
.terrain-renderer-control{margin-top:10px;padding:10px;background:#0f172a;border:1px solid #1f2937;border-radius:8px}
.terrain-renderer-label{font-size:.72rem;color:#9ca3af;margin-bottom:7px}
.terrain-renderer-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.terrain-renderer-btn{padding:7px 6px;font-size:.72rem;justify-content:center;white-space:nowrap}
.terrain-renderer-status{margin-top:7px;color:#6b7280;font-size:.66rem;line-height:1.35}
#info-panel{margin-top:auto;padding:16px 20px;background:#0f172a;border-top:1px solid #1f2937;font-size:.85rem;position:relative}
#info-panel .coord{font-family:'SF Mono','Courier New',monospace;color:#60a5fa;margin-bottom:8px;font-size:.8rem}
#info-panel .distance{color:#34d399;font-weight:600;font-size:.9rem}
#info-panel .azimuth{color:#fbbf24;font-size:.8rem;margin-top:4px}
#map-container{flex:1;position:relative;overflow:hidden;background:#0a0e17}
#map{position:absolute;top:0;left:0;width:100%;height:100%;cursor:grab;z-index:10;touch-action:none;-webkit-user-select:none;user-select:none}
#map:active{cursor:grabbing}
#map.measure-mode,#map.route-mode,#map.area-mode,#map.weather-mode,#map.observer-mode{cursor:crosshair}
.tooltip{position:absolute;background:rgba(15,23,42,.95);border:1px solid #374151;padding:8px 12px;border-radius:6px;font-size:.8rem;pointer-events:none;z-index:100;display:none;white-space:pre-line;box-shadow:0 4px 12px rgba(0,0,0,.5)}
.route-info,.area-info{position:absolute;top:20px;right:20px;background:rgba(15,23,42,.95);border:1px solid #1f2937;padding:16px;border-radius:10px;font-size:.85rem;z-index:50;max-width:300px;display:none;box-shadow:0 8px 24px rgba(0,0,0,.4);backdrop-filter:blur(10px)}
.route-info h4,.area-info h4{color:#60a5fa;margin-bottom:10px;font-size:.95rem;display:flex;align-items:center;gap:6px}
.route-point,.area-point{padding:5px 0;border-bottom:1px solid #1f2937;font-family:'SF Mono',monospace;font-size:.78rem;display:flex;justify-content:space-between}
.route-point span:first-child,.area-point span:first-child{color:#f59e0b;font-weight:600;margin-right:8px}
.route-segment,.area-segment{font-size:.7rem;color:#6b7280;padding-left:20px}
.route-total,.area-total{margin-top:10px;padding-top:10px;border-top:1px solid #374151;color:#34d399;font-weight:600;font-size:.95rem}
.source-badge{display:inline-block;padding:3px 10px;border-radius:12px;font-size:.7rem;background:#1f2937;border:1px solid #374151;margin-right:6px;margin-bottom:6px;color:#9ca3af}
.hint{font-size:.75rem;color:#6b7280;margin-top:8px;padding:8px;background:#0f172a;border-radius:6px;border-left:3px solid #2563eb}
.compass-rose{position:absolute;bottom:20px;left:20px;width:60px;height:60px;z-index:50;opacity:.7}
.error-box{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#1f2937;border:1px solid #ef4444;padding:20px;border-radius:8px;color:#ef4444;z-index:300;display:none;max-width:400px;text-align:center}
.weather-panel{position:absolute;top:20px;left:20px;background:rgba(15,23,42,.95);border:1px solid #1f2937;padding:16px;border-radius:10px;font-size:.85rem;z-index:50;max-width:320px;display:none;box-shadow:0 8px 24px rgba(0,0,0,.4);backdrop-filter:blur(10px)}
.weather-panel h4{color:#60a5fa;margin-bottom:10px;font-size:.95rem;display:flex;align-items:center;gap:6px}
.weather-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.weather-item{background:#1f2937;padding:8px 10px;border-radius:6px;font-size:.78rem}
.weather-item .label{color:#6b7280;font-size:.7rem;margin-bottom:2px}
.weather-item .value{color:#e0e6ed;font-weight:600}
.weather-status{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding:8px;background:#1f2937;border-radius:6px}
.weather-status .icon{font-size:1.5rem}
.weather-status .temp{font-size:1.3rem;font-weight:700;color:#fbbf24}
.weather-status .desc{font-size:.8rem;color:#9ca3af}
.weather-loading{color:#60a5fa;font-size:.85rem;text-align:center;padding:10px}
.weather-error{color:#ef4444;font-size:.8rem;text-align:center;padding:8px}
#wind-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:35}
#cloud-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:33}
#precip-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:34}
#satellite-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:36}
#currents-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:32}
#elevation-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:5}
#terrain-tiles-canvas,#terrain-tiles-back-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:6;opacity:1;will-change:transform}
#terrain-tiles-back-canvas{visibility:hidden}
#real-scale-raster-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:7;display:none}
#bathy-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:15}
.bathy-legend,.ice-legend{position:absolute;z-index:50;background:rgba(15,23,42,.9);border:1px solid #1f2937;padding:8px 12px;border-radius:8px;font-size:.72rem;display:none;max-width:240px}
.bathy-legend{bottom:110px;right:230px}
.ice-legend{bottom:110px;right:20px}
.bathy-legend .bar{height:8px;width:170px;border-radius:4px;margin:4px 0;background:linear-gradient(to right,#8ec9ee,#2f6fb8,#123f78,#061a3c)}
.wind-legend{position:absolute;bottom:20px;right:20px;z-index:50;background:rgba(15,23,42,.9);border:1px solid #1f2937;padding:10px 14px;border-radius:8px;font-size:.75rem;display:none}
.wind-legend .bar{height:10px;width:180px;border-radius:5px;margin:4px 0;background:linear-gradient(to right,#0064ff,#00ccff,#44ff44,#ffdd00,#ff8800,#ff2200,#cc0066,#9900cc);box-shadow:0 0 8px rgba(0,150,255,0.3)}
.wind-legend .labels{display:flex;justify-content:space-between;color:#9ca3af;font-size:.65rem}
.currents-legend{position:absolute;bottom:20px;right:20px;z-index:50;background:rgba(15,23,42,.9);border:1px solid #1f2937;padding:10px 14px;border-radius:8px;font-size:.75rem;display:none}
.currents-legend .bar{height:10px;width:180px;border-radius:5px;margin:4px 0;background:linear-gradient(to right,#001a4d,#004d99,#00b3b3,#00cc66,#ffcc00,#ff6600,#cc0066);box-shadow:0 0 8px rgba(0,200,200,0.3)}
.currents-legend .labels{display:flex;justify-content:space-between;color:#9ca3af;font-size:.65rem}
.about-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:rgba(15,23,42,.95);border:1px solid #1f2937;padding:20px;border-radius:12px;font-size:.85rem;z-index:9999;max-width:420px;display:none;box-shadow:0 8px 24px rgba(0,0,0,.4);backdrop-filter:blur(10px);max-height:85vh;overflow-y:auto}
.about-panel h4{color:#60a5fa;margin-bottom:12px;font-size:1rem;display:flex;align-items:center;gap:6px;border-bottom:1px solid #1f2937;padding-bottom:10px}
.about-panel .about-desc{color:#d1d5db;line-height:1.6;margin-bottom:16px;font-size:.82rem}
.about-close{position:absolute;top:10px;right:10px;background:none;border:none;color:#6b7280;font-size:1.2rem;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1}
.about-close:hover{color:#e0e6ed;background:#1f2937}
.donate-section{background:#0f172a;border-radius:10px;padding:14px;border:1px solid #1f2937;margin-top:8px}
.donate-section h5{color:#34d399;margin-bottom:10px;font-size:.85rem;display:flex;align-items:center;gap:6px}
.donate-method-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.dm-btn{background:#1f2937;border:1px solid #374151;color:#e0e6ed;padding:8px 4px;border-radius:8px;cursor:pointer;font-size:.78rem;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .2s}
.dm-btn:hover{background:#2563eb;border-color:#3b82f6;transform:translateY(-2px)}
.dm-btn.active{background:#2563eb;border-color:#60a5fa}
.dm-icon{font-size:1.3rem}
.donate-address{display:flex;gap:6px;align-items:center;margin-top:10px;background:#0f172a;border:1px solid #374151;border-radius:8px;padding:8px 10px}
.donate-address code{flex:1;font-size:.72rem;color:#34d399;word-break:break-all;font-family:monospace}
.donate-address button{background:#374151;border:none;color:#e0e6ed;padding:6px 10px;border-radius:6px;cursor:pointer;font-size:.85rem;flex-shrink:0}
.donate-address button:hover{background:#4b5563}
.donate-note{color:#fbbf24;font-size:.72rem;margin-top:8px;padding:8px;background:rgba(251,191,36,.08);border-radius:6px;border-left:3px solid #fbbf24}
.donate-qr{display:flex;justify-content:center;margin-top:10px}
@media (max-width:768px){
.about-panel{max-width:90vw;max-height:80vh}
.donate-qr img{max-width:130px}
}
.precip-legend{position:absolute;bottom:20px;right:20px;z-index:50;background:rgba(15,23,42,.9);border:1px solid #1f2937;padding:10px 14px;border-radius:8px;font-size:.75rem;display:none}
.precip-legend .bar{height:8px;width:160px;border-radius:4px;margin:4px 0;background:linear-gradient(to right,rgba(120,160,220,0.4),rgba(30,110,200,0.6),rgba(0,150,180,0.75),rgba(0,200,60,0.85),rgba(200,220,0,0.9),rgba(255,200,0,0.95),rgba(255,140,0,1),rgba(220,0,0,1))}
.precip-legend .labels{display:flex;justify-content:space-between;color:#9ca3af;font-size:.65rem}
.hydro-legend{position:absolute;bottom:20px;right:230px;z-index:50;background:rgba(15,23,42,.9);border:1px solid #1f2937;padding:8px 12px;border-radius:8px;display:none;max-width:230px}
.geometry-legend{position:absolute;left:18px;bottom:52px;z-index:51;max-width:285px;padding:8px 11px;border:1px solid rgba(96,165,250,.45);border-radius:8px;background:rgba(8,15,30,.9);color:#cbd5e1;font-size:.68rem;line-height:1.45;pointer-events:none;box-shadow:0 4px 18px rgba(0,0,0,.28)}
.geometry-legend strong{display:block;color:#93c5fd;font-size:.72rem;margin-bottom:2px}
.geometry-legend .distortion-note{color:#fbbf24;display:none}
#data-status{transition:opacity .3s}
#data-status .status-real{color:#34d399;font-weight:600}
#data-status .status-synth{color:#9ca3af}
#data-status .status-stale{color:#fbbf24;font-weight:600}
#data-refresh-btn:hover{background:#374151;border-color:#4b5563}
#data-refresh-btn:active{transform:scale(0.92)}
.unit-selector{display:flex;gap:4px;margin-top:8px;flex-wrap:wrap}
.unit-selector button{padding:4px 8px;font-size:.7rem;justify-content:center;min-width:auto}
.unit-selector button.active{background:#2563eb;color:white}
.star-label{font-size:9px;pointer-events:none}
.sky-rotation-label{font-size:10.5px;font-weight:600;pointer-events:none}
#observer-panel{left:auto !important;right:20px !important;top:20px !important;max-width:370px;max-height:calc(100% - 40px);overflow:auto}
.sky-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:8px}
.sky-mode-grid button{min-width:0;padding:7px 6px;font-size:.68rem;line-height:1.2;justify-content:center}
.sky-mode-grid button.active{background:#6d28d9;border-color:#a78bfa}
.sky-controls{display:none;margin:8px 0;padding:8px;background:rgba(167,139,250,.08);border:1px solid rgba(167,139,250,.3);border-radius:7px}
.sky-controls label{display:block;color:#c4b5fd;font-size:.68rem;margin:5px 0 3px}
.sky-controls input,.sky-controls select{width:100%;background:#111827;border:1px solid #4b5563;color:#e5e7eb;border-radius:5px;padding:6px;font-size:.7rem}
.sky-mode-status{font-size:.67rem;color:#c4b5fd;line-height:1.4;margin:5px 0 8px}
.observer-sky-dome{width:100%;max-width:280px;aspect-ratio:1;display:block;margin:8px auto;background:radial-gradient(circle,#172554 0,#0b1022 70%,#030712 100%);border-radius:50%;border:1px solid #6366f1}
.sky-facts{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:7px 0}
.sky-fact,.dome-result{padding:5px 6px;background:rgba(15,23,42,.72);border:1px solid #374151;border-radius:5px;font-size:.66rem;line-height:1.35}
.sky-fact b,.dome-result b{display:block;color:#a5b4fc;font-size:.62rem}
.dome-results{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}
.dome-result.warn{border-color:#f59e0b}.dome-result.pass{border-color:#34d399}
.sky-catalog-note{font-size:.62rem;color:#94a3b8;margin-top:6px;line-height:1.4}
.fit-controls{padding:9px;background:rgba(14,165,233,.07);border:1px solid rgba(56,189,248,.28);border-radius:8px}
.fit-controls label{display:block;color:#7dd3fc;font-size:.66rem;margin:6px 0 3px}
.fit-controls select,.fit-controls input[type=range]{width:100%}
.fit-controls select{background:#111827;border:1px solid #475569;color:#e5e7eb;border-radius:5px;padding:6px;font-size:.7rem}
.fit-toggle-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:7px}
.fit-toggle-grid button{min-width:0;padding:7px 5px;justify-content:center;font-size:.67rem}
.fit-report{margin-top:8px;font-size:.63rem;color:#cbd5e1;line-height:1.45}
.fit-report-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:5px 0}
.science-meta{margin:6px 0;padding:7px;border:1px solid #334155;border-radius:7px;background:rgba(15,23,42,.72)}
.science-badge{display:inline-block;margin-bottom:5px;padding:2px 6px;border-radius:999px;background:#164e63;color:#cffafe;font-size:.58rem;font-weight:800;letter-spacing:.04em}
.science-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 8px;font-size:.58rem;color:#cbd5e1}
.science-fields b{color:#94a3b8;font-weight:600}
.lab-audit{margin-top:8px;font-size:.62rem;color:#94a3b8}
.lab-audit[data-status="pass"] summary{color:#86efac}
.lab-audit[data-status="fail"] summary{color:#fda4af}
:where(button,input,select,summary):focus-visible{outline:3px solid #22d3ee;outline-offset:2px}
.real-scale-panel{margin-top:9px;border:1px solid #155e75;border-radius:8px;background:rgba(8,47,73,.16);overflow:hidden}
.real-scale-panel>summary{padding:8px;color:#67e8f9;font-size:.68rem;font-weight:700;cursor:pointer}
.real-scale-body{padding:0 8px 9px;display:grid;gap:6px}
.real-scale-controls{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.real-scale-controls button{font-size:.64rem;padding:7px;min-width:0}
.real-scale-metrics{display:grid;gap:5px;margin-top:5px}
.continent-metric{padding:6px;border:1px solid #334155;border-radius:6px;background:rgba(15,23,42,.72);font-size:.58rem;line-height:1.4;color:#cbd5e1}
.continent-metric b{display:block;color:#a5f3fc;font-size:.62rem}
.real-scale-status{font-size:.6rem;line-height:1.4;color:#fcd34d}
.fit-metric{padding:5px;border:1px solid #334155;border-radius:5px;background:#0f172a}
.fit-metric b{display:block;color:#67e8f9;font-size:.6rem}
.fit-warning{padding:6px;margin-top:5px;border-left:3px solid #f59e0b;background:rgba(245,158,11,.08);color:#fcd34d}
.fit-pass{border-left-color:#34d399;color:#6ee7b7}
.lab-context{margin-top:8px;display:grid;gap:5px}
.lab-context:empty{display:none}
.lab-context-block{padding:6px 7px;border:1px solid #334155;border-radius:6px;background:rgba(15,23,42,.78);font-size:.65rem;line-height:1.4}
.lab-context-block b{display:block;color:#7dd3fc;font-size:.61rem;margin-bottom:2px}
.lab-context-block span{display:block;color:#cbd5e1}
#lab-help-open{position:absolute;top:12px;left:12px;z-index:170;background:#0f766e;border-color:#2dd4bf;color:#ecfeff;font-weight:700;box-shadow:0 4px 18px rgba(0,0,0,.35)}
#lab-help-panel{position:absolute;top:12px;right:12px;bottom:12px;width:min(420px,calc(100% - 56px));z-index:180;background:rgba(8,15,30,.97);border:1px solid #475569;border-radius:12px;box-shadow:0 12px 36px rgba(0,0,0,.55);overflow:hidden;display:flex;flex-direction:column;backdrop-filter:blur(8px)}
#lab-help-panel[hidden]{display:none}
.lab-help-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;border-bottom:1px solid #334155}
.lab-help-header h2{font-size:.92rem;color:#67e8f9}
.lab-help-header button{padding:6px 9px;font-size:.72rem;flex:0 0 auto}
#lab-help-content{overflow:auto;padding:8px 12px 16px}
.lab-help-section{border-bottom:1px solid #243047;padding:7px 0}
.lab-help-section summary{cursor:pointer;color:#a5b4fc;font-size:.78rem;font-weight:700;padding:4px 0}
.lab-help-section p{font-size:.7rem;line-height:1.45;color:#cbd5e1;margin:6px 0 0 12px}
.lab-experiment-list{display:grid;gap:6px}
.lab-experiment-choice{width:100%;font-size:.72rem;padding:8px 9px;line-height:1.3}
#lab-experiment-guide{position:absolute;right:12px;bottom:12px;width:min(430px,calc(100% - 56px));max-height:48%;overflow:auto;z-index:175;background:rgba(8,15,30,.96);border:1px solid #0e7490;border-radius:12px;padding:12px;box-shadow:0 10px 30px rgba(0,0,0,.5)}
#lab-experiment-guide[hidden]{display:none}
.lab-experiment-method{display:grid;gap:4px;margin:8px 0;padding:8px;border:1px solid #334155;border-radius:7px;background:rgba(15,23,42,.8);font-size:.65rem;line-height:1.4}.lab-experiment-method b{color:#67e8f9}.lab-experiment-method [data-guide-field="forbiddenConclusion"]{color:#fda4af}.lab-experiment-method [data-guide-field="allowedConclusion"]{color:#86efac}
#lab-experiment-title{font-size:.88rem;color:#67e8f9;margin-bottom:6px}
#lab-experiment-progress{font-size:.64rem;color:#94a3b8;margin-bottom:6px}
#lab-experiment-step{font-size:.76rem;line-height:1.45;color:#e2e8f0;margin-bottom:8px}
#lab-experiment-evidence{font-size:.67rem;line-height:1.45;color:#bae6fd;margin:7px 0}
.lab-experiment-actions{display:flex;flex-wrap:wrap;gap:5px}
.lab-experiment-actions button{font-size:.66rem;padding:6px 8px}
.fit-overlay-settings{display:grid;gap:5px;margin-top:6px}
.fit-overlay-settings label{margin:0}
.fit-overlay-settings select,.fit-overlay-settings input{width:100%}
.fit-heatmap-legend{padding:5px 7px;border:1px solid #334155;border-radius:5px;font-size:.6rem;line-height:1.4;color:#cbd5e1;background:linear-gradient(90deg,rgba(63,55,121,.45),rgba(31,162,135,.45),rgba(253,231,37,.45))}.fit-heatmap-legend[hidden]{display:none}
.fit-layer path{vector-effect:non-scaling-stroke}.fit-layer text{paint-order:stroke;stroke:#07111f;stroke-width:3px}
.fit-split-label{font-size:11px;font-weight:700;fill:#67e8f9}
.flight-panel{position:absolute;top:20px;left:20px;background:rgba(15,23,42,.95);border:1px solid #1f2937;padding:16px;border-radius:10px;font-size:.85rem;z-index:55;max-width:320px;display:none;box-shadow:0 8px 24px rgba(0,0,0,.4);backdrop-filter:blur(10px)}
.flight-panel h4{color:#60a5fa;margin-bottom:10px;font-size:.95rem;display:flex;align-items:center;gap:6px}
.flight-row{margin-bottom:8px}
.flight-row label{display:block;font-size:.7rem;color:#9ca3af;margin-bottom:3px}
.flight-row input,.flight-row select{width:100%;background:#1f2937;border:1px solid #374151;color:#e0e6ed;padding:8px 10px;border-radius:6px;font-size:.85rem}
.flight-stop{margin:6px 0;padding:8px;background:#0f172a;border-radius:6px;border-left:3px solid #f59e0b}
.flight-stop-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.flight-stop-header span{color:#f59e0b;font-size:.75rem;font-weight:600}
.flight-result-item{padding:6px 0;border-bottom:1px solid #1f2937;font-size:.8rem}
.flight-result-item .label{color:#9ca3af;font-size:.7rem}
.flight-result-item .value{color:#34d399;font-weight:600}
.flight-total{margin-top:10px;padding-top:10px;border-top:1px solid #374151;color:#fbbf24;font-weight:600;font-size:.95rem}

/* ===== AUTOCOMPLETE ===== */
.ac-wrap{position:relative}
.ac-input{width:100%;background:#1f2937;border:1px solid #374151;color:#e0e6ed;padding:8px 10px;border-radius:6px;font-size:.85rem;box-sizing:border-box}
.ac-input:focus{outline:none;border-color:#3b82f6}
.ac-list{position:absolute;top:calc(100% + 3px);left:0;right:0;background:#111827;border:1px solid #374151;border-radius:6px;max-height:260px;overflow-y:auto;z-index:1000;box-shadow:0 8px 24px rgba(0,0,0,.6);display:none}
.ac-list.open{display:block}
.ac-item{padding:8px 10px;cursor:pointer;border-bottom:1px solid #1f2937;display:flex;align-items:center;gap:8px}
.ac-item:last-child{border-bottom:none}
.ac-item:hover,.ac-item.active{background:#1f2937}
.ac-item .ac-iata{font-size:.7rem;font-weight:700;color:#fbbf24;background:#374151;padding:2px 5px;border-radius:4px;min-width:34px;text-align:center;flex-shrink:0}
.ac-item .ac-name{color:#e0e6ed;font-size:.82rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ac-item .ac-country{color:#6b7280;font-size:.68rem;flex-shrink:0}
.ac-empty{padding:10px;color:#6b7280;font-size:.78rem;text-align:center}
.ac-list::-webkit-scrollbar{width:6px}
.ac-list::-webkit-scrollbar-thumb{background:#374151;border-radius:3px}
select#flight-aircraft optgroup{color:#fbbf24;background:#111827;font-weight:700}
select#flight-aircraft option{color:#e0e6ed;background:#1f2937;font-weight:400}

/* ===== MOBILE RESPONSIVE ===== */
@media (max-width:768px){
#app{flex-direction:column;height:100dvh;height:-webkit-fill-available;width:100vw;max-width:100%;overflow:hidden}
#sidebar{width:100%;max-width:100vw;min-width:0;height:auto;max-height:35vh;border-right:none;border-bottom:1px solid #1f2937;position:relative;z-index:100;transition:max-height 0.3s ease}
#sidebar header{padding-right:66px;min-width:0}
#sidebar header h1,#sidebar header p{max-width:100%;overflow-wrap:anywhere}
#sidebar.collapsed{max-height:48px;overflow:hidden}
#sidebar.collapsed .panel,#sidebar.collapsed #info-panel{display:none}
#sidebar.collapsed header{padding:10px 16px}
#map-container{flex:1;position:relative;overflow:hidden;min-height:0;min-width:0;width:100%;max-width:100vw}
#map{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}
#wind-canvas,#cloud-canvas,#currents-canvas,#precip-canvas{z-index:34}
.mobile-toggle{display:flex;position:absolute;top:8px;right:12px;z-index:200;background:#1f2937;border:1px solid #374151;color:#e0e6ed;width:42px;height:38px;padding:0;border-radius:6px;cursor:pointer;font-size:1rem;justify-content:center;overflow:hidden;white-space:nowrap;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.compass-rose{width:40px;height:40px;bottom:10px;left:10px}
.route-info,.area-info,.weather-panel{max-width:90vw;left:5vw;right:5vw;top:10px}
#observer-panel{max-width:90vw;left:5vw!important;right:5vw!important;top:10px!important;max-height:calc(100% - 20px)}
#lab-help-open{top:8px;left:8px;padding:7px 9px;font-size:.72rem;max-width:calc(100% - 64px)}
#lab-help-panel{top:8px;right:8px;bottom:8px;width:calc(100% - 48px);max-width:420px}
#lab-experiment-guide{right:8px;bottom:8px;width:calc(100% - 48px);max-height:50%}
.lab-experiment-actions button{min-height:40px;touch-action:manipulation}
.science-fields{grid-template-columns:1fr}
.flight-panel{position:fixed;left:0;top:0;width:100vw;height:100dvh;max-width:none;border-radius:0;z-index:300;overflow-y:auto;padding:20px;-webkit-overflow-scrolling:touch}
.wind-legend,.precip-legend{bottom:10px;right:10px;transform:scale(0.85);transform-origin:bottom right}
.geometry-legend{left:8px;right:8px;bottom:44px;max-width:none;padding:6px 9px;font-size:.62rem}
}
@media (min-width:769px){
.mobile-toggle{display:none}
}
.real-scale-presets{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;margin-top:6px}.real-scale-presets button{min-height:36px;padding:4px;font-size:.7rem}
