{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/main.js","webpack:///./js/countdown.js","webpack:///./static/aircraft/components/gcs.jpg","webpack:///./static/aircraft/components/gimbal.png","webpack:///./static/aircraft/components/landing_gear.png","webpack:///./static/aircraft/components/pull_propulsion.JPG","webpack:///./static/aircraft/components/risk_mapping.png","webpack:///./static/aircraft/components/starlink.png","webpack:///./static/aircraft/components/vtail.png","webpack:///./static/aircraft/components/vtol_booms.png","webpack:///./static/aircraft/components/wings.JPG","webpack:///./static/aircraft/testing/autopilot_ground.JPG","webpack:///./static/aircraft/testing/battery_drain.png","webpack:///./static/aircraft/testing/goose_mission.JPG","webpack:///./static/aircraft/testing/matrice_imaging.jpg","webpack:///./static/aircraft/testing/sitl_gcs.png","webpack:///./static/aircraft/testing/tilt_rotor.png","webpack:///./static/aircraft/testing/wing_loading_test.png","webpack:///./js/hermes.js","webpack:///./static/models sync \\.(gltf|bin|jpe","webpack:///./static/models/textures/n_PlasticPolystyrene_normalmap.dds","webpack:///./static/models/textures/n_cast.dds","webpack:///./static/models/textures/n_satinwood_n.dds","webpack:///./static/models/textures sync nonrecursive \\.(","webpack:///./static/aircraft/components/airdrop.png","webpack:///./static/aircraft/components/bebay.png","webpack:///./static/aircraft/components/cloud_server.png","webpack:///./static/models/hermes.gltf","webpack:///./static/models/textures/carbon fiber eproxy.jpg","webpack:///./static/models/textures/data.bin","webpack:///./static/models/textures/n_PlasticPolystyrene_normalmap.png","webpack:///./static/models/textures/n_carbon fiber eproxy.jpg","webpack:///./static/models/textures/n_cast.png","webpack:///./static/models/textures/n_satinwood_n.png","webpack:///./static/models/textures/polished beech.jpg","webpack:///./static/models/textures/polished birch.jpg","webpack:///./static/aircraft/components/frebay.png","webpack:///./static/models/textures/polished cherry.jpg","webpack:///./static/aircraft/components/fuselage.png"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","headerMenuBtn","document","getElementById","headerMenuEl","addEventListener","classList","toggle","navLinks","getElementsByClassName","linkItem","linkAnchor","getElementsByTagName","URL","href","toString","window","location","add","gtag","dataLayer","push","arguments","Date","$","on","animate","scrollTop","offset","top","prop","currentYear","getFullYear","countdownStart","UTC","countdownOpen","countdownClose","countdownMenuBanner","createElement","id","countdownMenuTitle","append","countdownMenuTimer","countdownMenuDays","countdownMenuHours","countdownMenuMinutes","countdownMenuSeconds","countdownMenuDaysValue","countdownMenuHoursValue","countdownMenuMinutesValue","countdownMenuSecondsValue","countdownMenuDaysUnit","countdownMenuHoursUnit","countdownMenuMinutesUnit","countdownMenuSecondsUnit","updateDHMS","millis","seconds","Math","max","floor","minutes","hours","days","innerText","padStart","updateCountdown","countdownHandle","now","className","clearInterval","setInterval","componentImages","airdrop","bebay","cloud_server","frebay","fuselage","gcs","gimbal","landing_gear","pull_propulsion","risk_mapping","starlink","vtail","vtol_booms","wings","testingImages","autopilot_ground_test","battery_drain_test","goose_mission_test","matrice_imaging_test","sitl_gcs_test","tilt_rotor_test","wing_loading_test","modelDependencies","keys","forEach","modelViewer","querySelector","setAttribute","src","remove","tableBody","empty","strategyTable","row","idx","priorityBadge","priority","isFirst","mainRow","task","points","detailRow","takeaway","toggleStrategyRow","$row","targetId","data","toggleText","find","toggleIcon","hasClass","removeClass","attr","slideUp","hide","text","addClass","show","slideDown","this","e","preventDefault","createInspectorRenderer","targetCardId","comp","specRows","specs","val","entries","imagePath","html","category","title","description","caption","aircraftComponents","componentDeepDive","hotspotsLayer","aircraftSelectorPills","renderAircraftInspector","length","pin","blueprintHotspot","left","pill","opMetrics","operationalMetrics","metricsGrid","metric","item","badge","unit","desc","gseComponents","groundAndSoftwareDeepDive","gseSelectorPills","renderGSEInspector","testingComponents","testingAndValidation","qualificationTesting","testingGrid","isDefaultExpanded","card","toggleTestingCard","$header","parentCard","closest","body","toggleBtn","css","riskList","riskMitigations","riskRegisterList","inspector","createRiskInspectorBlock","heading","renderRiskInspector","risk","domainMarkup","domain","validationMarkup","validation","riskTitle","threatImpact","mitigation","safeguard","$elem","isNextKey","isPreviousKey","items","nextIndex","eq","trigger","view","cameraOrbit","stickyLinks","sections","each","link","elem","targetElem","navHeight","outerHeight","targetTop","triggerPos","currentSection","map","webpackContext","req","webpackContextResolve","Error","code","resolve"],"mappings":"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","file":"hermes.js?id=2fd5cf8f3bbdf114297d","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 493);\n","import './countdown';\n\n// open the menu, which is collapsed by default on mobile screens, when the user\n// taps the btn\nconst headerMenuBtn = document.getElementById('header-menu-btn');\nconst headerMenuEl = document.getElementById('header-navigation');\nheaderMenuBtn.addEventListener('click', () => {\n  headerMenuEl.classList.toggle('header-navigation-open');\n});\n\n// highlight the current page in the nav bar\nconst navLinks = document.getElementsByClassName('header-nav-link');\n\nfor (const linkItem of navLinks) {\n  const linkAnchor = linkItem.getElementsByTagName('a')[0];\n  const targetUri = new URL(linkAnchor.href, 'https://cuair.org');\n\n  if (targetUri.toString() === window.location.href) {\n\n    linkItem.classList.add('header-nav-link-active');\n    break;\n  }\n}\n\n\nwindow.dataLayer = window.dataLayer || [];\n\n/** For google analytics */\n// eslint-disable-next-line no-undef\nfunction gtag() { dataLayer.push(arguments); }\ngtag('js', new Date());\n\ngtag('config', 'UA-124645730-1');\n\n// const subteamIdentifier = [\n//   'full-team-leads',  'airframe', 'autopilot', 'design-and-operations',\n//   'electrical', 'integration-and-testing-operations', 'intelligence', 'structures-payloads',\n// ];\n\n$('a.desops').on('click', function () {\n  $('html,body').animate({ scrollTop: $('#application-desops').offset().top - 10 },\n    'slow');\n});\n\n$('a.software').on('click', function () {\n  $('html,body').animate({ scrollTop: $('#application-software').offset().top - 10 },\n    'slow');\n});\n\n$('a.hardware').on('click', function () {\n  $('html,body').animate({ scrollTop: $('#application-hardware').offset().top - 10 },\n    'slow');\n});\n\n$('a.electrical').on('click', function () {\n  $('html,body').animate({ scrollTop: $('#application-electrical').offset().top - 10 },\n    'slow');\n});\n\n$('#application :input').prop('disabled', true);\n","const currentYear = new Date().getFullYear();\n\n// months are indxed from 0.\n// countdown starts on 25 oct of current year\nconst countdownStart = Date.UTC(currentYear, 9, 25, 0, 0, 0, 0);\n// crowdfunding opens at 04:00 UTC (00:00 Ithaca) on 1 nov\nconst countdownOpen = Date.UTC(currentYear, 10, 1, 0, 0, 0);\n// crowdfunding closes at 4:00 UTC (00:00 Ithaca) on 5 dec\nconst countdownClose = Date.UTC(currentYear, 11, 5, 5, 0, 0);\n\nconst countdownMenuBanner = document.createElement('li');\ncountdownMenuBanner.id = 'countdown-menu-banner';\n\nconst countdownMenuTitle = document.createElement('strong');\ncountdownMenuTitle.id = 'countdown-menu-title';\ncountdownMenuBanner.append(countdownMenuTitle);\n\nconst countdownMenuTimer = document.createElement('div');\ncountdownMenuTimer.id = 'countdown-menu-timer';\ncountdownMenuBanner.append(countdownMenuTimer);\n\nconst countdownMenuDays = document.createElement('span');\ncountdownMenuDays.classList.add('countdown-part');\nconst countdownMenuHours = document.createElement('span');\ncountdownMenuHours.classList.add('countdown-part');\nconst countdownMenuMinutes = document.createElement('span');\ncountdownMenuMinutes.classList.add('countdown-part');\nconst countdownMenuSeconds = document.createElement('span');\ncountdownMenuSeconds.classList.add('countdown-part');\n\nconst countdownMenuDaysValue = document.createElement('span');\ncountdownMenuDaysValue.classList.add('countdown-value');\nconst countdownMenuHoursValue = document.createElement('span');\ncountdownMenuHoursValue.classList.add('countdown-value');\nconst countdownMenuMinutesValue = document.createElement('span');\ncountdownMenuMinutesValue.classList.add('countdown-value');\nconst countdownMenuSecondsValue = document.createElement('span');\ncountdownMenuSecondsValue.classList.add('countdown-value');\n\nconst countdownMenuDaysUnit = document.createElement('span');\ncountdownMenuDaysUnit.classList.add('countdown-unit');\nconst countdownMenuHoursUnit = document.createElement('span');\ncountdownMenuHoursUnit.classList.add('countdown-unit');\nconst countdownMenuMinutesUnit = document.createElement('span');\ncountdownMenuMinutesUnit.classList.add('countdown-unit');\nconst countdownMenuSecondsUnit = document.createElement('span');\ncountdownMenuSecondsUnit.classList.add('countdown-unit');\n\ncountdownMenuDays.append(countdownMenuDaysValue, ' ', countdownMenuDaysUnit);\ncountdownMenuHours.append(countdownMenuHoursValue, ' ', countdownMenuHoursUnit);\ncountdownMenuMinutes.append(countdownMenuMinutesValue, ' ', countdownMenuMinutesUnit);\ncountdownMenuSeconds.append(countdownMenuSecondsValue, ' ', countdownMenuSecondsUnit);\n\ncountdownMenuTimer.append(\n  countdownMenuDays,\n  countdownMenuHours,\n  countdownMenuMinutes,\n  countdownMenuSeconds\n);\n\n// TO-DO: uncomment for countend timer for crowdfunding\n// document.querySelector('#header-navigation ul').append(countdownMenuBanner);\n\n/**\n * Updates the countdown timer with the given duration.\n *\n * @param {number} millis number of milliseconds in duration\n */\nfunction updateDHMS(millis) {\n  millis /= 1000;\n  const seconds = Math.max(Math.floor(millis % 60), 0);\n  millis /= 60;\n  const minutes = Math.max(Math.floor(millis % 60), 0);\n  millis /= 60;\n  const hours = Math.max(Math.floor(millis % 24), 0);\n  millis /= 24;\n  const days = Math.max(Math.floor(millis), 0);\n\n  countdownMenuDaysValue.innerText = days.toString().padStart(2, 0);\n  countdownMenuDaysUnit.innerText = days !== 1 ? 'days' : 'day';\n\n  countdownMenuHoursValue.innerText = `:${hours.toString().padStart(2, 0)}`;\n  countdownMenuHoursUnit.innerText = hours !== 1 ? 'hours' : 'hour';\n\n  countdownMenuMinutesValue.innerText = `:${minutes.toString().padStart(2, 0)}`;\n  countdownMenuMinutesUnit.innerText = minutes !== 1 ? 'mins' : 'min';\n\n  countdownMenuSecondsValue.innerText = `:${seconds.toString().padStart(2, 0)}`;\n  countdownMenuSecondsUnit.innerText = seconds !== 1 ? 'secs' : 'sec';\n}\n\n/**\n * Updates the countdown on the page.\n *\n * @param {number?} countdownHandle the handle to the countdown updater interval\n */\nfunction updateCountdown(countdownHandle) {\n  const now = Date.now();\n  if (now >= countdownClose) {\n    // countdownMenuTitle.innerText = 'Applications closed!';\n    countdownMenuTitle.innerText = 'Crowdfunding closed!';\n    countdownMenuTitle.className = 'closed';\n    updateDHMS(countdownClose - now);\n    clearInterval(countdownHandle);\n  } else if (now >= countdownOpen) {\n    // countdownMenuTitle.innerText = 'Applications close in';\n    countdownMenuTitle.innerText = 'Crowdfunding ends in';\n    countdownMenuTitle.className = 'open';\n    updateDHMS(countdownClose - now);\n  } else {\n    // countdownMenuTitle.innerText = 'Applications open in';\n    countdownMenuTitle.innerText = 'Crowdfunding starts in';\n    countdownMenuTitle.className = 'pre-open';\n    updateDHMS(countdownOpen - now);\n  }\n}\n\nif (Date.now() >= countdownStart) {\n  updateCountdown();\n\n  const countdownHandle = setInterval(() => {\n    updateCountdown(countdownHandle);\n  }, 1000);\n}\n","export default __webpack_public_path__ + \"2cc1ede47219ad0dae0a3022e3e64fd9.jpg\";","export default __webpack_public_path__ + \"7bb606911386ced485fd8ff1204fe1d8.png\";","export default __webpack_public_path__ + \"081d53456e857c92ecf0065d6b5a4205.png\";","export default __webpack_public_path__ + \"99fe064ffa7eca36dc288078d0b39c92.JPG\";","export default __webpack_public_path__ + \"c4f34032fdb4caf52291ed0110e9a1f1.png\";","export default __webpack_public_path__ + \"50da65095d73ca6d093f27faf683a045.png\";","export default __webpack_public_path__ + \"4745e5be90b47aff80fc85138024b874.png\";","export default __webpack_public_path__ + \"b36fcbf76e305953e6e577653b6abfdf.png\";","export default __webpack_public_path__ + \"07e3403424d8a4e28abea3bf517619a7.JPG\";","export default __webpack_public_path__ + \"0fdebfeaac1f8e4ad0d7510d261b38e9.JPG\";","export default __webpack_public_path__ + \"c3c1e9f4460de7d68e9095a52be3b21d.png\";","export default __webpack_public_path__ + \"cc97845da670982891cced501a15b9ed.JPG\";","export default __webpack_public_path__ + \"7b7a000bece1d2772a45ab0696c14556.jpg\";","export default __webpack_public_path__ + \"c68e4558282d37147feb34555a80466f.png\";","export default __webpack_public_path__ + \"adb77c0dd5fee2d19a41440382d89f7d.png\";","export default __webpack_public_path__ + \"40bda78647f011ec28e4ca7a606791e0.png\";","import './main';\nimport hermesSpecsData from '../data/hermes-specs.json';\nimport airdropImage from '../static/aircraft/components/airdrop.png';\nimport bebayImage from '../static/aircraft/components/bebay.png';\nimport cloudServerImage from '../static/aircraft/components/cloud_server.png';\nimport frebayImage from '../static/aircraft/components/frebay.png';\nimport fuselageImage from '../static/aircraft/components/fuselage.png';\nimport gcsImage from '../static/aircraft/components/gcs.jpg';\nimport gimbalImage from '../static/aircraft/components/gimbal.png';\nimport landingGearImage from '../static/aircraft/components/landing_gear.png';\nimport pullPropulsionImage from '../static/aircraft/components/pull_propulsion.JPG';\nimport riskMappingImage from '../static/aircraft/components/risk_mapping.png';\nimport starlinkImage from '../static/aircraft/components/starlink.png';\nimport vtailImage from '../static/aircraft/components/vtail.png';\nimport vtolBoomsImage from '../static/aircraft/components/vtol_booms.png';\nimport wingsImage from '../static/aircraft/components/wings.JPG';\nimport autopilotGroundImage from '../static/aircraft/testing/autopilot_ground.JPG';\nimport batteryDrainImage from '../static/aircraft/testing/battery_drain.png';\nimport gooseMissionImage from '../static/aircraft/testing/goose_mission.JPG';\nimport matriceImagingImage from '../static/aircraft/testing/matrice_imaging.jpg';\nimport sitlGcsImage from '../static/aircraft/testing/sitl_gcs.png';\nimport tiltRotorImage from '../static/aircraft/testing/tilt_rotor.png';\nimport wingLoadingTestImage from '../static/aircraft/testing/wing_loading_test.png';\nimport hermesModel from '../static/models/hermes.gltf';\n\n// Import all files in static/models so Webpack bundles data.bin and texture dependencies\nrequire.context('../static/models', true, /\\.(gltf|bin|jpe?g|png|dds)$/i);\n\nconst componentImages = {\n  airdrop: airdropImage,\n  bebay: bebayImage,\n  cloud_server: cloudServerImage,\n  frebay: frebayImage,\n  fuselage: fuselageImage,\n  gcs: gcsImage,\n  gimbal: gimbalImage,\n  landing_gear: landingGearImage,\n  pull_propulsion: pullPropulsionImage,\n  risk_mapping: riskMappingImage,\n  starlink: starlinkImage,\n  vtail: vtailImage,\n  vtol_booms: vtolBoomsImage,\n  wings: wingsImage,\n};\n\nconst testingImages = {\n  autopilot_ground_test: autopilotGroundImage,\n  battery_drain_test: batteryDrainImage,\n  goose_mission_test: gooseMissionImage,\n  matrice_imaging_test: matriceImagingImage,\n  sitl_gcs_test: sitlGcsImage,\n  tilt_rotor_test: tiltRotorImage,\n  wing_loading_test: wingLoadingTestImage,\n};\n\n// The GLTF references files relative to itself, so ensure webpack emits its\n// external textures and binary buffer as part of the model asset graph.\nconst modelDependencies = require.context(\n  '../static/models/textures',\n  false,\n  /\\.(?:bin|jpe?g|png)$/i\n);\nmodelDependencies.keys().forEach(modelDependencies);\n\n$(function () {\n  // Setup 3D Model Viewer Source & Motor Orientation\n  const modelViewer = document.querySelector('#hermes-model-viewer');\n  if (modelViewer) {\n    modelViewer.classList.add('is-loading');\n    modelViewer.setAttribute('aria-busy', 'true');\n    modelViewer.src = hermesModel;\n\n    modelViewer.addEventListener('load', function () {\n      modelViewer.classList.remove('is-loading');\n      modelViewer.setAttribute('aria-busy', 'false');\n    });\n  }\n\n  // Populate SUAS 2026 Strategy Table (Expandable Rows)\n  const tableBody = $('#strategy-table tbody');\n  tableBody.empty();\n\n  if (hermesSpecsData && hermesSpecsData.strategyTable) {\n    hermesSpecsData.strategyTable.forEach(function (row, idx) {\n      const priorityBadge = row.priority === 'High' ? 'priority-high' : row.priority === 'Medium' ? 'priority-medium' : 'priority-low';\n      const isFirst = idx === 0;\n\n      const mainRow = $(`\n        <tr class=\"strategy-row-toggle ${isFirst ? 'expanded' : ''}\" \n            data-target=\"strategy-detail-${idx}\"\n            tabindex=\"0\"\n            role=\"button\"\n            aria-expanded=\"${isFirst}\"\n            aria-controls=\"strategy-detail-${idx}\"\n            aria-label=\"${row.task}, ${row.points} points, ${row.priority} priority. Click or press Enter to toggle rationale.\">\n          <td class=\"task-title-cell\">\n            <span class=\"task-index-badge\">0${idx + 1}</span>\n            <span class=\"task-title-text\">${row.task}</span>\n          </td>\n          <td><span class=\"points-pill\">${row.points} pts</span></td>\n          <td><span class=\"priority-pill ${priorityBadge}\">${row.priority}</span></td>\n          <td class=\"action-cell\">\n            <button class=\"strategy-toggle-btn\" aria-label=\"Toggle Rationale\">\n              <span class=\"toggle-text\">${isFirst ? 'Hide Rationale' : 'Expand Rationale'}</span>\n              <span class=\"toggle-icon\">${isFirst ? '−' : '+'}</span>\n            </button>\n          </td>\n        </tr>\n      `);\n\n      const detailRow = $(`\n        <tr class=\"strategy-expand-row\" id=\"strategy-detail-${idx}\" style=\"${isFirst ? '' : 'display: none;'}\">\n          <td colspan=\"4\" class=\"detail-cell\">\n            <div class=\"strategy-takeaway-card\">\n              <div class=\"takeaway-card-header\">\n                <span class=\"takeaway-header-badge\">ENGINEERING TAKEAWAY &amp; ARCHITECTURAL TRADE-OFF</span>\n              </div>\n              <p class=\"takeaway-text\">${row.takeaway}</p>\n            </div>\n          </td>\n        </tr>\n      `);\n\n      tableBody.append(mainRow);\n      tableBody.append(detailRow);\n    });\n\n    // Row toggle click and keyboard handler\n    /**\n     * Toggles expansion state of a strategy table row.\n     *\n     * @param {jQuery} $row - The row element to toggle.\n     */\n    const toggleStrategyRow = function ($row) {\n      const targetId = $row.data('target');\n      const detailRow = $(`#${targetId}`);\n      const toggleText = $row.find('.toggle-text');\n      const toggleIcon = $row.find('.toggle-icon');\n\n      if ($row.hasClass('expanded')) {\n        $row.removeClass('expanded').attr('aria-expanded', 'false');\n        detailRow.find('.strategy-takeaway-card').slideUp(200, function () {\n          detailRow.hide();\n        });\n        toggleText.text('Expand Rationale');\n        toggleIcon.text('+');\n      } else {\n        $row.addClass('expanded').attr('aria-expanded', 'true');\n        detailRow.show();\n        detailRow.find('.strategy-takeaway-card').hide()\n          .slideDown(250);\n        toggleText.text('Hide Rationale');\n        toggleIcon.text('−');\n      }\n    };\n\n    tableBody.on('click', '.strategy-row-toggle', function () {\n      toggleStrategyRow($(this));\n    });\n\n    tableBody.on('keydown', '.strategy-row-toggle', function (e) {\n      if (e.key === 'Enter' || e.key === ' ') {\n        e.preventDefault();\n        toggleStrategyRow($(this));\n      }\n    });\n  }\n\n  /**\n   * Helper function to render a side-by-side spec inspector.\n   *\n   * @param {string} targetCardId - ID of target container.\n   * @returns {Function} Renderer function.\n   */\n  function createInspectorRenderer(targetCardId) {\n    return function (comp) {\n      let specRows = '';\n      if (comp.specs) {\n        for (const [key, val] of Object.entries(comp.specs)) {\n          specRows += `\n            <tr>\n              <td class=\"spec-key\">${key}</td>\n              <td class=\"spec-val\">${val}</td>\n            </tr>\n          `;\n        }\n      }\n\n      const imagePath = componentImages[comp.id];\n\n      $(`#${targetCardId}`).html(`\n        <div class=\"inspector-grid-2col\">\n          <div class=\"inspector-specs-col\">\n            <div class=\"inspector-header-badge\">${comp.category}</div>\n            <h3 class=\"inspector-title\">${comp.title}</h3>\n            <table class=\"inspector-specs-table\">\n              <tbody>\n                ${specRows}\n              </tbody>\n            </table>\n            <div class=\"inspector-desc-body\">\n              <p>${comp.description}</p>\n            </div>\n          </div>\n\n          <div class=\"inspector-image-col\">\n            <div class=\"component-image-card\">\n              <img class=\"component-img-preview\" src=\"${imagePath}\" alt=\"${comp.title} Close-Up\" \n                   onerror=\"if (!this.dataset.retried) { this.dataset.retried = 'true'; this.src = this.src.endsWith('.png') ? this.src.replace('.png', '.jpg') : this.src.replace('.jpg', '.png'); } else { this.onerror=null; this.parentNode.innerHTML='<div class=\\\\'component-placeholder-box\\\\'><div class=\\\\'placeholder-title\\\\'>${comp.title} Close-Up</div><p>Drop your component close-up photo at:</p><div class=\\\\'placeholder-path-code\\\\'>static/aircraft/components/${comp.id}.jpg (or .png)</div></div>'; }\">\n              ${comp.caption ? `<div class=\"component-img-caption\">${comp.caption}</div>` : ''}\n            </div>\n          </div>\n        </div>\n      `);\n    };\n  }\n\n  // 1. AIRCRAFT SUBSYSTEM BLUEPRINT & INSPECTOR\n  const aircraftComponents = hermesSpecsData.componentDeepDive || [];\n  const hotspotsLayer = $('#blueprint-hotspots-layer');\n  const aircraftSelectorPills = $('#blueprint-selector-pills');\n  const renderAircraftInspector = createInspectorRenderer('inspector-detail-card');\n\n  hotspotsLayer.empty();\n  aircraftSelectorPills.empty();\n\n  if (aircraftComponents.length > 0) {\n    aircraftComponents.forEach(function (comp, idx) {\n      // Hotspot pin on aircraft photo\n      const pin = $(`\n        <button class=\"hotspot-pin-btn\" data-id=\"${comp.id}\" style=\"top: ${comp.blueprintHotspot.top}; left: ${comp.blueprintHotspot.left};\" title=\"${comp.title}\">\n          ${idx + 1}\n        </button>\n      `);\n\n      pin.on('click', function () {\n        renderAircraftInspector(comp);\n        $('#blueprint-selector-pills .subsystem-pill').removeClass('active');\n        $(`#blueprint-selector-pills .subsystem-pill[data-id=\"${comp.id}\"]`).addClass('active');\n        $('.hotspot-pin-btn').removeClass('active');\n        $(this).addClass('active');\n      });\n\n      hotspotsLayer.append(pin);\n\n      // Selector pill underneath photo\n      const pill = $(`\n        <button class=\"subsystem-pill ${idx === 0 ? 'active' : ''}\" data-id=\"${comp.id}\">\n          ${comp.title}\n        </button>\n      `);\n\n      pill.on('click', function () {\n        renderAircraftInspector(comp);\n        $('#blueprint-selector-pills .subsystem-pill').removeClass('active');\n        $(this).addClass('active');\n        $('.hotspot-pin-btn').removeClass('active');\n        $(`.hotspot-pin-btn[data-id=\"${comp.id}\"]`).addClass('active');\n      });\n\n      aircraftSelectorPills.append(pill);\n    });\n\n    renderAircraftInspector(aircraftComponents[0]);\n  }\n\n  // 2. OPERATIONAL METRICS GRID RENDERER\n  const opMetrics = hermesSpecsData.operationalMetrics || [];\n  const metricsGrid = $('#operational-metrics-grid');\n  if (metricsGrid.length && opMetrics.length > 0) {\n    metricsGrid.empty();\n    opMetrics.forEach(function (metric) {\n      const item = $(`\n        <div class=\"metric-card-item\" tabindex=\"0\" role=\"region\" aria-label=\"${metric.badge}: ${metric.value} ${metric.unit}. Hover or focus to view details.\">\n          <div class=\"metric-badge-tag\">${metric.badge}</div>\n          <div class=\"metric-value-num\">${metric.value}</div>\n          <div class=\"metric-unit-lbl\">${metric.unit}</div>\n          <p class=\"metric-desc-text\">${metric.desc}</p>\n        </div>\n      `);\n      metricsGrid.append(item);\n    });\n  }\n\n  // 3. GROUND SUPPORT EQUIPMENT & SOFTWARE ECOSYSTEM INSPECTOR\n  const gseComponents = hermesSpecsData.groundAndSoftwareDeepDive || [];\n  const gseSelectorPills = $('#gse-selector-pills');\n  const renderGSEInspector = createInspectorRenderer('gse-inspector-detail-card');\n\n  gseSelectorPills.empty();\n\n  if (gseComponents.length > 0) {\n    gseComponents.forEach(function (comp, idx) {\n      const pill = $(`\n        <button class=\"subsystem-pill ${idx === 0 ? 'active' : ''}\" data-id=\"${comp.id}\">\n          ${comp.title}\n        </button>\n      `);\n\n      pill.on('click', function () {\n        renderGSEInspector(comp);\n        $('#gse-selector-pills .subsystem-pill').removeClass('active');\n        $(this).addClass('active');\n      });\n\n      gseSelectorPills.append(pill);\n    });\n\n    renderGSEInspector(gseComponents[0]);\n  }\n\n  // 4. FLIGHT QUALIFICATION & TESTING PIPELINE (EXPANDABLE ACCORDION GRID)\n  const testingComponents = hermesSpecsData.testingAndValidation || hermesSpecsData.qualificationTesting || [];\n  const testingGrid = $('#testing-pipeline-grid');\n\n  if (testingGrid.length && testingComponents.length > 0) {\n    testingGrid.empty();\n    testingComponents.forEach(function (comp, idx) {\n      const imagePath = testingImages[comp.id];\n      let specRows = '';\n      if (comp.specs) {\n        Object.keys(comp.specs).forEach(function (key) {\n          specRows += `\n            <div class=\"test-spec-row\">\n              <span class=\"test-spec-key\">${key}:</span>\n              <span class=\"test-spec-val\">${comp.specs[key]}</span>\n            </div>\n          `;\n        });\n      }\n\n      // First card (idx === 0) starts expanded by default\n      const isDefaultExpanded = idx === 0;\n\n      const card = $(`\n        <div class=\"testing-accordion-card ${isDefaultExpanded ? 'expanded' : ''}\" data-id=\"${comp.id}\">\n          <div class=\"testing-accordion-header\" \n               tabindex=\"0\" \n               role=\"button\" \n               aria-expanded=\"${isDefaultExpanded}\" \n               aria-controls=\"test-accordion-body-${idx}\"\n               aria-label=\"${comp.title}. Click or press Enter to toggle.\">\n            <div class=\"testing-header-left\">\n              <span class=\"testing-badge-category\">${comp.category || 'Qualification Campaign'}</span>\n              <h3 class=\"testing-accordion-title\">${comp.title}</h3>\n            </div>\n            <div class=\"testing-header-right\">\n              <span class=\"testing-toggle-btn\">${isDefaultExpanded ? 'Collapse' : 'Expand Details'}</span>\n            </div>\n          </div>\n          <div class=\"testing-accordion-body\" id=\"test-accordion-body-${idx}\" style=\"${isDefaultExpanded ? 'display: grid;' : 'display: none;'}\">\n            <div class=\"testing-card-media-col\">\n              <div class=\"testing-image-box\">\n                <img class=\"testing-img-preview\" src=\"${imagePath}\" alt=\"${comp.title}\" \n                     onerror=\"if (!this.dataset.retried) { this.dataset.retried = 'true'; this.src = this.src.endsWith('.png') ? this.src.replace('.png', '.jpg') : this.src.replace('.jpg', '.png'); } else { this.onerror=null; this.parentNode.innerHTML='<div class=\\\\'component-placeholder-box testing-placeholder-box\\\\'><div class=\\\\'placeholder-title\\\\'>${comp.title} Photo</div><p>Drop testing photo at:</p><div class=\\\\'placeholder-path-code\\\\'>static/aircraft/testing/${comp.id}.jpg (or .png)</div></div>'; }\">\n                ${comp.caption ? `<div class=\"component-img-caption testing-img-caption\">${comp.caption}</div>` : ''}\n              </div>\n            </div>\n            <div class=\"testing-card-info-col\">\n              <div class=\"test-specs-container\">\n                ${specRows}\n              </div>\n\n              <p class=\"testing-card-desc\">${comp.description}</p>\n            </div>\n          </div>\n        </div>\n      `);\n\n      /**\n       * Toggles expansion state of testing campaign card.\n       *\n       * @param {jQuery} $header - The header element.\n       */\n      const toggleTestingCard = function ($header) {\n        const parentCard = $header.closest('.testing-accordion-card');\n        const body = parentCard.find('.testing-accordion-body');\n        const toggleBtn = parentCard.find('.testing-toggle-btn');\n\n        if (parentCard.hasClass('expanded')) {\n          body.slideUp(250, function () {\n            parentCard.removeClass('expanded');\n            $header.attr('aria-expanded', 'false');\n          });\n          toggleBtn.text('Expand Details');\n        } else {\n          parentCard.addClass('expanded');\n          $header.attr('aria-expanded', 'true');\n          body.slideDown(250, function () {\n            body.css('display', 'grid');\n          });\n          toggleBtn.text('Collapse');\n        }\n      };\n\n      // Expand / collapse toggle handlers\n      card.find('.testing-accordion-header').on('click', function () {\n        toggleTestingCard($(this));\n      });\n\n      card.find('.testing-accordion-header').on('keydown', function (e) {\n        if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          toggleTestingCard($(this));\n        }\n      });\n\n      testingGrid.append(card);\n    });\n  }\n\n  // 5. SELECTABLE RISK CONTROLS REGISTER\n  const riskList = hermesSpecsData.riskMitigations || [];\n  const riskRegisterList = $('#risk-register-list');\n  const inspector = $('#risk-detail-inspector');\n\n  /**\n   * Creates an inspector block when the source field is present.\n   *\n   * @param {string} heading - Short field heading.\n   * @param {string} value - Field content.\n   * @param {string} className - Styling hook.\n   * @returns {string} Inspector block markup.\n   */\n  function createRiskInspectorBlock(heading, value, className) {\n    if (!value) return '';\n\n    return `\n      <div class=\"inspector-block ${className}\">\n        <div class=\"inspector-block-header\">\n          <span class=\"block-title\">${heading}</span>\n        </div>\n        <p class=\"block-text\">${value}</p>\n      </div>\n    `;\n  }\n\n  /**\n   * Renders the selected risk's documented controls.\n   *\n   * @param {Object} risk - Risk item details.\n   */\n  function renderRiskInspector(risk) {\n    if (!inspector.length || !risk) return;\n\n    const domainMarkup = risk.domain ? `<span class=\"risk-domain-pill\">${risk.domain}</span>` : '';\n    const validationMarkup = risk.validation\n      ? `\n        <div class=\"inspector-footer-bar\">\n          <span class=\"validation-label\">Validation</span>\n          <span class=\"validation-text\">${risk.validation}</span>\n        </div>\n      `\n      : '';\n\n    inspector.attr('aria-live', 'polite').html(`\n      <div class=\"inspector-card-inner\">\n        ${domainMarkup ? `<div class=\"inspector-header-bar\">${domainMarkup}</div>` : ''}\n        <h3 class=\"inspector-risk-title\">${risk.riskTitle}</h3>\n\n        <div class=\"inspector-blocks-wrapper\">\n          ${createRiskInspectorBlock('Impact', risk.threatImpact, 'threat-card')}\n          ${createRiskInspectorBlock('Mitigation', risk.mitigation, 'mitigation-card')}\n          ${createRiskInspectorBlock('Fallback', risk.safeguard, 'safeguard-card')}\n        </div>\n        ${validationMarkup}\n      </div>\n    `);\n  }\n\n  if (riskRegisterList.length && riskList.length > 0) {\n    riskRegisterList.empty();\n\n    riskList.forEach(function (risk, idx) {\n      const isFirst = idx === 0;\n\n      const item = $(`\n        <button class=\"risk-register-item ${isFirst ? 'active' : ''}\"\n                type=\"button\"\n                aria-pressed=\"${isFirst}\"\n                data-id=\"${risk.id}\">\n          ${risk.domain ? `<span class=\"risk-register-item-domain\">${risk.domain}</span>` : ''}\n          <span class=\"risk-register-item-title\">${risk.riskTitle}</span>\n        </button>\n      `);\n\n      /**\n       * Selects an item in the risk register.\n       *\n       * @param {jQuery} $elem - Register item element.\n       */\n      const selectRiskItem = function ($elem) {\n        $('.risk-register-item')\n          .removeClass('active')\n          .attr('aria-pressed', 'false');\n        $elem\n          .addClass('active')\n          .attr('aria-pressed', 'true');\n        renderRiskInspector(risk);\n      };\n\n      item.on('click', function () {\n        selectRiskItem($(this));\n      });\n\n      item.on('keydown', function (e) {\n        const isNextKey = e.key === 'ArrowDown' || e.key === 'ArrowRight';\n        const isPreviousKey = e.key === 'ArrowUp' || e.key === 'ArrowLeft';\n\n        if (isNextKey || isPreviousKey) {\n          e.preventDefault();\n          const items = riskRegisterList.find('.risk-register-item');\n          const direction = isNextKey ? 1 : -1;\n          const nextIndex = (idx + direction + items.length) % items.length;\n          items\n            .eq(nextIndex)\n            .trigger('focus')\n            .trigger('click');\n        }\n      });\n\n      riskRegisterList.append(item);\n    });\n\n    renderRiskInspector(riskList[0]);\n  }\n\n  // CAD Control View Buttons\n  $('.cad-btn').on('click', function () {\n    $('.cad-btn').removeClass('active');\n    $(this).addClass('active');\n\n    const view = $(this).data('view');\n    if (modelViewer) {\n      if (view === 'fuselage') {\n        modelViewer.cameraOrbit = '45deg 75deg 2m';\n      } else if (view === 'airdrop') {\n        modelViewer.cameraOrbit = '90deg 90deg 1.5m';\n      } else if (view === 'gimbal') {\n        modelViewer.cameraOrbit = '0deg 80deg 1.2m';\n      } else {\n        modelViewer.cameraOrbit = 'auto auto auto';\n      }\n    }\n  });\n\n  // STICKY JUMP-BAR SCROLLSPY & SMOOTH SCROLL\n  const stickyLinks = $('.sticky-nav-link');\n  const sections = [];\n\n  stickyLinks.each(function () {\n    const targetId = $(this).attr('href');\n    if (targetId && $(targetId).length) {\n      sections.push({\n        link: $(this),\n        elem: $(targetId),\n      });\n    }\n  });\n\n  // Smooth scroll click handler\n  stickyLinks.on('click', function (e) {\n    e.preventDefault();\n    const targetId = $(this).attr('href');\n    const targetElem = $(targetId);\n    if (targetElem.length) {\n      const navHeight = $('#hermes-sticky-nav-bar').outerHeight() || 60;\n      const targetTop = targetElem.offset().top - navHeight - 15;\n      $('html, body').animate({ scrollTop: targetTop }, 350);\n    }\n  });\n\n  // ScrollSpy active section tracker\n  $(window).on('scroll resize', function () {\n    const scrollPos = $(window).scrollTop();\n    const navHeight = $('#hermes-sticky-nav-bar').outerHeight() || 60;\n    const triggerPos = scrollPos + navHeight + 80;\n\n    let currentSection = null;\n    for (let i = 0; i < sections.length; i++) {\n      if (sections[i].elem.offset().top <= triggerPos) {\n        currentSection = sections[i];\n      }\n    }\n\n    if (currentSection) {\n      stickyLinks.removeClass('active');\n      currentSection.link.addClass('active');\n    }\n  });\n});\n","var map = {\n\t\"./hermes.gltf\": 71,\n\t\"./textures/carbon fiber eproxy.jpg\": 72,\n\t\"./textures/data.bin\": 73,\n\t\"./textures/n_PlasticPolystyrene_normalmap.dds\": 495,\n\t\"./textures/n_PlasticPolystyrene_normalmap.png\": 74,\n\t\"./textures/n_carbon fiber eproxy.jpg\": 75,\n\t\"./textures/n_cast.dds\": 496,\n\t\"./textures/n_cast.png\": 76,\n\t\"./textures/n_satinwood_n.dds\": 497,\n\t\"./textures/n_satinwood_n.png\": 77,\n\t\"./textures/polished beech.jpg\": 78,\n\t\"./textures/polished birch.jpg\": 79,\n\t\"./textures/polished cherry.jpg\": 80\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 494;","export default __webpack_public_path__ + \"static/models/textures/n_PlasticPolystyrene_normalmap.dds\";","export default __webpack_public_path__ + \"static/models/textures/n_cast.dds\";","export default __webpack_public_path__ + \"static/models/textures/n_satinwood_n.dds\";","var map = {\n\t\"./carbon fiber eproxy.jpg\": 72,\n\t\"./data.bin\": 73,\n\t\"./n_PlasticPolystyrene_normalmap.png\": 74,\n\t\"./n_carbon fiber eproxy.jpg\": 75,\n\t\"./n_cast.png\": 76,\n\t\"./n_satinwood_n.png\": 77,\n\t\"./polished beech.jpg\": 78,\n\t\"./polished birch.jpg\": 79,\n\t\"./polished cherry.jpg\": 80\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 498;","export default __webpack_public_path__ + \"cf36873db2097599a840a825a9403d4f.png\";","export default __webpack_public_path__ + \"d20c54178d71fe32b6f2c35be640306d.png\";","export default __webpack_public_path__ + \"251f99681df17d15f659ced54f3677b2.png\";","export default __webpack_public_path__ + \"static/models/hermes.gltf\";","export default __webpack_public_path__ + \"static/models/textures/carbon fiber eproxy.jpg\";","export default __webpack_public_path__ + \"static/models/textures/data.bin\";","export default __webpack_public_path__ + \"static/models/textures/n_PlasticPolystyrene_normalmap.png\";","export default __webpack_public_path__ + \"static/models/textures/n_carbon fiber eproxy.jpg\";","export default __webpack_public_path__ + \"static/models/textures/n_cast.png\";","export default __webpack_public_path__ + \"static/models/textures/n_satinwood_n.png\";","export default __webpack_public_path__ + \"static/models/textures/polished beech.jpg\";","export default __webpack_public_path__ + \"static/models/textures/polished birch.jpg\";","export default __webpack_public_path__ + \"a9bc280f241fa2eedf964ed02cc7a9b4.png\";","export default __webpack_public_path__ + \"static/models/textures/polished cherry.jpg\";","export default __webpack_public_path__ + \"f2c3bb9263880e7625a15c4c08504ca3.png\";"],"sourceRoot":""}