INICIALIZANDO TERRENO
/* ════════════════════════════════════════════════════════ 3D WIND TUNNEL MODAL — Complete CSS Add this entire section to the END of your style.css ════════════════════════════════════════════════════════ */ .tunnel-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.8); z-index: 950; display: flex; align-items: center; justify-content: center; opacity: 1; transition: opacity 0.3s; } .tunnel-overlay.hidden { display: none; opacity: 0; pointer-events: none; } .tunnel-modal { position: relative; background: var(--surface); border: 1px solid var(--border2); border-radius: var(--radius); width: 95vw; height: 90vh; max-width: 1600px; max-height: 900px; display: flex; flex-direction: column; box-shadow: 0 20px 60px rgba(0,0,0,0.8); color: var(--text); } .tunnel-close { position: absolute; top: 12px; right: 12px; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; background: rgba(0,200,255,0.05); border: 1px solid rgba(0,200,255,0.1); border-radius: var(--radius); color: var(--accent); cursor: pointer; z-index: 10; transition: all 0.2s; } .tunnel-close:hover { background: rgba(0,200,255,0.15); border-color: var(--accent); } .tunnel-close svg { width: 16px; height: 16px; } .tunnel-header { padding: 20px 30px; border-bottom: 1px solid var(--border); flex-shrink: 0; } .tunnel-header h2 { font-size: 20px; font-weight: 700; margin: 0 0 4px 0; letter-spacing: 1px; color: var(--accent); } .tunnel-subtitle { font-size: 11px; color: var(--text2); margin: 0; letter-spacing: 0.5px; text-transform: uppercase; } .tunnel-hint { font-size: 10px; color: var(--mute); margin: 4px 0 0 0; } .tunnel-body { display: flex; flex: 1; min-height: 0; gap: 0; overflow: hidden; } .tunnel-col { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--border); background: var(--bg); overflow-y: auto; } .tunnel-col:last-child { border-right: none; } .tunnel-col-1 { flex: 0 0 35%; } .tunnel-col-2 { flex: 0 0 35%; } .tunnel-col-3 { flex: 1; } .tunnel-col::-webkit-scrollbar { width: 6px; } .tunnel-col::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 3px; } .tunnel-viewport-wrap { position: relative; height: 350px; background: var(--surface2); border-bottom: 1px solid var(--border); flex-shrink: 0; } #tunnelCanvas { width: 100% !important; height: 100% !important; display: block; } .tunnel-status { position: absolute; top: 10px; left: 10px; background: rgba(0,0,0,0.7); border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 12px; font-size: 10px; z-index: 5; } .ts-state { font-weight: 700; color: var(--accent2); letter-spacing: 1px; } .ts-detail { font-size: 9px; color: var(--mute); margin-top: 2px; } .tunnel-hint-box { position: absolute; bottom: 10px; right: 10px; background: rgba(0,0,0,0.7); border: 1px solid var(--border); border-radius: var(--radius); padding: 8px 10px; font-size: 9px; color: var(--text2); z-index: 5; line-height: 1.6; } .tunnel-section { border-bottom: 1px solid var(--border); padding: 15px; flex-shrink: 0; } .tunnel-section:last-child { border-bottom: none; } .tunnel-section-label { display: flex; align-items: center; gap: 8px; font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--text2); margin-bottom: 12px; } .tunnel-section-label svg { width: 12px; height: 12px; color: var(--accent); } .tunnel-dropzone { border: 2px dashed var(--border2); border-radius: var(--radius); padding: 30px 15px; text-align: center; cursor: pointer; background: rgba(0,200,255,0.02); transition: all 0.3s; min-height: 100px; display: flex; align-items: center; justify-content: center; } .tunnel-dropzone:hover { border-color: var(--accent); background: rgba(0,200,255,0.08); } .tunnel-dropzone.dragover { border-color: var(--accent2); background: rgba(0,255,170,0.1); } .tz-inner { pointer-events: none; user-select: none; } .tz-inner svg { width: 24px; height: 24px; color: var(--text2); margin-bottom: 8px; } .tz-inner p { margin: 0; font-size: 11px; color: var(--text2); } .tz-formats { font-size: 9px; color: var(--mute); margin-top: 4px !important; } .tunnel-model-info { background: rgba(0,255,170,0.08); border: 1px solid rgba(0,255,170,0.2); border-radius: var(--radius); padding: 10px; margin-top: 10px; } .tunnel-model-info.hidden { display: none; } .tmi-name { font-size: 11px; font-weight: 700; color: var(--accent2); margin-bottom: 4px; } .tmi-size { font-size: 9px; color: var(--mute); } .tunnel-scroll { flex: 1; overflow-y: auto; } .tunnel-scroll::-webkit-scrollbar { width: 6px; } .tunnel-scroll::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 3px; } .tunnel-input { width: 100%; padding: 6px 8px; background: var(--surface2); border: 1px solid var(--border); color: var(--text); font-size: 11px; font-family: inherit; border-radius: var(--radius); transition: all 0.2s; margin-bottom: 8px; } .tunnel-input:focus { outline: none; border-color: var(--border2); background: var(--surface); } .tunnel-input-unit { display: flex; align-items: center; gap: 6px; } .tunnel-unit { font-size: 9px; color: var(--text2); white-space: nowrap; } .tunnel-select { width: 100%; padding: 6px 8px; background: var(--surface2); border: 1px solid var(--border); color: var(--text); font-size: 11px; font-family: inherit; border-radius: var(--radius); cursor: pointer; margin-bottom: 8px; transition: all 0.2s; } .tunnel-select:focus { outline: none; border-color: var(--border2); background: var(--surface); } .tunnel-label { display: block; font-size: 9px; font-weight: 700; text-transform: uppercase; color: var(--text2); margin-bottom: 4px; letter-spacing: 0.5px; } .tunnel-field-row { margin-bottom: 10px; } .tunnel-field-row:last-child { margin-bottom: 0; } .tunnel-scale-row { margin-bottom: 10px; display: flex; align-items: center; gap: 8px; } .tunnel-slider { flex: 1; height: 4px; border: none; border-radius: 2px; background: var(--mute); cursor: pointer; accent-color: var(--accent); -webkit-appearance: none; appearance: none; } .tunnel-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 12px; height: 12px; border-radius: 50%; background: var(--accent); cursor: pointer; transition: all 0.2s; } .tunnel-slider::-webkit-slider-thumb:hover { transform: scale(1.2); box-shadow: 0 0 8px rgba(0,200,255,0.5); } .tunnel-slider::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: var(--accent); cursor: pointer; border: none; transition: all 0.2s; } .tunnel-sl-lbl { font-size: 9px; font-weight: 700; text-transform: uppercase; color: var(--text2); min-width: 60px; letter-spacing: 0.5px; } .tunnel-sl-val { font-size: 10px; color: var(--accent); font-weight: 700; min-width: 45px; text-align: right; } .tunnel-btn { display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; padding: 8px 12px; background: var(--surface2); border: 1px solid var(--border); color: var(--text); font-size: 10px; font-weight: 700; text-transform: uppercase; cursor: pointer; border-radius: var(--radius); transition: all 0.2s; letter-spacing: 0.5px; margin-bottom: 6px; } .tunnel-btn:hover { border-color: var(--border2); background: var(--surface); color: var(--accent); } .tunnel-btn-sec { background: rgba(0,200,255,0.05); border-color: rgba(0,200,255,0.1); } .tunnel-btn-sec:hover { background: rgba(0,200,255,0.12); border-color: var(--accent); color: var(--accent); } .tunnel-btn-run { background: rgba(0,255,170,0.15); border-color: var(--accent2); color: var(--accent2); font-weight: 700; } .tunnel-btn-run:hover { background: rgba(0,255,170,0.25); box-shadow: 0 0 12px rgba(0,255,170,0.3); } .tunnel-or-divider { text-align: center; margin: 12px 0; position: relative; font-size: 9px; color: var(--mute); } .tunnel-or-divider::before { content: ''; position: absolute; left: 0; top: 50%; right: 0; height: 1px; background: var(--border); } .tunnel-or-divider span { background: var(--bg); padding: 0 8px; position: relative; } .tunnel-scale-hint { font-size: 9px; color: var(--text2); margin-top: 8px; line-height: 1.5; } .tunnel-harvest-hero { text-align: center; padding: 15px; background: rgba(0,255,170,0.08); border: 1px solid rgba(0,255,170,0.15); border-radius: var(--radius); margin: 10px 0; } .tunnel-harvest-num { font-size: 28px; font-weight: 700; color: var(--accent2); margin-bottom: 4px; } .tunnel-harvest-unit { font-size: 9px; color: var(--mute); text-transform: uppercase; margin-bottom: 8px; } .tunnel-harvest-monthly { font-size: 10px; color: var(--text2); } .tunnel-results-hidden { display: none; } .tunnel-hint-p { font-size: 10px; color: var(--text2); margin: 0 0 10px 0; line-height: 1.5; } @media (max-width: 1200px) { .tunnel-col-1 { flex: 0 0 40%; } .tunnel-col-2 { flex: 0 0 35%; } } @media (max-width: 800px) { .tunnel-modal { flex-direction: column; } .tunnel-body { flex-direction: column; } .tunnel-col { border-right: none; border-bottom: 1px solid var(--border); flex: 1; } .tunnel-col:last-child { border-bottom: none; } }