<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Repair Class">
<meta name="theme-color" content="#0d1b2e">
<title>Aircraft Repair Classification</title>
<!-- App Icons -->
<link rel="apple-touch-icon" sizes="180x180" href="data:image/png;base64,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">
<link rel="apple-touch-icon" sizes="152x152" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJgAAACYCAIAAACXoLd2AAAf4klEQVR4nO2deZAdx33fv7/unnnn7mIXu4sFsMDiBnEQBAkeAEmBN0gYvEmHIinqCGXLohI7clLlyFc5rsR2bMe0ZMexHNmyVRYtiZR4wTIJ8AIJkARxEfexwAIL7C72vt8xM92/X/54byFQEiWVHEfO1HwKhXoPNW9ed396enq6v6hHIoKE//9RP+sCJPzfIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExIREZExKRMSERGRMSkTEhERkTEpExwVR+q44q76TylxAIsIKSgCAgpQkaokG6cgwTCCC+8DEBCeCEtECTCMmFkwIsYIFWUISfLSywAk3QxNXqAhACCPRhhYvgpFJHEQgUKU0aTCxCiohAmGo6AgOVVjEXNcAPIAIwxIkQoEF04WD6KS8t84F3BHHsmBUpQFgJkYiArCISIkAYIFEQCAkJiFigABGQA5iEwAoiwNRLAimifyXXvgAMEKCqL1HpkT/uQwImAAQl8j1tU91VA6ApgQQH4Ptb9gPnE+ZKnyaCiDBE/7Obhy7+/ciKwgs9UyI4C+2BpgplHTuI0YrgSFCpFE11IiFRTJUqgyAKIcEBldqmKhX+mSIChhCICFJ9VbX4I1yKgKQ6WE0dTdXOSwJACwgElsoBlWtd6w85pUBYiKZaCQCEiCod7Kcesr7XbwTQSjnHI6Pj3V09A70jwz1B/8AQeZLNey2tzctXXjJz9nSjEFmXMpVBVwSV0aBaPyaIqtaUCBogwMmFEv+McSQBWIM8KCJRqLThjymbCESIRKYam6AYJAJWUw0oECIRCOSCjA/pt5V+BEAAK9CAIgc4gADvp60aibgLw16hFJw8dXpsdCyTy/omk/ey7OzQSOHk6ZNHT5waGBlccsmiOzZuWLlwFotjCEgYAiEFrZgIZCEhCYtopXyQZoBFiESLwlQFfnaE4JI4j5QPVbmRk6jKMHvh0vxBHOBEFAhOFEgpQAlgmZ0SH1CiRCq9QZwAIJBA04cOruxEKRIBCQRwCgw4goKkftprkpgtoJh5YGB4cGSsvqGhsbmeiLwPXuaFEG++tWfz5pfO9w8+9sj99236SMjsxAIupY2CBwdEU2PoFFIKBIDR1igSMRfdyf9FpV58vxARIgIRiTiIFUeAUoqEACgQEYl8+FQHsBySMlYkYmhSRpGGECzBITBQGoYcsRV27EiB2XmkPOVDpmYwHzx7ZB0qZSA4EQKJiBApgrnoyItr8WObqyISg4NDhVLY2NzspfwwEscUuXJ7+7GjR4/NbJndMK1x6ZJFdTnvfH/pH556duvWVx977KEHHtwAWE/L2MD5id6BhnRdynlBOSjYckFstjZfX1ebqZ2GlC+wExwY5WdN6kLh/p+JrHyXiAig2MExCDDaiTApRUpjav76YSUKJoa6z02bOVfS2YiUAAaiYTVbRD6UFiOOxLJljjxNWiBCivwLU1D6oB5hZ9lqz3fMWililjDSZKA1jLr4yIur8KOrbIhQKpa0Ma2zm5Sm0UJ45lzv2NjEsfaOQ4dOzpjRPFEY7jz1Xk0+/+nHH57bUvv5X35EXPiXf/WNhqbGjbdcwRwN9/Qc2/ne0LEOO1xauGwZ1+cKJMViYXRgyIT2qmvWrbzh2nx9nn92v8otUunxFI0XMDrpNU6Dz/A9R9W5j5IfbpGZFVFwqvPlP/+zuz/3K/lFi2Eo0sQgzQQmMQqqcp9FWilhRaWIJya0l8K01A+tMEFI2PfSLAER4CxZpsDZkRHTMA212Z+ujoajCCK1tTXWue7ugdNnu46f7Dx2/Nj4BGbOXJNO1587d/b0mdFVKxue+vtnZrVMe/Thu5/47CdPd5W/+KW/WXXp4tnT04sXL1m8YsXLv/8nw/1jNz38AOY0QgHF0kTfSOf23W8+9XT7tu13Pv7x9IpLWCrPMB/e4tVH2MrjDX7UePd9n/sBD0RUnXoQOecgooz5+7/6StjR9clf+9XUnBYRdqQVxAmUVOeQHzgpC7NTxut5e9fY27t7r9q7aO5CBTGKhKCgAM36e0+NHFoF/f6WLZu/+rXHPvvZtjtuFRFVubDoorOzlAcHjp48sXjVilQ+CwYp773vbt72zAuf/q1fr1+9vHov+PGV/sD9QInYVDo9OWlf/O6Orz215YV/3LVnz2mtGxYvXpWtze07dOTQsY6Fl6wSr/ZUz+hLb+351j++nsviFz9998Ro/989syXUXmh8Jj3dSUYirs1YaOcEqWzNnLaVD/38J37tC8X2M29/6YsYGgZQjIolV4KzFohYiiKRtVHEI2EQRCUSV2I3Yq0VEiJnIxc6sSiBRyQouDJHFlbKQTDoQsuQiDkKRaRkXRA4TLAtBaPlCXauFAWRCyksy+QkuVA0AuHm+obm1llhYz5SpJ1nArGOi2QjW2BXcBJYDstsLSMMwoicUlF49lxHb/G61euG3ngRpRFmaBshnCjDOqecDSOI44htkZ1jreuaGltmtfKM6ey4ZMNyWCTFZVeOOBQrRSdO6443tm3/H3+uxwMdAQyBzuXqalubVeN0B0zAOi6jVCRHlqjIUYlLkxIU2drIwoqLnIyHLDTObsK5wDpmVqG1UN6ZcwODI0E631I7bc6SS64yXkOhZJ/65j/4Wd3Q1ABjQph9B07WNrR2Dbp3j529dPnMdWvXvPT6zvMTjFROmVTWsYJQLsPKEDzAlLQeNshdtuLmTRuHDx7se2enIsoZLwuicoDIMkMJm1Loiar3tBTGx44cocJEnTEqsDw+rm2gCKKgncuJylFajRdc/3Aq4hrHECZPKU/b4giR9X0dTUyiXMymtbORr5Qrh3aiQOzIkBObIrXpo4/e96lHpTZjxVHEKdE1oqVYwmRJRRbiKs/FIlBah2KV0h27dtGsOZd+7OFjh/f1nDhgMkqx+FoySlsNRcw2Iud0GJlMDlrPX7H845/4eNO8OcKSgkqncmFYVC7yLBORFtEA2WCmMZnaBpXKq5THnlmx8fbP/Pav17U2O4YP0YrCUmn0fK8dK+eUn46sCYspRcYztlzQmiiI3MBIjaK8VlosE4yXzo1OFN/c8e7whEwUEYQ4fbZ7dGRwfGJi/Y0f6T3f/8D9D371r/+2VJy46eYNYXny0PvHZ7dMv+aSubdtuO35336yvf3UvCsWAyzVxQ0BSDFAUEQKEE8aLltRT+nx46fPbnll+MSJejHUWLfsmnW5Ba1nOzp6duyV4TGv1pzd/74bGHnwN77wzjvP7t+xq86nZSsvWf2xT1BdjR9J1De8780dp04d7x3sa0nl7rjr7tTaVV3797Zvfzufy6258+5nvvXc4IHjM2pS6x68d+YV6w6+/Mb2LVujkbElK5be/LGf92pqOg8c6tq+W7LRmiceTXEGlruOHtm1d2fvUF+6e2DpZZde/dF7TV2dEhKSkGBIIXIHjhxef/8jNLc+vXBRxxtvTV+y5tCWN9VAt85lhmqnXXbzdfVNM9oPHe3dv7dUjIJsRp/pGHpz5x1f/L38skbbN3loz679e99ToxO1zrvqrjuar11TGh2VgaFMITi3/d1+BLNbZ1tK9b21s9jfddVnHk/PaMFkuP/tbe2d55TOh/0TTWn/uo03pFM00LV/91vbL12ybNoli7b/7bPne3pqZzTcsO7axjtu4VpfOdG9A4MHj508efrcgSMn+obHTp7pWrrispbWuStWLE2nM08++aVLV60qFSMgPWfO4m1v7h4bLRCwYP68TCZz5syZqbsUAEhl1ZABEkCsSKCRbalv0Jnejs5Fl64MznTtf+aFBXPm5moyoSu1tLS0TJvevnv3wstXX7posR4YPLp1a20289CjH1126codzz///j88T4GDp59+6uu9o/03PHLPRz//6Wk+bfnjP3VD/VGpMLz3wOnXtu976eXFbXMffOC+BmVe+8M/O/S1p8fO9957/4Ob7rm3Y+eubV/+WzURTIyMdx45PHjiWIaggmDfc8++9/rW1Vde8fCjj629at2BHTujYgBSlYUZB0mT3/X+Ic94M+bPlnzN5bdsOvfKm7bv/JKrru7etb/juc1XrVhZV1trncydN78uV3v60NHrb75l+eKltcC0lAdg2/MvHn5354Y77/y5e+6bWVf74l/+ReHk8bMH9gyf7vScdBw+2v7+gUL/oA7s6MmOM7v2SBSiVNr6v796Yv/Bm37ujk333XvnPfepycK3fuN3ot6BseHB0QOHT2555cze3StvvPqexx9pSJnt//1PJ/cfUSCjtBqdKLXOma/86XWDkzNnzUtl8m3zF3d0nn3hhS1z2+YNDg4NDY995ol/9+wz385kvFtu3dh5tndgZKK5OZ9OpwYGRi6aX1w0+yBSEEMUgn1fe346nc3UNzVsfOihZ/YejoaHqS4jUTmdrR8b6V/z4J0Nq68onO0Y0Lj9+rX5NVehMDn95mtCVzrzyvYrHtgkzbnWy5asuXx1rqUJsLc+/vB3P/tbvd0986+7mfa1v71t+7Ibb8i2LUA5unHJwm/86heCwtj1n/8lRCE8f5Mqb/7KV9cP37vy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">
<link rel="apple-touch-icon" sizes="120x120" href="data:image/png;base64,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">
<link rel="apple-touch-icon" sizes="76x76" href="data:image/png;base64,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">
<!-- Inline Manifest -->
<link rel="manifest" href="data:application/manifest+json,%7B%22name%22%3A%22Aircraft+Repair+Classification%22%2C%22short_name%22%3A%22Repair+Class%22%2C%22start_url%22%3A%22.%22%2C%22display%22%3A%22standalone%22%2C%22background_color%22%3A%22%230d1b2e%22%2C%22theme_color%22%3A%22%230d1b2e%22%7D">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;600;700&family=Source+Code+Pro:wght@400;600&family=Barlow:wght@300;400;500;600&display=swap" rel="stylesheet">
<style>
:root {
--bg: #0d1b2e;
--panel: #111f35;
--panel2: #162540;
--border: #243550;
--major: #e84141;
--major-dim: #5a1515;
--major-bg: #2a1010;
--minor: #22c55e;
--minor-dim: #0f4020;
--minor-bg: #0d2b18;
--amber: #f59e0b;
--amber-dim: #5a3005;
--amber-bg: #2a1d05;
--blue: #3b82f6;
--sky: #7dd3fc;
--purple: #a78bfa;
--purple-dim: #2d1660;
--purple-bg: #1a0f38;
--teal: #2dd4bf;
--teal-dim: #0a3530;
--teal-bg: #0a2828;
--text: #e2e8f0;
--muted: #64748b;
--safe-top: env(safe-area-inset-top, 0px);
--safe-bot: env(safe-area-inset-bottom, 0px);
}
* { box-sizing: border-box; margin: 0; padding: 0; -webkit-tap-highlight-color: transparent; }
html, body {
height: 100%;
background: var(--bg);
color: var(--text);
font-family: 'Barlow', sans-serif;
font-weight: 400;
overscroll-behavior: none;
}
/* ── APP SHELL ── */
#app {
display: flex;
flex-direction: column;
height: 100vh;
height: 100dvh;
}
/* ── TOP NAV BAR ── */
#navbar {
flex-shrink: 0;
background: var(--panel);
border-bottom: 1px solid var(--border);
padding: calc(var(--safe-top) + 10px) 16px 10px;
display: flex;
align-items: center;
gap: 12px;
position: relative;
z-index: 10;
}
#navbar img.logo {
height: 22px;
width: auto;
object-fit: contain;
}
#navbar .nav-title {
font-family: 'Oswald', sans-serif;
font-size: 15px;
font-weight: 600;
letter-spacing: 1px;
text-transform: uppercase;
color: #fff;
flex: 1;
}
#back-btn {
display: none;
align-items: center;
gap: 4px;
background: none;
border: none;
color: var(--sky);
font-family: 'Barlow', sans-serif;
font-size: 15px;
font-weight: 500;
cursor: pointer;
padding: 4px 0;
flex-shrink: 0;
}
#back-btn.visible { display: flex; }
#back-btn svg { width: 18px; height: 18px; }
#reset-btn {
background: none;
border: 1px solid var(--border);
border-radius: 6px;
color: var(--muted);
font-family: 'Source Code Pro', monospace;
font-size: 10px;
letter-spacing: 1px;
padding: 5px 10px;
cursor: pointer;
flex-shrink: 0;
transition: all .15s;
}
#reset-btn:active { border-color: var(--sky); color: var(--sky); }
/* ── PHASE BAR ── */
#phase-bar {
flex-shrink: 0;
display: flex;
align-items: center;
gap: 0;
background: var(--panel2);
border-bottom: 1px solid var(--border);
padding: 0;
}
.phase-seg {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 8px 4px;
position: relative;
transition: background .3s;
}
.phase-seg.active { background: rgba(59,130,246,0.12); }
.phase-seg.done { background: rgba(34,197,94,0.08); }
.phase-seg.signoff-active { background: rgba(245,158,11,0.12); }
.phase-dot {
width: 8px; height: 8px;
border-radius: 50%;
border: 1.5px solid var(--muted);
background: transparent;
margin-bottom: 3px;
transition: all .3s;
}
.phase-seg.active .phase-dot { background: var(--blue); border-color: var(--blue); box-shadow: 0 0 6px var(--blue); }
.phase-seg.done .phase-dot { background: var(--minor); border-color: var(--minor); }
.phase-seg.signoff-active .phase-dot { background: var(--amber); border-color: var(--amber); box-shadow: 0 0 6px var(--amber); }
.phase-name {
font-family: 'Source Code Pro', monospace;
font-size: 8px;
letter-spacing: 0.5px;
color: var(--muted);
text-transform: uppercase;
}
.phase-seg.active .phase-name { color: var(--sky); }
.phase-seg.done .phase-name { color: var(--minor); }
.phase-seg.signoff-active .phase-name { color: var(--amber); }
.phase-divider { width: 1px; background: var(--border); align-self: stretch; }
/* ── PROGRESS ── */
#progress-wrap {
flex-shrink: 0;
height: 3px;
background: var(--border);
overflow: hidden;
}
#progress-fill {
height: 100%;
transition: width .4s ease, background .4s ease;
background: linear-gradient(90deg, var(--blue), var(--sky));
}
#progress-fill.signoff { background: linear-gradient(90deg, var(--amber), #fde68a); }
#progress-fill.complete { background: linear-gradient(90deg, var(--minor), var(--teal)); }
/* ── SCROLL AREA ── */
#scroll-area {
flex: 1;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
padding: 16px 14px calc(var(--safe-bot) + 24px);
}
/* ── BREADCRUMB ── */
#breadcrumb {
display: flex;
flex-wrap: wrap;
gap: 4px;
align-items: center;
margin-bottom: 14px;
min-height: 18px;
font-family: 'Source Code Pro', monospace;
font-size: 10px;
color: var(--muted);
}
.crumb { color: var(--sky); opacity: 0.7; cursor: pointer; }
.crumb-sep { opacity: 0.3; }
/* ── NODE CARD ── */
.node-card {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 12px;
overflow: hidden;
animation: slideUp .22s ease;
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
.node-card.phase-signoff { border-color: rgba(245,158,11,0.3); }
.node-card.result-major { border-color: rgba(232,65,65,0.4); }
.node-card.result-minor { border-color: rgba(34,197,94,0.4); }
/* Step banner */
.step-banner {
background: #0d1b2e;
border-bottom: 1px solid var(--border);
padding: 10px 14px;
}
.step-category {
font-family: 'Source Code Pro', monospace;
font-size: 9px;
letter-spacing: 2px;
color: var(--sky);
text-transform: uppercase;
opacity: 0.7;
margin-bottom: 2px;
}
.step-subtitle {
font-family: 'Oswald', sans-serif;
font-size: 14px;
font-weight: 600;
color: #fff;
letter-spacing: 0.5px;
}
/* Phase badge */
.phase-badge {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 3px 10px;
border-radius: 4px;
font-family: 'Source Code Pro', monospace;
font-size: 9px;
letter-spacing: 1.5px;
text-transform: uppercase;
margin: 12px 14px 0;
}
.phase-badge.classification { background: rgba(59,130,246,0.15); border: 1px solid rgba(59,130,246,0.3); color: var(--sky); }
.phase-badge.signoff { background: rgba(245,158,11,0.12); border: 1px solid rgba(245,158,11,0.3); color: var(--amber); }
/* Question */
.question {
font-family: 'Oswald', sans-serif;
font-size: clamp(17px, 4vw, 22px);
font-weight: 600;
line-height: 1.3;
color: #fff;
padding: 10px 14px 6px;
letter-spacing: 0.2px;
}
/* Context */
.context {
font-size: 12px;
color: var(--muted);
line-height: 1.65;
margin: 0 14px 14px;
border-left: 2px solid var(--border);
padding: 8px 10px;
background: rgba(255,255,255,0.02);
border-radius: 0 4px 4px 0;
}
.context strong { color: #94a3b8; font-weight: 500; }
/* ── CHOICES ── */
.choices {
display: flex;
flex-direction: column;
gap: 8px;
padding: 0 14px 14px;
}
.choice-btn {
background: var(--panel2);
border: 1px solid var(--border);
border-radius: 10px;
padding: 13px 14px;
color: var(--text);
font-family: 'Barlow', sans-serif;
font-size: 14px;
font-weight: 400;
text-align: left;
cursor: pointer;
display: flex;
align-items: center;
gap: 12px;
transition: all .15s ease;
width: 100%;
-webkit-appearance: none;
position: relative;
overflow: hidden;
}
.choice-btn:active { transform: scale(0.98); opacity: 0.85; }
.choice-btn.yes { border-left: 3px solid var(--major); }
.choice-btn.no { border-left: 3px solid var(--minor); }
.choice-btn.multi { border-left: 3px solid var(--blue); }
.choice-btn.amber { border-left: 3px solid var(--amber); }
.choice-btn.purple { border-left: 3px solid var(--purple); }
.choice-btn.teal { border-left: 3px solid var(--teal); }
.choice-icon {
width: 34px; height: 34px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 10px; font-weight: 700;
flex-shrink: 0;
font-family: 'Oswald', sans-serif;
letter-spacing: 0;
}
.choice-btn.yes .choice-icon { background: var(--major-dim); color: var(--major); }
.choice-btn.no .choice-icon { background: var(--minor-dim); color: var(--minor); }
.choice-btn.multi .choice-icon { background: rgba(59,130,246,0.15); color: var(--sky); }
.choice-btn.amber .choice-icon { background: var(--amber-dim); color: var(--amber); }
.choice-btn.purple .choice-icon { background: var(--purple-dim); color: var(--purple); }
.choice-btn.teal .choice-icon { background: var(--teal-dim); color: var(--teal); }
.choice-text { flex: 1; min-width: 0; }
.choice-label { font-size: 14px; font-weight: 500; color: #e2e8f0; line-height: 1.35; }
.choice-sub { font-size: 11px; color: var(--muted); margin-top: 2px; line-height: 1.4; }
.choice-arrow { color: var(--muted); font-size: 16px; flex-shrink: 0; }
/* ── RESULT ── */
.result-header {
padding: 20px 14px 14px;
text-align: center;
border-bottom: 1px solid var(--border);
}
.result-badge {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 20px;
border-radius: 6px;
font-family: 'Oswald', sans-serif;
font-size: 22px;
font-weight: 700;
letter-spacing: 2px;
text-transform: uppercase;
margin-bottom: 10px;
}
.result-major .result-badge { background: rgba(232,65,65,0.12); border: 1.5px solid var(--major); color: var(--major); }
.result-minor .result-badge { background: rgba(34,197,94,0.10); border: 1.5px solid var(--minor); color: var(--minor); }
.result-summary { font-size: 13px; color: #94a3b8; line-height: 1.7; }
/* Signoff block */
.signoff-block {
margin: 12px 14px;
border-radius: 8px;
overflow: hidden;
border: 1px solid var(--border);
}
.signoff-header {
padding: 9px 14px;
font-family: 'Source Code Pro', monospace;
font-size: 10px;
letter-spacing: 2px;
text-transform: uppercase;
display: flex;
align-items: center;
gap: 6px;
font-weight: 600;
}
.signoff-header.ap { background: rgba(34,197,94,0.12); color: var(--minor); border-bottom: 1px solid rgba(34,197,94,0.2); }
.signoff-header.ia { background: rgba(245,158,11,0.12); color: var(--amber); border-bottom: 1px solid rgba(245,158,11,0.2); }
.signoff-header.der { background: rgba(167,139,250,0.12);color: var(--purple); border-bottom: 1px solid rgba(167,139,250,0.2); }
.signoff-header.r145 { background: rgba(45,212,191,0.12); color: var(--teal); border-bottom: 1px solid rgba(45,212,191,0.2); }
.signoff-body { padding: 12px 14px; background: var(--panel2); }
.signoff-who { font-size: 13px; font-weight: 600; color: #e2e8f0; margin-bottom: 4px; }
.signoff-desc { font-size: 11px; color: var(--muted); line-height: 1.6; }
.pills { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.pill {
display: inline-block; padding: 2px 8px; border-radius: 4px;
font-family: 'Source Code Pro', monospace; font-size: 9px; letter-spacing: 1px; font-weight: 600;
}
.pill-ap { background: rgba(34,197,94,0.15); color: var(--minor); border: 1px solid rgba(34,197,94,0.3); }
.pill-ia { background: rgba(245,158,11,0.15); color: var(--amber); border: 1px solid rgba(245,158,11,0.3); }
.pill-der { background: rgba(167,139,250,0.15);color: var(--purple); border: 1px solid rgba(167,139,250,0.3); }
.pill-r145 { background: rgba(45,212,191,0.15); color: var(--teal); border: 1px solid rgba(45,212,191,0.3); }
.pill-form { background: rgba(232,65,65,0.12); color: #fca5a5; border: 1px solid rgba(232,65,65,0.3); }
/* Reqs table */
.reqs-box { margin: 0 14px 12px; background: var(--panel2); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.reqs-title { font-family: 'Source Code Pro', monospace; font-size: 9px; letter-spacing: 2px; color: var(--amber); text-transform: uppercase; padding: 8px 12px; border-bottom: 1px solid var(--border); }
.req-row { display: flex; gap: 10px; padding: 7px 12px; border-bottom: 1px solid rgba(255,255,255,0.04); font-size: 12px; line-height: 1.5; }
.req-row:last-child { border-bottom: none; }
.req-label { color: var(--sky); font-family: 'Source Code Pro', monospace; font-size: 10px; min-width: 80px; flex-shrink: 0; padding-top: 1px; }
.req-val { color: #cbd5e1; font-size: 11px; }
/* Examples */
.examples-box { margin: 0 14px 14px; }
.examples-title { font-family: 'Source Code Pro', monospace; font-size: 9px; letter-spacing: 2px; color: var(--amber); text-transform: uppercase; margin-bottom: 6px; }
.example-item { display: flex; gap: 8px; align-items: flex-start; padding: 5px 0; border-bottom: 1px solid rgba(255,255,255,0.04); font-size: 11px; color: var(--muted); line-height: 1.4; }
.example-item:last-child { border-bottom: none; }
.ex-dot { width: 5px; height: 5px; border-radius: 50%; margin-top: 4px; flex-shrink: 0; }
.result-major .ex-dot { background: var(--major); }
.result-minor .ex-dot { background: var(--minor); }
/* Result action buttons */
.result-actions { display: flex; gap: 8px; padding: 0 14px 14px; }
.action-btn {
flex: 1; padding: 12px; border-radius: 10px;
border: 1px solid var(--border); background: var(--panel2);
color: var(--muted); font-family: 'Barlow', sans-serif;
font-size: 13px; font-weight: 500; cursor: pointer;
transition: all .15s; text-align: center;
}
.action-btn:active { border-color: var(--sky); color: var(--sky); }
/* ── DISCLAIMER ── */
#disclaimer {
text-align: center;
padding: 16px 14px 8px;
font-family: 'Source Code Pro', monospace;
font-size: 9px;
color: var(--muted);
letter-spacing: 0.5px;
line-height: 1.7;
opacity: 0.6;
}
</style>
</head>
<body>
<div id="app">
<!-- Navbar -->
<div id="navbar">
<button id="back-btn" onclick="goBackOne()" aria-label="Back">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
<polyline points="15 18 9 12 15 6"></polyline>
</svg>
Back
</button>
<span class="nav-title">Repair Classification</span>
<button id="reset-btn" onclick="reset()">RESET</button>
</div>
<!-- Phase bar -->
<div id="phase-bar">
<div class="phase-seg active" id="seg1">
<div class="phase-dot"></div>
<div class="phase-name">Classify</div>
</div>
<div class="phase-divider"></div>
<div class="phase-seg" id="seg2">
<div class="phase-dot"></div>
<div class="phase-name">Sign-off</div>
</div>
<div class="phase-divider"></div>
<div class="phase-seg" id="seg3">
<div class="phase-dot"></div>
<div class="phase-name">Result</div>
</div>
</div>
<!-- Progress -->
<div id="progress-wrap">
<div id="progress-fill" style="width:5%"></div>
</div>
<!-- Main scroll area -->
<div id="scroll-area">
<div id="breadcrumb"></div>
<div id="tree"></div>
<div id="disclaimer">
14 CFR Part 43 · Appendix A · §65.95 · AC 43.13-1B/2B · AC 43-214A<br>
Educational guidance only. Always consult the applicable AMM and a qualified certificated mechanic or DER.
</div>
</div>
</div>
<script>
// ─── DATA ────────────────────────────────────────────────────────
const nodes = {
start: {
phase:"classification",
step:"Classification — Step 1: Component Category",
question:"Which primary category best describes the component being repaired?",
context:"14 CFR Part 43 Appendix A organizes major repair criteria by component category. Select the category that most closely matches the part being worked on.",
choices:[
{label:"Airframe",sub:"Fuselage, wing, empennage, nacelles, flight controls, landing gear, floats, hulls",next:"af_part",type:"multi"},
{label:"Powerplant",sub:"Reciprocating or turbine engine",next:"pp_part",type:"multi"},
{label:"Propeller",sub:"Fixed-pitch, controllable, or feathering propeller",next:"prop_part",type:"multi"},
{label:"Radio / Instruments / Appliances",sub:"Communication, navigation, instruments, accessories",next:"radio_part",type:"multi"},
]
},
af_part: {
phase:"classification",
step:"Airframe — Step 2: Specific Component",
question:"Which airframe component or area is being repaired?",
context:"Appendix A(a) lists specific airframe parts that trigger major repair classification.",
choices:[
{label:"Box beam, spar, or spar cap",next:"af_box_beam",type:"multi"},
{label:"Skin (stressed/load-bearing)",next:"af_skin",type:"multi"},
{label:"Rib, former, or bulkhead",next:"af_rib",type:"multi"},
{label:"Flight control surface",next:"af_control",type:"multi"},
{label:"Landing gear or float/hull",next:"af_gear",type:"multi"},
{label:"Skin joint, fitting, or splice",next:"af_fitting",type:"multi"},
{label:"Fairing, cowling, or secondary structure",next:"af_secondary",type:"multi"},
]
},
af_box_beam: {
phase:"classification",
step:"Airframe — Spar/Box Beam: Damage Type",
question:"What type of work is being done to the spar, spar cap, or box beam?",
context:"App. A(a)(1): Repairs involving the flanges or spar caps, or that change cross-sectional area/strength, are MAJOR. Corrosion removal within limits is minor.",
choices:[
{label:"Repair or splice to spar cap, flange, or tension/compression chord",next:"so_major_airframe_structural",type:"yes"},
{label:"Web repair — crack stop, doubler, or patch (not affecting spar cap/flange)",next:"af_spar_web",type:"multi"},
{label:"Corrosion removal or surface treatment on web, no cross-section change",next:"af_approved_data_check",type:"no"},
]
},
af_spar_web: {
phase:"classification",
step:"Airframe — Spar Web",
question:"Does the web repair restore original strength and is it fully covered by an approved repair scheme?",
context:"A doubler or crack-stop repair can be minor if it exactly follows SRM or AC 43.13-1B. Damage outside any approved table is MAJOR.",
choices:[
{label:"Yes — within SRM table limits, repair follows approved scheme exactly",next:"af_approved_data_check",type:"no"},
{label:"No — damage exceeds SRM limits, or no approved scheme covers this configuration",next:"so_major_airframe_structural",type:"yes"},
]
},
af_skin: {
phase:"classification",
step:"Airframe — Skin: Structural Role",
question:"Is the skin panel a stressed or load-bearing skin?",
context:"App. A(a)(2): Stressed skin contributes to the aircraft load path (wing, fuselage monocoque/semi-monocoque). Non-stressed skins are secondary structure.",
choices:[
{label:"Yes — stressed/load-bearing skin (fuselage, wing torsion box)",next:"af_skin_damage",type:"yes"},
{label:"No — non-structural fairing, cover panel, or access door",next:"af_secondary",type:"no"},
]
},
af_skin_damage: {
phase:"classification",
step:"Airframe — Skin: Damage Nature",
question:"What is the nature of the skin damage and intended repair?",
context:"App. A(a)(2): Filling cracks, extensive welding, or replacing substantial skin areas is major. Small stop-drilled cracks or patches within SRM/AC 43.13-1B limits may be minor.",
choices:[
{label:"Crack — filling, patching, or stop-drilling",next:"af_skin_crack",type:"multi"},
{label:"Corrosion — removal and treatment",next:"af_skin_corrosion",type:"multi"},
{label:"Dent, gouge, or puncture requiring structural patch or doubler",next:"af_skin_patch",type:"multi"},
]
},
af_skin_crack: {
phase:"classification",
step:"Airframe — Skin Crack",
question:"Is the crack repair limited to stop-drilling within limits, or does it require a patch/doubler?",
context:"Stop-drill only within SRM/AC 43.13-1B limits = minor. Structural patch required, or crack extends to spar/rib = MAJOR.",
choices:[
{label:"Stop-drill only, within SRM/AC 43.13-1B limits, no structural patch required",next:"minor_airframe",type:"no"},
{label:"Patch, doubler, or splice required — or crack extends to primary structure",next:"af_approved_data_check",type:"yes"},
]
},
af_skin_corrosion: {
phase:"classification",
step:"Airframe — Skin Corrosion",
question:"Does the corrosion removal reduce the skin below its minimum allowable thickness?",
context:"Within minimum thickness limits = minor. Below minimum thickness or corrosion penetrating underlying structure = MAJOR.",
choices:[
{label:"No — within minimum thickness limits; blend and treat per approved data",next:"minor_airframe",type:"no"},
{label:"Yes — below minimum thickness, or corrosion spread to underlying structure",next:"af_approved_data_check",type:"yes"},
]
},
af_skin_patch: {
phase:"classification",
step:"Airframe — Skin Patch",
question:"Is the structural patch or doubler repair covered by an existing SRM repair scheme or AC 43.13-1B?",
context:"Within SRM limits, correct material/fasteners = minor. Exceeds SRM, composite/bonded skin, or near spar caps = MAJOR.",
choices:[
{label:"Yes — within SRM limits; repair per approved scheme or AC 43.13-1B",next:"minor_airframe",type:"no"},
{label:"No — exceeds SRM limits, composite/bonded skin, or near spar caps or ribs",next:"so_major_airframe_structural",type:"yes"},
]
},
af_rib: {
phase:"classification",
step:"Airframe — Rib/Former/Bulkhead Type",
question:"Which type of rib, former, or bulkhead is being repaired?",
context:"App. A(a)(1)+(a)(3): Main ribs and pressure bulkheads are primary structure. Formers/minor ribs that are non-structural spacers may be minor.",
choices:[
{label:"Pressure bulkhead (pressurized aircraft)",next:"so_major_systems_pressure",type:"yes"},
{label:"Main wing rib or main fuselage frame (primary load path)",next:"af_rib_main",type:"multi"},
{label:"Former, minor rib, or non-structural spacer",next:"af_rib_minor",type:"multi"},
]
},
af_rib_main: {
phase:"classification",
step:"Airframe — Main Rib",
question:"Does the main rib or frame repair involve the rib cap, rib foot, or attach fittings?",
context:"Cap strip, rib foot, or spar-attach fitting repair = MAJOR. Rib web repair only within SRM limits may be minor.",
choices:[
{label:"Yes — cap strip, rib foot, attach fitting, or spar-to-rib junction",next:"so_major_airframe_structural",type:"yes"},
{label:"No — rib web repair only, within SRM limits",next:"af_approved_data_check",type:"no"},
]
},
af_rib_minor: {
phase:"classification",
step:"Airframe — Former/Minor Rib",
question:"Does the repair change the shape, load path, or does any flight load pass through this former?",
context:"No load transfer, purely cosmetic = minor. Uncertain or adjacent to primary structure = approved data check required.",
choices:[
{label:"No load transfer — purely cosmetic shape former",next:"minor_airframe",type:"no"},
{label:"Uncertain, or former is adjacent to primary structure",next:"af_approved_data_check",type:"yes"},
]
},
af_control: {
phase:"classification",
step:"Airframe — Flight Controls: Surface Type",
question:"Which flight control surface is being repaired?",
context:"App. A(a)(2)+(a)(4): All primary flight control repairs require heightened scrutiny.",
choices:[
{label:"Aileron, Elevator/Stabilator, or Rudder (primary controls)",next:"af_control_primary",type:"multi"},
{label:"Flap or Spoiler/Speed brake",next:"af_control_flap",type:"multi"},
{label:"Tab (trim, balance, or anti-servo)",next:"af_control_tab",type:"multi"},
]
},
af_control_primary: {
phase:"classification",
step:"Airframe — Primary Control Surface",
question:"What is the nature of the repair to this primary flight control surface?",
context:"App. A(a)(2): Any repair affecting aerodynamic balance, structural integrity, or hinge alignment is MAJOR.",
choices:[
{label:"Skin repair — patch or doubler to control surface skin",next:"af_control_skin",type:"multi"},
{label:"Structural member — spar, rib, or hinge bracket repair",next:"so_major_airframe_control",type:"yes"},
{label:"Trailing edge or leading edge repair affecting contour",next:"so_major_airframe_control",type:"yes"},
{label:"Corrosion treatment within limits, no contour change, no balance effect",next:"minor_airframe",type:"no"},
]
},
af_control_skin: {
phase:"classification",
step:"Airframe — Control Surface Skin",
question:"Does the control surface skin repair affect the aerodynamic contour or require a structural patch?",
context:"Structural patch, contour change, or likely balance effect = MAJOR (rebalancing required). Minor surface treatment within limits = minor.",
choices:[
{label:"Yes — structural patch, contour change, or balance effect likely",next:"so_major_airframe_control",type:"yes"},
{label:"No — minor surface treatment, no contour change, within manufacturer limits",next:"minor_airframe",type:"no"},
]
},
af_control_flap: {
phase:"classification",
step:"Airframe — Flap/Spoiler",
question:"Does the flap or spoiler repair affect the surface's structure, hinge geometry, or aerodynamic contour?",
context:"Structural patch, hinge fitting repair, or contour/deployment change = MAJOR. Cosmetic within limits = minor.",
choices:[
{label:"Yes — structural patch, hinge fitting repair, or contour/deployment change",next:"so_major_airframe_control",type:"yes"},
{label:"No — cosmetic surface treatment within limits, no structural work",next:"minor_airframe",type:"no"},
]
},
af_control_tab: {
phase:"classification",
step:"Airframe — Control Tab",
question:"Does the control tab repair affect its geometry, balance, or hinge pivot point?",
context:"Hinge alignment, balance, or geometry affected = MAJOR. Cosmetic repair only, hinge and balance unaffected = minor.",
choices:[
{label:"Yes — hinge alignment, balance, or geometry affected",next:"so_major_airframe_control",type:"yes"},
{label:"No — cosmetic repair only, hinge and balance unaffected",next:"minor_airframe",type:"no"},
]
},
af_gear: {
phase:"classification",
step:"Airframe — Landing Gear: Component",
question:"What specific landing gear or float/hull component is being repaired?",
context:"App. A(a)(5): WELDING is the key trigger — any welded repair to a gear leg, axle, or trunnion is automatically MAJOR.",
choices:[
{label:"Gear leg, strut cylinder, or main fitting",next:"af_gear_leg",type:"multi"},
{label:"Axle, wheel flange, or brake assembly",next:"af_gear_axle",type:"multi"},
{label:"Trunnion, torque link, or structural attach fitting",next:"af_gear_trunnion",type:"multi"},
{label:"Float, pontoon, or flying boat hull",next:"af_float",type:"multi"},
{label:"Doors, fairings, or actuator attach brackets (non-structural)",next:"minor_airframe",type:"no"},
]
},
af_gear_leg: {
phase:"classification",
step:"Airframe — Gear Leg",
question:"Does the gear leg repair involve welding, plating, or altering the heat-treated condition?",
context:"Welding, chrome/cadmium plating, or heat treatment alteration = MAJOR. Bushing/seal replacement or cosmetic per AMM = minor.",
choices:[
{label:"Yes — welding, plating, or heat treatment alteration",next:"so_major_systems_hydraulic",type:"yes"},
{label:"No — bushing replacement, seal replacement, or cosmetic per AMM limits",next:"minor_airframe",type:"no"},
]
},
af_gear_axle: {
phase:"classification",
step:"Airframe — Axle/Wheel",
question:"Does the axle repair involve welding or exceed dimensional tolerances?",
context:"Welding, crack outside CMM limits, or dimensional deviation = MAJOR. Brake service per CMM = minor.",
choices:[
{label:"Yes — welding, crack outside CMM limits, or dimensional deviation",next:"so_major_systems_hydraulic",type:"yes"},
{label:"No — brake component replacement or service per CMM",next:"minor_airframe",type:"no"},
]
},
af_gear_trunnion: {
phase:"classification",
step:"Airframe — Trunnion/Fitting",
question:"Does the trunnion, torque link, or structural fitting repair involve welding or outside CMM/SRM limits?",
context:"Welding or repair outside CMM/SRM limits = MAJOR. Bolt/bushing/pin replacement per approved data = minor.",
choices:[
{label:"Yes — welding, or repair outside CMM/SRM limits",next:"so_major_systems_hydraulic",type:"yes"},
{label:"No — bolt/bushing/pin replacement per approved data",next:"minor_airframe",type:"no"},
]
},
af_float: {
phase:"classification",
step:"Airframe — Float/Hull",
question:"Does the float or hull repair involve welding, patching a watertight compartment, or altering the hull bottom?",
context:"Welding, watertight compartment patch, or hull bottom structural repair = MAJOR. Cosmetic or minor corrosion within limits = minor.",
choices:[
{label:"Yes — welding, watertight compartment patch, or hull bottom structural repair",next:"so_major_airframe_structural",type:"yes"},
{label:"No — surface treatment, cosmetic, or minor corrosion within limits",next:"minor_airframe",type:"no"},
]
},
af_fitting: {
phase:"classification",
step:"Airframe — Fitting/Splice",
question:"What type of fitting or splice repair is being performed?",
context:"App. A(a)(1): Structural splices and main fittings are primary load-path components.",
choices:[
{label:"Splice plate or doubler to a primary joint or main fitting",next:"af_fitting_splice",type:"multi"},
{label:"Replacement of a standard bolt, bushing, or bearing at a fitting",next:"af_fitting_hardware",type:"multi"},
]
},
af_fitting_splice: {
phase:"classification",
step:"Airframe — Splice/Doubler",
question:"Does the splice or doubler restore original strength and is it covered by approved data?",
context:"Explicitly within SRM or AC 43.13-1B (correct material, size, fastener pattern, edge distance) = minor path. Any deviation = MAJOR.",
choices:[
{label:"Yes — within SRM or AC 43.13-1B limits, correct material and fastener pattern",next:"af_approved_data_check",type:"no"},
{label:"No — deviates from approved data in any way",next:"so_major_airframe_structural",type:"yes"},
]
},
af_fitting_hardware: {
phase:"classification",
step:"Airframe — Hardware Replacement",
question:"Is the replacement hardware the same specification as the original?",
context:"Same spec hardware per AMM, correctly torqued and safety-wired = minor. Different spec or deviation from AMM = MAJOR.",
choices:[
{label:"Yes — same specification hardware per AMM, correctly torqued and safety-wired",next:"minor_airframe",type:"no"},
{label:"No — different spec, substitution, or deviation from AMM",next:"so_major_airframe_structural",type:"yes"},
]
},
af_secondary: {
phase:"classification",
step:"Airframe — Secondary/Fairing",
question:"Is this repair purely cosmetic, or does it affect the shape, attachment, or structural role?",
context:"Purely cosmetic, no structural role = minor. Repair affects attach points to primary structure = approved data check.",
choices:[
{label:"Purely cosmetic — appearance only, no structural role, no system access affected",next:"minor_airframe",type:"no"},
{label:"Fairing attaches to primary structure and repair affects attach points or alignment",next:"af_approved_data_check",type:"multi"},
]
},
af_approved_data_check: {
phase:"classification",
step:"Airframe — Approved Data Verification",
question:"Is the repair fully covered by AC 43.13-1B, AC 43-214A, the SRM, or the AMM?",
context:"AC 43.13-1B covers non-pressurized structure (Ch. 1-5 sheet metal/welded, Ch. 6 corrosion). AC 43-214A covers composite/adhesively-bonded structure. If any parameter falls outside approved procedures = MAJOR.",
choices:[
{label:"Yes — damage and repair method fully within AC 43.13-1B, AC 43-214A, or SRM/AMM",next:"minor_airframe",type:"no"},
{label:"No — any parameter outside approved data, or repair requires engineering judgment",next:"so_major_airframe_structural",type:"yes"},
]
},
pp_part: {
phase:"classification",
step:"Powerplant — Step 2: Component",
question:"Which powerplant component is being repaired?",
context:"App. A(b) lists specific engine components whose repair is automatically major regardless of repair method.",
choices:[
{label:"Crankcase or crankshaft",next:"pp_crankcase",type:"multi"},
{label:"Cylinder assembly",next:"pp_cylinder",type:"multi"},
{label:"Connecting rod",next:"pp_conrod",type:"multi"},
{label:"Engine mount structure",next:"pp_mount",type:"multi"},
{label:"Exhaust / induction system",next:"pp_exhaust",type:"multi"},
{label:"Accessories, seals, or external fittings",next:"pp_accessories",type:"multi"},
]
},
pp_crankcase: {
phase:"classification",
step:"Powerplant — Crankcase/Crankshaft",
question:"What is being done to the crankcase or crankshaft?",
context:"App. A(b)(1): ALL crankcase and crankshaft repairs are MAJOR — welding, plating, dimensional restoration. No minor-repair path exists for these components.",
choices:[
{label:"Crack repair, weld, or structural restoration of crankcase halves",next:"result_r145_or_ia",type:"yes"},
{label:"Crankshaft straightening, journal grinding, or plating",next:"result_r145_or_ia",type:"yes"},
{label:"Main bearing bore or accessory case repair",next:"result_r145_or_ia",type:"yes"},
]
},
pp_cylinder: {
phase:"classification",
step:"Powerplant — Cylinder",
question:"What work is being performed on the cylinder assembly?",
context:"App. A(b)(1): Welding, chrome plating, or dimensional work = MAJOR. Complete cylinder assembly replacement (same PN) is component replacement = minor.",
choices:[
{label:"Welding, chrome plating, or resizing of cylinder barrel or head",next:"result_r145_or_ia",type:"yes"},
{label:"Valve seat grinding, guide replacement, or head reconditioning within overhaul manual",next:"result_r145_or_ia",type:"yes"},
{label:"Complete cylinder assembly replacement (same part number) — not a repair",next:"minor_powerplant",type:"no"},
]
},
pp_conrod: {
phase:"classification",
step:"Powerplant — Connecting Rod",
question:"Does the connecting rod repair involve welding, straightening, or work outside overhaul manual service limits?",
context:"Welding or dimensional restoration = MAJOR. Replacement with serviceable/overhauled rod per overhaul manual = minor.",
choices:[
{label:"Yes — weld, straighten, or dimensional work on the rod or cap",next:"result_r145_or_ia",type:"yes"},
{label:"No — replacement with serviceable/overhauled rod per overhaul manual",next:"minor_powerplant",type:"no"},
]
},
pp_mount: {
phase:"classification",
step:"Powerplant — Engine Mount",
question:"Does the engine mount repair involve welding any structural tube, fitting, or dynafocal ring?",
context:"App. A(b)(1)(vi): Any welded repair to an engine mount = MAJOR. Isolator/Lord mount replacement, painting, cleaning = minor.",
choices:[
{label:"Yes — welding of any mount tube, ring, or structural fitting",next:"so_major_powerplant_mount",type:"yes"},
{label:"No — isolator replacement, painting, cleaning, or inspection only",next:"minor_powerplant",type:"no"},
]
},
pp_exhaust: {
phase:"classification",
step:"Powerplant — Exhaust/Induction",
question:"What type of work is being done to the exhaust or induction system?",
context:"App. A(b)(1)(vii): Welded exhaust repairs are MAJOR due to CO intrusion risk. Non-welded AMM work is minor.",
choices:[
{label:"Welding of any exhaust stack, muffler, heat muff, riser, or manifold",next:"so_major_powerplant_exhaust",type:"yes"},
{label:"Welding of an induction pipe, air box, or intake manifold",next:"so_major_powerplant_exhaust",type:"yes"},
{label:"Clamp, gasket, or slip-joint replacement per AMM — no welding",next:"minor_powerplant",type:"no"},
{label:"Air filter replacement or induction system cleaning",next:"minor_powerplant",type:"no"},
]
},
pp_accessories: {
phase:"classification",
step:"Powerplant — Accessories",
question:"Is the accessory repair limited to replacement of the unit, or does it involve internal overhaul?",
context:"Like-for-like unit replacement per AMM = minor. Internal overhaul = MAJOR. Hose/clamp/seal only = minor.",
choices:[
{label:"Like-for-like unit replacement (magneto, alternator, oil cooler) per AMM",next:"minor_powerplant",type:"no"},
{label:"Internal overhaul of a magneto, fuel controller, or governor",next:"result_r145_or_ia",type:"yes"},
{label:"Hose, clamp, safety wire, or seal replacement only",next:"minor_powerplant",type:"no"},
]
},
prop_part: {
phase:"classification",
step:"Propeller — Step 2: Work Type",
question:"What work is being performed on the propeller?",
context:"App. A(c): Key triggers for MAJOR are welding, straightening bent blades, and inlay work.",
choices:[
{label:"Straightening a bent blade (any curvature, twist, or pitch correction)",next:"prop_bent",type:"multi"},
{label:"Welding on any blade or hub component",next:"prop_weld",type:"multi"},
{label:"Inlay work — filling, inlaying, or blade tip treatment",next:"prop_inlay",type:"multi"},
{label:"Nick and scratch removal — blade leading edge dress-out",next:"prop_nick",type:"multi"},
{label:"Propeller balance check or track adjustment (operational)",next:"prop_balance_check",type:"multi"},
]
},
prop_bent: {
phase:"classification",
step:"Propeller — Bent Blade",
question:"Is the blade straightening being performed by a Part 145 propeller repair station?",
context:"App. A(c)(1): Straightening a bent propeller blade is MAJOR in ALL cases. Field repair by an A&P alone is not permissible.",
choices:[
{label:"Yes — Part 145 propeller station with approved manufacturer process",next:"result_r145_or_ia",type:"yes"},
{label:"No — field repair (NOT permissible; must go to a prop station)",next:"result_r145_or_ia",type:"yes"},
]
},
prop_weld: {
phase:"classification",
step:"Propeller — Welding",
question:"Any welding on a propeller component is an automatic MAJOR repair.",
context:"App. A(c)(2): Welding of any blade, hub, or propeller fitting is MAJOR with no exceptions.",
choices:[
{label:"Welding, brazing, or hard-facing on blade, hub, or fitting",next:"result_r145_or_ia",type:"yes"},
]
},
prop_inlay: {
phase:"classification",
step:"Propeller — Inlay",
question:"Inlay work on propeller blades is an automatic MAJOR repair.",
context:"App. A(c)(3): Inlay, tip cap installation, or blade material fill = MAJOR. Requires Part 145 propeller station.",
choices:[
{label:"Inlay, tip cap installation, or blade material fill",next:"result_r145_or_ia",type:"yes"},
]
},
prop_nick: {
phase:"classification",
step:"Propeller — Nick/Scratch",
question:"Is the nick or scratch removal within the manufacturer's dimensional limits?",
context:"Nick depth, location from tip, and finished edge radius all within manufacturer's published limits = minor. Any dimension exceeding limits = MAJOR.",
choices:[
{label:"Yes — all dimensions within manufacturer's limits",next:"minor_powerplant",type:"no"},
{label:"No — any dimension exceeds manufacturer's limits",next:"result_r145_or_ia",type:"yes"},
]
},
prop_balance_check: {
phase:"classification",
step:"Propeller — Balance/Track",
question:"Is this a routine dynamic balance check or track adjustment on an undamaged propeller?",
context:"Routine balance/track on undamaged prop per manufacturer instructions = minor. Balance issue caused by damage — assess underlying damage first.",
choices:[
{label:"Yes — routine balance/track on undamaged prop per manufacturer instructions",next:"minor_powerplant",type:"no"},
{label:"No — balance issue caused by damage; assess underlying cause first",next:"prop_part",type:"multi"},
]
},
radio_part: {
phase:"classification",
step:"Radio/Instruments — Step 2: Equipment Type",
question:"Which type of radio, instrument, or appliance is being repaired or replaced?",
context:"App. A(d): Repairs are major when they involve IFR-required equipment, change calibration/approved function, or affect electrical system load.",
choices:[
{label:"IFR navigation or communication equipment",sub:"VOR, ILS, GPS, comm radio, transponder",next:"radio_ifr",type:"multi"},
{label:"Flight instruments",sub:"Altimeter, airspeed, VSI, attitude indicator, DI",next:"radio_instruments",type:"multi"},
{label:"Autopilot or flight director system",next:"radio_autopilot",type:"multi"},
{label:"ELT — emergency locator transmitter",next:"radio_elt",type:"multi"},
{label:"Non-essential appliance or accessory",sub:"Interior lighting, outlets, non-required equipment",next:"radio_nonessential",type:"multi"},
]
},
radio_ifr: {
phase:"classification",
step:"Radio — IFR Equipment",
question:"Is this a like-for-like replacement using an STC'd or TSO'd unit, or a novel installation?",
context:"Like-for-like replacement, same wiring/antenna = minor. New installation or antenna changes = MAJOR alteration.",
choices:[
{label:"Like-for-like replacement, same wiring/antenna, STC or TSO unit",next:"minor_systems",type:"no"},
{label:"New installation, upgraded unit requiring new wiring, or antenna changes",next:"so_major_systems_avionics",type:"yes"},
]
},
radio_instruments: {
phase:"classification",
step:"Radio — Flight Instruments",
question:"Is this a like-for-like instrument replacement, or does it change plumbing or pitot-static connections?",
context:"Like-for-like replacement, same connections = minor. New instrument or pitot-static modification = MAJOR.",
choices:[
{label:"Like-for-like replacement, same connections, no plumbing change",next:"minor_systems",type:"no"},
{label:"New instrument, plumbing change, or pitot-static system modification",next:"so_major_systems_avionics",type:"yes"},
]
},
radio_autopilot: {
phase:"classification",
step:"Radio — Autopilot",
question:"Is this a complete new autopilot installation or a component repair within an existing certified system?",
context:"New autopilot installation or adding an axis = MAJOR alteration requiring STC. Replacement within already-STC'd system = minor.",
choices:[
{label:"New autopilot installation or adding an axis to an existing system",next:"so_major_systems_avionics",type:"yes"},
{label:"Replacement of servo, panel unit, or harness within an already-STC'd system",next:"minor_systems",type:"no"},
]
},
radio_elt: {
phase:"classification",
step:"Radio — ELT",
question:"Is the ELT work a battery replacement and function test, or does it involve changing antenna location or unit type?",
context:"Battery replacement and function test, same unit and location = minor. Unit upgrade or antenna rerouting may require Form 337.",
choices:[
{label:"Battery replacement and function test only — same unit, same location",next:"minor_systems",type:"no"},
{label:"Unit upgrade, new mounting location, or antenna rerouting",next:"so_major_systems_avionics",type:"yes"},
]
},
radio_nonessential: {
phase:"classification",
step:"Radio — Non-Essential Appliance",
question:"Does this addition or repair affect the aircraft's electrical load analysis or primary wiring?",
context:"Dedicated circuit, within load budget, per AC 43.13-1B wiring standards = minor. Affects load analysis or primary wiring = MAJOR.",
choices:[
{label:"No — dedicated circuit, within load budget, per AC 43.13-1B wiring standards",next:"minor_systems",type:"no"},
{label:"Yes — affects load analysis, primary wiring, or requires STC",next:"so_major_systems_avionics",type:"yes"},
]
},
so_major_airframe_structural: {
phase:"signoff",
step:"Sign-off — Airframe Structural",
question:"Does approved engineering data already exist for this structural repair?",
context:"Approved data includes: SRM, AC 43.13-1B (Ch. 1-5), AC 43-214A (composite/bonded structure), existing STC, or prior DER-approved drawing. If none cover the damage, a DER must create new engineering data.",
choices:[
{label:"Yes — SRM, AC 43.13-1B, AC 43-214A, STC, or prior DER-approved data covers this repair",sub:"IA signs off using existing approved data on Form 337",next:"result_ia_only",type:"amber"},
{label:"No — no approved data exists; original engineering analysis required",sub:"DER must create and approve repair data before IA can sign off",next:"result_der_then_ia",type:"purple"},
]
},
so_major_airframe_control: {
phase:"signoff",
step:"Sign-off — Flight Controls",
question:"Is the flight control repair covered by an SRM, manufacturer SB, AC 43.13-1B, or AC 43-214A?",
context:"AC 43.13-1B Ch. 2-4 covers many conventional control surface repairs. AC 43-214A applies to composite or adhesively-bonded control surfaces. If neither covers the damage, a DER is needed.",
choices:[
{label:"Yes — AC 43.13-1B, AC 43-214A, manufacturer SRM, or service bulletin covers this repair",sub:"IA signs off; rebalance and rigging check required post-repair",next:"result_ia_only",type:"amber"},
{label:"No — no AC 43.13-1B, AC 43-214A, or SRM/SB coverage",sub:"DER generates repair scheme; IA approves return to service",next:"result_der_then_ia",type:"purple"},
]
},
so_major_powerplant_mount: {
phase:"signoff",
step:"Sign-off — Engine Mount Weld",
question:"Is the weld repair covered by AC 43.13-1B Chapter 5 or the manufacturer's structural repair data?",
context:"AC 43.13-1B Ch. 5 is the primary FAA-accepted standard for welded aircraft steel tube/fitting repairs. If within Ch. 5 scope and material specs, IA can sign off. Non-standard alloys or geometry outside Ch. 5 require a DER.",
choices:[
{label:"Yes — repair is within AC 43.13-1B Ch. 5 scope and material spec",sub:"IA signs off; weld inspection documentation required",next:"result_ia_only",type:"amber"},
{label:"No — non-standard alloy, geometry outside Ch. 5, or deviation from AC 43.13-1B",sub:"DER (structures or powerplant authority) required",next:"result_der_then_ia",type:"purple"},
]
},
so_major_powerplant_exhaust: {
phase:"signoff",
step:"Sign-off — Exhaust Weld",
question:"Is the exhaust weld repair covered by AC 43.13-1B or the aircraft manufacturer's maintenance data?",
context:"Standard piston exhaust weld per AC 43.13-1B / AMM = IA can sign off. Turbine exhaust, non-standard alloy, or no approved procedure = DER required.",
choices:[
{label:"Yes — standard piston exhaust weld per AC 43.13-1B / AMM",sub:"IA signs off; post-repair CO check strongly recommended",next:"result_ia_only",type:"amber"},
{label:"No — turbine exhaust, non-standard alloy, or no approved procedure",sub:"DER (powerplant authority) must approve the weld data",next:"result_der_then_ia",type:"purple"},
]
},
so_major_systems_hydraulic: {
phase:"signoff",
step:"Sign-off — Hydraulics / Landing Gear",
question:"Is the landing gear or hydraulic repair covered by the SRM, AC 43.13-1B, or a component overhaul manual?",
context:"SRM covers most gear structural repairs. AC 43.13-1B Ch. 5 (welded) and Ch. 9 (landing gear) are valid approved data. No SRM or AC 43.13-1B coverage = DER required.",
choices:[
{label:"Yes — SRM, AC 43.13-1B, or component overhaul manual covers this repair",sub:"IA or Part 145 repair station signs off; gear swing documented",next:"result_r145_or_ia",type:"teal"},
{label:"No — no SRM or AC 43.13-1B coverage; non-standard weld or novel repair",sub:"DER (structures or systems authority) required",next:"result_der_then_ia",type:"purple"},
]
},
so_major_systems_pressure: {
phase:"signoff",
step:"Sign-off — Pressurization Structure",
question:"Does the aircraft's SRM include an approved repair scheme for this pressurization structure damage?",
context:"CRITICAL: AC 43.13-1B does NOT cover pressurized structure — the SRM is the only standard approved data source. Any damage not addressed in the SRM mandates a DER with structures authority.",
choices:[
{label:"Yes — SRM explicitly covers this damage location and repair configuration",sub:"IA signs off; pressurization test and leak check required",next:"result_ia_only",type:"amber"},
{label:"No — damage exceeds SRM limits, or SRM has no applicable repair",sub:"DER (structures authority) required — mandatory for novel pressure vessel repair",next:"result_der_then_ia",type:"purple"},
]
},
so_major_systems_avionics: {
phase:"signoff",
step:"Sign-off — Avionics / Instruments",
question:"Is there an existing STC, TSO installation manual, AC 43.13-2B data, or prior FSDO field approval?",
context:"App. A(d): AC 43.13-2B (Aircraft Alterations) is FAA-accepted for many standard avionics installations. STC, TSO, or AC 43.13-2B coverage = IA can approve. Novel installations = DER + FSDO field approval required.",
choices:[
{label:"Yes — valid STC, TSO install manual, AC 43.13-2B, or prior FSDO field approval",sub:"IA signs off; Form 337 and equipment list update required",next:"result_ia_only",type:"amber"},
{label:"No — novel installation; no STC, TSO, or AC 43.13-2B coverage",sub:"DER (avionics/electrical authority) generates 337 data package for FSDO",next:"result_der_fsdo",type:"purple"},
]
},
minor_airframe: {result:"minor",category:"Airframe",signoffType:"ap",signoffLabel:"A&P Mechanic",signoffWho:"Certificated A&P mechanic (Airframe rating)",signoffDesc:"An Airframe-rated A&P may perform and sign off minor repairs. No IA or DER involvement required. Entry in the maintenance record with the A&P's certificate number and date is sufficient.",pills:["pill-ap"],pillLabels:["A&P Airframe"],summary:"This is a <strong>Minor Repair</strong> — uses standard practices per AC 43.13-1B or the AMM and does not affect structural integrity or aerodynamics beyond approved limits.",reqs:[["Approval","AC 43.13-1B or applicable AMM/SRM procedure"],["Signoff","A&P (Airframe rating) — IA not required"],["Form 337","Not required"],["Records","Maintenance log: date, description, part #, A&P cert #"],["Ref","14 CFR §43.9; AC 43.13-1B"]],examples:["Non-structural skin dent repair within limits","Fairing replacement","Interior panel repair","Corrosion treatment on secondary structure","Non-control fabric patch within limits"]},
minor_powerplant: {result:"minor",category:"Powerplant",signoffType:"ap",signoffLabel:"A&P Mechanic",signoffWho:"Certificated A&P mechanic (Powerplant rating)",signoffDesc:"A Powerplant-rated A&P may perform and sign off minor repairs. No IA or DER involvement required.",pills:["pill-ap"],pillLabels:["A&P Powerplant"],summary:"This is a <strong>Minor Repair</strong> — the powerplant repair involves external or accessory components using standard approved procedures.",reqs:[["Approval","AMM, engine manufacturer's service instructions, or AC 43.13-1B"],["Signoff","A&P (Powerplant rating) — IA not required"],["Form 337","Not required"],["Records","Engine log: date, description, part #, A&P cert #"],["Ref","14 CFR §43.9; applicable engine maintenance manual"]],examples:["Magneto replacement","Spark plug replacement","Fuel injector cleaning","Minor prop nick dress-out within limits","Exhaust clamp/gasket replacement"]},
minor_systems: {result:"minor",category:"Systems",signoffType:"ap",signoffLabel:"A&P Mechanic",signoffWho:"Certificated A&P mechanic (appropriate rating)",signoffDesc:"An A&P with the appropriate Airframe or Powerplant rating may perform and sign off. No IA or DER involvement required.",pills:["pill-ap"],pillLabels:["A&P Airframe / Powerplant"],summary:"This is a <strong>Minor Repair</strong> — standard component replacement or line/fitting work using approved procedures.",reqs:[["Approval","AMM, component overhaul manual, or AC 43.13-1B"],["Signoff","A&P mechanic — IA not required"],["Form 337","Not required"],["Records","Maintenance log: date, description, part #, A&P cert #"],["Ref","14 CFR §43.9; applicable AMM/component manual"]],examples:["Fuel strainer replacement","Brake pad replacement","Instrument glass replacement","ELT battery replacement","Wire splice per AC 43.13-1B"]},
result_ia_only: {result:"major",category:"Major Repair",signoffType:"ia",signoffLabel:"IA (Inspection Authorization)",signoffWho:"A&P mechanic holding an Inspection Authorization (§65.95)",signoffDesc:"Approved data exists (SRM, AC 43.13-1B, AC 43-214A, STC, or prior DER approval). An A&P/IA may perform and approve the return to service. The IA signs FAA Form 337. One copy goes to the FSDO within 48 hours.",pills:["pill-ap","pill-ia","pill-form"],pillLabels:["A&P performs","IA approves RTS","Form 337 required"],summary:"This is a <strong>Major Repair</strong> — approved data exists, so an IA may approve return to service without a DER. Form 337 is required.",reqs:[["Approval","Existing approved data: SRM, AC 43.13-1B, AC 43-214A, STC, or prior DER-approved drawing"],["Signoff","IA (Inspection Authorization holder) approves return to service"],["Form 337","Required — duplicate; one copy retained, one to FSDO within 48 hrs"],["Records","Maintenance record entry; IA certificate number; reference to approved data"],["DER needed?","No — approved data already exists"],["Ref","14 CFR §43.9; §43.11; §65.95; Part 43 Appendix A; AC 43.13-1B; AC 43-214A"]],examples:["Spar repair per SRM","Control surface patch per manufacturer SB","Exhaust weld per AC 43.13-1B Ch. 5","Composite skin repair per AC 43-214A","Fuel cell repair per approved kit"]},
result_der_then_ia: {result:"major",category:"Major Repair — DER Required",signoffType:"der",signoffLabel:"DER → IA",signoffWho:"Designated Engineering Representative (DER) + IA",signoffDesc:"No approved data exists for this repair. A DER with appropriate authority must create and approve the repair design data. The IA then uses that DER-approved data to perform the repair and approve return to service. Both appear on Form 337.",pills:["pill-der","pill-ia","pill-form"],pillLabels:["DER approves data","IA approves RTS","Form 337 required"],summary:"This is a <strong>Major Repair requiring a DER</strong> — neither AC 43.13-1B, AC 43-214A, an SRM, nor an existing STC covers this repair. A DER must generate and approve the engineering data before work begins.",reqs:[["Approval","DER-generated repair drawing or engineering order (DER signature required)"],["Signoff","Step 1: DER approves engineering data | Step 2: IA approves return to service"],["Form 337","Required — DER data attached; IA signs Block 3; copy to FSDO within 48 hrs"],["Records","DER name, cert #, and authority listed; repair data attached to 337"],["DER needed?","YES — AC 43.13-1B, AC 43-214A, SRM, and STC have all been ruled out"],["Ref","14 CFR §183.29; FAA Order 8110.54; Part 43 Appendix A; §65.95"]],examples:["Novel spar repair beyond SRM limits","Composite primary structure beyond AC 43-214A limits","Non-standard engine crankcase repair","Pressure vessel damage exceeding SRM limits"]},
result_r145_or_ia: {result:"major",category:"Major Repair — Part 145 or IA",signoffType:"r145",signoffLabel:"Part 145 Repair Station or IA",signoffWho:"FAA Part 145 Certificated Repair Station (with appropriate rating) OR IA",signoffDesc:"The repair is within the scope of an approved overhaul/component manual. Either a Part 145 certificated repair station, or an A&P/IA using the same manual data, may perform and approve the repair. Form 337 is required.",pills:["pill-r145","pill-ia","pill-form"],pillLabels:["Part 145 or IA","Form 337 required"],summary:"This is a <strong>Major Repair</strong> — a Part 145 repair station or IA may approve return to service using existing manufacturer manual data. No DER required.",reqs:[["Approval","Manufacturer's overhaul manual, CMM, or AC 43.13-1B where applicable"],["Signoff","Part 145 certificated repair station (appropriate rating) OR IA"],["Form 337","Required — one copy to FSDO within 48 hrs"],["Records","Engine/propeller logbook entry; maintenance record; test results"],["DER needed?","No — unless repair falls outside approved manual scope AND outside AC 43.13-1B"],["Ref","14 CFR Part 145; §43.9; §43.11; §65.95; Part 43 Appendix A; AC 43.13-1B"]],examples:["Engine overhaul within TBO manual scope","Propeller overhaul per manufacturer manual","Hydraulic actuator overhaul per CMM","Gear retraction system overhaul per AMM"]},
result_der_fsdo: {result:"major",category:"Major Alteration — DER + FSDO",signoffType:"der",signoffLabel:"DER → FSDO Field Approval → IA",signoffWho:"DER (avionics/electrical) + FSDO Field Approval + IA",signoffDesc:"Novel avionics installations without an existing STC require a DER to prepare the data package, FSDO review and field approval, then IA sign-off. AC 43.13-2B supports wiring/installation practices but does not replace FSDO field approval. Allow substantial lead time for FSDO coordination.",pills:["pill-der","pill-ia","pill-form"],pillLabels:["DER creates package","FSDO field approval","IA approves RTS"],summary:"This is a <strong>Major Alteration</strong> — a novel avionics installation requires DER data, FSDO field approval, and IA sign-off. This is the most involved approval path.",reqs:[["Approval","DER (avionics/electrical authority) generates 337 data package; AC 43.13-2B supports wiring practices"],["Signoff","Step 1: DER | Step 2: FSDO field approval | Step 3: IA approves RTS"],["Form 337","Required — DER package attached; FSDO approval in Block 3; copy to FSDO"],["Records","Aircraft equipment list updated; W&B revised if applicable"],["DER needed?","YES — DER with avionics/electrical authority; early FSDO contact recommended"],["Ref","14 CFR §183.29; FAA Order 8110.54; AC 43.13-1B; AC 43.13-2B; Part 43 Appendix A(d)"]],examples:["Novel IFR GPS without STC","Custom EFIS retrofit without existing STC","Non-standard autopilot installation","Experimental avionics suite integration"]},
};
// ─── STATE ───────────────────────────────────────────────────────
let history = [];
let currentId = 'start';
// ─── HELPERS ─────────────────────────────────────────────────────
function getPhase(id) {
const n = nodes[id];
if (!n) return 'classification';
if (n.result) return 'result';
return n.phase || 'classification';
}
function getProgress(id) {
const n = nodes[id];
if (!n) return 0;
if (n.result) return 100;
if (n.phase === 'signoff') return 88;
const s = n.step || '';
if (s.includes('Step 1')) return 8;
if (s.includes('Step 2')) return 25;
if (s.includes('Damage') || s.includes('Nature') || s.includes('Component') || s.includes('Work') || s.includes('Type')) return 45;
if (s.includes('Crack') || s.includes('Corrosion') || s.includes('Patch') || s.includes('Web') || s.includes('Former') || s.includes('Hardware') || s.includes('Splice')) return 62;
if (s.includes('Verification') || s.includes('Weld') || s.includes('Inlay') || s.includes('Nick') || s.includes('Balance')) return 74;
return 38;
}
function updatePhaseBar(id) {
const phase = getPhase(id);
const s1 = document.getElementById('seg1');
const s2 = document.getElementById('seg2');
const s3 = document.getElementById('seg3');
const pf = document.getElementById('progress-fill');
s1.className = 'phase-seg';
s2.className = 'phase-seg';
s3.className = 'phase-seg';
if (phase === 'classification') {
s1.classList.add('active');
pf.className = 'progress-fill';
} else if (phase === 'signoff') {
s1.classList.add('done');
s2.classList.add('signoff-active');
pf.className = 'progress-fill signoff';
} else {
s1.classList.add('done');
s2.classList.add('done');
s3.classList.add('done');
pf.className = 'progress-fill complete';
}
pf.style.width = getProgress(id) + '%';
}
function renderBreadcrumb() {
const bc = document.getElementById('breadcrumb');
if (history.length === 0) { bc.innerHTML = ''; return; }
let html = '<span class="crumb" onclick="goBack(-1)">Start</span>';
history.slice(-3).forEach((id, i) => {
const n = nodes[id];
const label = (n?.step || id).split('—').pop().trim().substring(0, 22) + '…';
const idx = history.length > 3 ? i + (history.length - 3) : i;
html += '<span class="crumb-sep">›</span><span class="crumb" onclick="goBack(' + idx + ')">' + label + '</span>';
});
bc.innerHTML = html;
}
function goBack(idx) {
if (idx === -1) { history = []; currentId = 'start'; }
else { currentId = history[idx]; history = history.slice(0, idx); }
render();
}
function goBackOne() {
if (history.length > 0) {
currentId = history[history.length - 1];
history = history.slice(0, -1);
render();
}
}
function navigate(nextId) {
history.push(currentId);
currentId = nextId;
render();
document.getElementById('scroll-area').scrollTo({top: 0, behavior: 'smooth'});
}
function reset() {
history = []; currentId = 'start';
render();
document.getElementById('scroll-area').scrollTo({top: 0, behavior: 'instant'});
}
// ─── RENDER ──────────────────────────────────────────────────────
function render() {
const node = nodes[currentId];
updatePhaseBar(currentId);
renderBreadcrumb();
const backBtn = document.getElementById('back-btn');
backBtn.classList.toggle('visible', history.length > 0);
const tree = document.getElementById('tree');
if (node.result) {
renderResult(tree, node);
return;
}
const phaseCls = node.phase === 'signoff' ? 'signoff' : 'classification';
const phaseIcon = node.phase === 'signoff' ? '⚙' : '✦';
const phaseText = node.phase === 'signoff' ? 'Sign-off Determination' : 'Repair Classification';
// Step banner
let stepHtml = '';
if (node.step) {
const parts = node.step.split(' — ');
const cat = parts[0] || '';
const sub = parts[1] || '';
stepHtml = `<div class="step-banner">
<div class="step-category">${cat}</div>
${sub ? `<div class="step-subtitle">${sub}</div>` : ''}
</div>`;
}
const choicesHtml = node.choices.map(c => {
const t = c.type || 'multi';
const iconMap = {yes:'YES',no:'NO',multi:'→',amber:'IA',purple:'DER',teal:'145'};
const icon = iconMap[t] || '→';
return `<button class="choice-btn ${t}" onclick="navigate('${c.next}')">
<span class="choice-icon">${icon}</span>
<span class="choice-text">
<span class="choice-label">${c.label}</span>
${c.sub ? `<span class="choice-sub">${c.sub}</span>` : ''}
</span>
<span class="choice-arrow">›</span>
</button>`;
}).join('');
tree.innerHTML = `
<div class="node-card ${node.phase === 'signoff' ? 'phase-signoff' : ''}">
${stepHtml}
<div class="phase-badge ${phaseCls}">${phaseIcon} ${phaseText}</div>
<div class="question">${node.question}</div>
${node.context ? `<div class="context">${node.context}</div>` : ''}
<div class="choices">${choicesHtml}</div>
</div>`;
}
function renderResult(tree, node) {
const isMajor = node.result === 'major';
const cls = isMajor ? 'result-major' : 'result-minor';
const icon = isMajor ? '⚠' : '✓';
const label = isMajor ? 'Major Repair' : 'Minor Repair';
const soType = node.signoffType || 'ap';
const soIcon = {ap:'🔧',ia:'📋',der:'📐',r145:'🏭'}[soType];
const pillsHtml = (node.pills||[]).map((p,i) =>
`<span class="pill ${p}">${node.pillLabels?.[i]||p}</span>`
).join('');
const reqsHtml = node.reqs.map(([lbl,val]) =>
`<div class="req-row"><span class="req-label">${lbl}</span><span class="req-val">${val}</span></div>`
).join('');
const examplesHtml = node.examples.map(ex =>
`<div class="example-item"><span class="ex-dot"></span><span>${ex}</span></div>`
).join('');
tree.innerHTML = `
<div class="node-card ${cls}">
<div class="result-header">
<div class="result-badge"><span>${icon}</span>${label}</div>
<div class="result-summary">${node.summary}</div>
</div>
<div class="signoff-block">
<div class="signoff-header ${soType}">${soIcon} Sign-off Authority: <strong style="margin-left:4px">${node.signoffLabel}</strong></div>
<div class="signoff-body">
<div class="signoff-who">${node.signoffWho}</div>
<div class="signoff-desc">${node.signoffDesc}</div>
<div class="pills">${pillsHtml}</div>
</div>
</div>
<div class="reqs-box">
<div class="reqs-title">Regulatory Requirements</div>
${reqsHtml}
</div>
<div class="examples-box">
<div class="examples-title">Representative Examples</div>
${examplesHtml}
</div>
<div class="result-actions">
<button class="action-btn" onclick="reset()">↺ Start Over</button>
${history.length > 0 ? `<button class="action-btn" onclick="goBackOne()">← Back</button>` : ''}
</div>
</div>`;
}
// ─── INIT ────────────────────────────────────────────────────────
render();
// Service Worker registration for offline support
if ('serviceWorker' in navigator) {
const swCode = `
const CACHE = 'repair-class-v1';
self.addEventListener('install', e => {
e.waitUntil(caches.open(CACHE).then(c => c.addAll(['/'])));
self.skipWaiting();
});
self.addEventListener('fetch', e => {
e.respondWith(caches.match(e.request).then(r => r || fetch(e.request).catch(() => caches.match('/'))));
});
`;
const blob = new Blob([swCode], {type:'application/javascript'});
const swUrl = URL.createObjectURL(blob);
navigator.serviceWorker.register(swUrl).catch(() => {});
}
</script>