diff --git a/site/src/pages/tools/fcc-compliance-check.astro b/site/src/pages/tools/fcc-compliance-check.astro
index 532b7aa..b79acac 100644
--- a/site/src/pages/tools/fcc-compliance-check.astro
+++ b/site/src/pages/tools/fcc-compliance-check.astro
@@ -572,13 +572,13 @@ import Base from "../../layouts/Base.astro";
`;
}
- // BDC special
+ // BDC special — two-step: voice? then broadband?
if (check.id === "bdc_filing" && status === "unknown") {
- inner += `
-
Does ${eName} provide broadband internet access?
+ inner += `
+
Does ${eName} offer retail voice service (VoIP, CLEC, or wireline) to end users?
-
-
+
+
`;
}
@@ -586,42 +586,60 @@ import Base from "../../layouts/Base.astro";
inner += `
`;
card.innerHTML = inner;
- // BDC button handlers
+ // BDC button handlers — two-step: voice then broadband
if (check.id === "bdc_filing" && status === "unknown") {
- function setBdcStatus(newStatus) {
- check.status = newStatus;
- const c = colorMap[newStatus];
- card.className = `${c.bg} ${c.border} border rounded-xl p-4 flex items-start gap-3`;
- if (newStatus === "yellow") {
- card.innerHTML = `${icons.yellow}
-
-
${check.label || check.id}
-
BDC filing required — you provide broadband service.
-
-
`;
- } else if (newStatus === "green") {
- card.innerHTML = `${icons.green}
-
-
${check.label || check.id}
-
Not applicable — no broadband service.
-
-
`;
+ let bdcHasVoice = false;
+
+ function askBroadband() {
+ const qDiv = card.querySelector(".bdc-questions");
+ if (!qDiv) return;
+ const c2 = colorMap.unknown;
+ qDiv.innerHTML = `
+ ${bdcHasVoice ? '✓ Retail voice' : ''}
+ Does ${eName} provide broadband internet access (resale or facilities-based)?
+
+
+
+
`;
+ qDiv.querySelector(".bdc-bb-yes")?.addEventListener("click", () => finalizeBdc(true));
+ qDiv.querySelector(".bdc-bb-no")?.addEventListener("click", () => finalizeBdc(false));
+ }
+
+ function finalizeBdc(hasBroadband) {
+ let newStatus, detail;
+ if (hasBroadband && bdcHasVoice) {
+ newStatus = "red"; detail = "Broadband + retail voice: both BDC Broadband and BDC Voice filings required. Filed semi-annually June 1 and December 1.";
+ } else if (hasBroadband) {
+ newStatus = "yellow"; detail = "BDC Broadband Deployment filing required. Filed semi-annually June 1 and December 1.";
+ } else if (bdcHasVoice) {
+ newStatus = "yellow"; detail = "BDC Voice Subscription filing required (formerly Form 477 Voice). Filed semi-annually June 1 and December 1.";
+ } else {
+ newStatus = "green"; detail = "Not applicable — no retail voice or broadband service.";
}
- // Undo button re-renders the original card with Yes/No
+ check.status = newStatus;
+ const c3 = colorMap[newStatus];
+ card.className = `${c3.bg} ${c3.border} border rounded-xl p-4 flex items-start gap-3`;
+ card.innerHTML = `${icons[newStatus]}
+
+
${check.label || check.id}
+
${detail}
+
+
`;
card.querySelector(".bdc-undo")?.addEventListener("click", () => {
check.status = "unknown";
+ bdcHasVoice = false;
const cu = colorMap.unknown;
card.className = `${cu.bg} ${cu.border} border rounded-xl p-4 flex items-start gap-3`;
card.innerHTML = inner;
- // Re-attach Yes/No handlers
- card.querySelector(".bdc-yes")?.addEventListener("click", () => setBdcStatus("yellow"));
- card.querySelector(".bdc-no")?.addEventListener("click", () => setBdcStatus("green"));
+ card.querySelector(".bdc-voice-yes")?.addEventListener("click", () => { bdcHasVoice = true; askBroadband(); });
+ card.querySelector(".bdc-voice-no")?.addEventListener("click", () => { bdcHasVoice = false; askBroadband(); });
renderCta(lastData);
});
renderCta(lastData);
}
- card.querySelector(".bdc-yes")?.addEventListener("click", () => setBdcStatus("yellow"));
- card.querySelector(".bdc-no")?.addEventListener("click", () => setBdcStatus("green"));
+
+ card.querySelector(".bdc-voice-yes")?.addEventListener("click", () => { bdcHasVoice = true; askBroadband(); });
+ card.querySelector(".bdc-voice-no")?.addEventListener("click", () => { bdcHasVoice = false; askBroadband(); });
}
// RMD button handlers