{"id":258,"date":"2026-06-30T10:03:02","date_gmt":"2026-06-30T09:03:02","guid":{"rendered":"https:\/\/www.resiliaconnect.com\/?page_id=258"},"modified":"2026-06-30T10:03:02","modified_gmt":"2026-06-30T09:03:02","slug":"pqc-assessment","status":"publish","type":"page","link":"https:\/\/www.resiliaconnect.com\/?page_id=258","title":{"rendered":"PQC Assessment"},"content":{"rendered":"\n<!-- ================================================================\n  Quantum-Safe Readiness Assessment \u2014 Self-Contained Custom HTML Block\n  For WordPress (Twenty Twenty-Five theme or any standard theme)\n\n  HOW TO USE:\n  1. In WordPress, create a new page (Default template \u2014 same as your other pages).\n  2. Add a \"Custom HTML\" block and paste the entire contents of this file.\n  3. Find and replace the two placeholder URLs below before publishing:\n       REPLACE-with-Paper-page-URL   \u2192 your Paper \/ PQM page URL\n       REPLACE-with-Community-URL    \u2192 your Community page URL\n     Tip: use Find & Replace in any text editor (Cmd+H on Mac) before pasting,\n     or use the block editor's HTML view after pasting.\n  4. Publish the page, then update your nav menu to point to the new page.\n  5. Trash the old Assessment page (page_id=8).\n\n  PLUGIN REQUIREMENT:\n  Keep the \"Quantum Loader\" plugin ACTIVE. It powers lead capture\n  (\/wp-json\/quantum\/v1\/lead). Deactivating it silently breaks the form.\n\n  LEAD DATA:\n  \u2022 Stored in WP option: qs_leads  (visible via WP Options Editor plugin)\n  \u2022 Email sent to: site admin + karleef@dekneef.be\n  \u2022 Subject: \"New Quantum Security Assessment Lead\"\n  \u2022 If emails don't arrive: install WP Mail SMTP and configure SMTP.\n\n  TESTING:\n  Open the page in incognito \u2192 sector \u2192 12 questions \u2192 View Results \u2192\n  fill form \u2192 Download PDF.  Check qs_leads option and email inbox.\n================================================================ -->\n\n<style>\n:root {\n  --ink:         #1a2332;\n  --ink-soft:    #475569;\n  --accent:      #2563eb;\n  --accent-light:#3b82f6;\n  --accent-soft: rgba(37,99,235,0.08);\n  --teal:        #06b6d4;\n  --white:       #ffffff;\n  --gray-50:     #f8fafc;\n  --gray-100:    #f1f5f9;\n  --gray-200:    #e2e8f0;\n  --gray-300:    #cbd5e1;\n  --gray-400:    #94a3b8;\n  --gray-500:    #64748b;\n  --gray-600:    #475569;\n  --gray-700:    #334155;\n  --gray-800:    #1e293b;\n  --gray-900:    #0f172a;\n  --font:        'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n  --radius:      0.5rem;\n  --radius-lg:   1rem;\n  --shadow:      0 1px 3px 0 rgb(0 0 0\/.1), 0 1px 2px -1px rgb(0 0 0\/.1);\n  --shadow-md:   0 4px 6px -1px rgb(0 0 0\/.1), 0 2px 4px -2px rgb(0 0 0\/.1);\n  --shadow-lg:   0 10px 15px -3px rgb(0 0 0\/.1), 0 4px 6px -4px rgb(0 0 0\/.1);\n  --max-w:       1140px;\n}.qs-embed, .qs-embed *, .qs-embed *::before, .qs-embed *::after { box-sizing: border-box; margin: 0; padding: 0; }.qs-embed { font-family: var(--font); font-size: 1rem; line-height: 1.65; color: var(--ink-soft); background: var(--white); -webkit-font-smoothing: antialiased; }.qs-embed img { max-width: 100%; height: auto; display: block; }.qs-embed a { color: inherit; text-decoration: none; }.qs-embed ul { list-style: none; }.qs-embed .demo-banner {\n  background: var(--accent);\n  color: var(--white);\n  text-align: center;\n  padding: 0.5rem 1rem;\n  font-size: 0.8rem;\n  font-weight: 600;\n  letter-spacing: 0.05em;\n}.qs-embed .nav {\n  position: sticky;\n  top: 0;\n  z-index: 100;\n  background: var(--white);\n  border-bottom: 1px solid var(--gray-200);\n}.qs-embed .nav-inner {\n  max-width: var(--max-w);\n  margin: 0 auto;\n  padding: 0 1.5rem;\n  height: 64px;\n  display: flex;\n  align-items: center;\n  gap: 2rem;\n}.qs-embed .nav-logo {\n  display: flex;\n  align-items: center;\n  gap: 0.6rem;\n  font-size: 1rem;\n  font-weight: 700;\n  color: var(--ink);\n  flex-shrink: 0;\n}.qs-embed .nav-logo-mark {\n  width: 32px;\n  height: 32px;\n  background: var(--ink);\n  border-radius: 6px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 0.85rem;\n  font-weight: 800;\n  color: var(--white);\n  letter-spacing: -0.03em;\n}.qs-embed .nav-links {\n  display: flex;\n  gap: 0.25rem;\n  flex: 1;\n}.qs-embed .nav-link {\n  font-size: 0.875rem;\n  font-weight: 500;\n  color: var(--gray-600);\n  padding: 0.4rem 0.75rem;\n  border-radius: var(--radius);\n  transition: all 150ms;\n}.qs-embed .nav-link:hover, .qs-embed .nav-link.active { color: var(--ink); background: var(--gray-100); }.qs-embed .nav-cta {\n  background: var(--accent);\n  color: var(--white);\n  font-size: 0.875rem;\n  font-weight: 600;\n  padding: 0.5rem 1.25rem;\n  border-radius: var(--radius);\n  white-space: nowrap;\n  transition: background 150ms;\n}.qs-embed .nav-cta:hover { background: var(--accent-light); }.qs-embed .container { max-width: var(--max-w); margin: 0 auto; padding: 0 1.5rem; }.qs-embed .section { padding: 4rem 0; }.qs-embed .section-sm { padding: 2.5rem 0; }.qs-embed .section-lg { padding: 6rem 0; }.qs-embed .hero {\n  background: var(--gray-50);\n  border-bottom: 1px solid var(--gray-200);\n  border-top: 3px solid var(--accent);\n  color: var(--ink);\n  padding: 4rem 0 3.5rem;\n}.qs-embed .hero-inner {\n  max-width: var(--max-w);\n  margin: 0 auto;\n  padding: 0 1.5rem;\n}.qs-embed .hero-badge {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n  background: var(--accent-soft);\n  border: 1px solid rgba(37,99,235,0.25);\n  color: var(--accent);\n  font-size: 0.8rem;\n  font-weight: 600;\n  padding: 0.35rem 0.85rem;\n  border-radius: 999px;\n  margin-bottom: 1.5rem;\n  letter-spacing: 0.04em;\n  text-transform: uppercase;\n}.qs-embed .hero h1 {\n  font-size: clamp(2rem, 4vw, 3.1rem);\n  font-weight: 800;\n  line-height: 1.15;\n  max-width: 720px;\n  margin-bottom: 1.25rem;\n  letter-spacing: -0.025em;\n  color: var(--ink);\n}.qs-embed .hero h1 em { font-style: normal; color: var(--accent); }.qs-embed .hero-sub {\n  font-size: 1.1rem;\n  color: var(--gray-600);\n  max-width: 580px;\n  margin-bottom: 2rem;\n  line-height: 1.7;\n}.qs-embed .hero-cta-row { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }.qs-embed .btn {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-family: var(--font);\n  font-weight: 600;\n  border-radius: var(--radius);\n  cursor: pointer;\n  transition: all 150ms;\n  border: none;\n  text-decoration: none;\n}.qs-embed .btn-primary { background: var(--accent); color: var(--white); padding: 0.75rem 1.5rem; font-size: 0.95rem; }.qs-embed .btn-primary:hover { background: var(--accent-light); }.qs-embed .btn-ghost { background: transparent; color: var(--ink); padding: 0.75rem 1.5rem; font-size: 0.95rem; border: 1.5px solid var(--gray-300); }.qs-embed .btn-ghost:hover { border-color: var(--gray-500); background: var(--gray-50); }.qs-embed .btn-outline { background: transparent; color: var(--accent); padding: 0.65rem 1.25rem; font-size: 0.9rem; border: 1.5px solid var(--accent); }.qs-embed .btn-outline:hover { background: var(--accent); color: var(--white); }.qs-embed .btn-sm { padding: 0.45rem 0.9rem; font-size: 0.82rem; }.qs-embed .btn-lg { padding: 0.9rem 2rem; font-size: 1.05rem; }.qs-embed .btn-disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }.qs-embed .label {\n  display: inline-block;\n  font-size: 0.75rem;\n  font-weight: 700;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--accent);\n  margin-bottom: 0.75rem;\n}.qs-embed .card {\n  background: var(--white);\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  box-shadow: var(--shadow);\n  padding: 1.75rem;\n}.qs-embed .card:hover { box-shadow: var(--shadow-md); }.qs-embed .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; }.qs-embed .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }.qs-embed .grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; }\n@media (max-width: 900px) {.qs-embed .grid-3, .qs-embed .grid-4 { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 640px) {.qs-embed .grid-2, .qs-embed .grid-3, .qs-embed .grid-4 { grid-template-columns: 1fr; } }.qs-embed .pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.25rem; }.qs-embed .pricing-card {\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  padding: 1.75rem;\n  position: relative;\n  background: var(--white);\n}.qs-embed .pricing-card.featured {\n  border-color: var(--accent);\n  box-shadow: 0 0 0 3px rgba(37,99,235,0.1);\n}.qs-embed .pricing-card .tier { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--gray-500); margin-bottom: 0.5rem; }.qs-embed .pricing-card .price { font-size: 2rem; font-weight: 800; color: var(--ink); margin-bottom: 0.25rem; line-height: 1; }.qs-embed .pricing-card .price-note { font-size: 0.82rem; color: var(--gray-500); margin-bottom: 1.25rem; }.qs-embed .pricing-card .feat { font-size: 0.85rem; color: var(--gray-600); margin-bottom: 0.5rem; display: flex; gap: 0.5rem; align-items: flex-start; }.qs-embed .pricing-card .feat::before { content: '\u2713'; color: var(--accent); font-weight: 700; flex-shrink: 0; }.qs-embed .pricing-card .price-cta { margin-top: 1.5rem; }.qs-embed .pricing-badge {\n  position: absolute;\n  top: -0.75rem;\n  left: 50%;\n  transform: translateX(-50%);\n  background: var(--accent);\n  color: var(--white);\n  font-size: 0.7rem;\n  font-weight: 700;\n  padding: 0.2rem 0.75rem;\n  border-radius: 999px;\n  white-space: nowrap;\n  letter-spacing: 0.05em;\n}.qs-embed .form-group { margin-bottom: 1.25rem; }.qs-embed .form-label { display: block; font-size: 0.87rem; font-weight: 600; color: var(--gray-700); margin-bottom: 0.4rem; }.qs-embed .form-label .req { color: var(--accent); }.qs-embed .form-input, .qs-embed .form-select, .qs-embed .form-textarea {\n  width: 100%;\n  font-family: var(--font);\n  font-size: 0.9rem;\n  color: var(--gray-800);\n  background: var(--white);\n  border: 1.5px solid var(--gray-300);\n  border-radius: var(--radius);\n  padding: 0.6rem 0.9rem;\n  transition: border-color 150ms;\n  outline: none;\n}.qs-embed .form-input:focus, .qs-embed .form-select:focus, .qs-embed .form-textarea:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(37,99,235,0.1); }.qs-embed .form-textarea { resize: vertical; min-height: 110px; }.qs-embed .form-hint { font-size: 0.78rem; color: var(--gray-500); margin-top: 0.3rem; }.qs-embed .form-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }\n@media (max-width: 640px) {.qs-embed .form-grid-2 { grid-template-columns: 1fr; } }.qs-embed .section-head { margin-bottom: 2.5rem; }.qs-embed .section-head h2 { font-size: clamp(1.6rem, 3vw, 2.25rem); font-weight: 800; color: var(--ink); margin-bottom: 0.6rem; letter-spacing: -0.02em; }.qs-embed .section-head p { font-size: 1.05rem; color: var(--gray-600); max-width: 560px; line-height: 1.7; }.qs-embed .section-head.center { text-align: center; }.qs-embed .section-head.center p { margin: 0 auto; }.qs-embed .stat-row { display: flex; gap: 2.5rem; flex-wrap: wrap; }.qs-embed .stat-num { font-size: 2rem; font-weight: 800; color: var(--ink); letter-spacing: -0.03em; }.qs-embed .stat-label { font-size: 0.82rem; color: var(--gray-500); }.qs-embed .callout {\n  background: var(--gray-50);\n  border: 1px solid var(--gray-200);\n  border-left: 4px solid var(--accent);\n  border-radius: var(--radius);\n  padding: 1.1rem 1.25rem;\n  font-size: 0.9rem;\n  color: var(--gray-700);\n  line-height: 1.6;\n}.qs-embed .patron-box {\n  background: var(--ink);\n  color: var(--white);\n  border-radius: var(--radius-lg);\n  padding: 2.5rem;\n  text-align: center;\n}.qs-embed .patron-box h3 { font-size: 1.3rem; font-weight: 800; margin-bottom: 0.6rem; }.qs-embed .patron-box p { color: rgba(255,255,255,0.75); margin-bottom: 1.5rem; font-size: 0.92rem; line-height: 1.7; }.qs-embed .reg-table-wrap { overflow-x: auto; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); }.qs-embed .reg-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; }.qs-embed .reg-table th {\n  text-align: left;\n  background: var(--gray-50);\n  color: var(--ink);\n  font-size: 0.75rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  padding: 0.75rem 1rem;\n  border-bottom: 1px solid var(--gray-200);\n}.qs-embed .reg-table td {\n  padding: 0.85rem 1rem;\n  border-bottom: 1px solid var(--gray-100);\n  color: var(--gray-700);\n  vertical-align: top;\n}.qs-embed .reg-table tr:last-child td { border-bottom: none; }.qs-embed .reg-table .jurisdiction { font-weight: 700; color: var(--ink); white-space: nowrap; }\n@media (max-width: 640px) {.qs-embed .reg-table-wrap { border: none; }.qs-embed .reg-table thead { display: none; }.qs-embed .reg-table, .qs-embed .reg-table tbody, .qs-embed .reg-table tr, .qs-embed .reg-table td { display: block; width: 100%; }.qs-embed .reg-table tr { border: 1px solid var(--gray-200); border-radius: var(--radius); margin-bottom: 0.75rem; padding: 0.75rem 1rem; }.qs-embed .reg-table td { border-bottom: none; padding: 0.25rem 0; }.qs-embed .reg-table td::before { content: attr(data-label); display: block; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-400); margin-bottom: 0.15rem; }\n}.qs-embed .press-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }\n@media (max-width: 700px) {.qs-embed .press-grid { grid-template-columns: 1fr; } }.qs-embed .press-card {\n  display: flex;\n  gap: 0.9rem;\n  align-items: flex-start;\n  background: var(--white);\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  padding: 1.25rem;\n  transition: box-shadow 150ms, border-color 150ms;\n}.qs-embed .press-card:hover { box-shadow: var(--shadow-md); border-color: var(--gray-300); }.qs-embed .press-card-icon {\n  width: 38px; height: 38px; border-radius: var(--radius);\n  background: var(--accent-soft); color: var(--accent);\n  display: flex; align-items: center; justify-content: center;\n  font-size: 1rem; flex-shrink: 0;\n}.qs-embed .press-card-outlet { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500); margin-bottom: 0.25rem; }.qs-embed .press-card-title { font-size: 0.92rem; font-weight: 600; color: var(--ink); line-height: 1.4; }.qs-embed .press-card-title .arrow { color: var(--accent); margin-left: 0.25rem; }.qs-embed .credit-strip {\n  display: flex;\n  align-items: center;\n  gap: 1rem;\n  background: var(--gray-50);\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  padding: 1.25rem 1.5rem;\n}.qs-embed .credit-strip img { width: 56px; height: 56px; border-radius: 999px; object-fit: cover; flex-shrink: 0; }.qs-embed .credit-strip-text { font-size: 0.85rem; color: var(--gray-600); line-height: 1.6; }.qs-embed .credit-strip-text strong { color: var(--ink); }.qs-embed .blurred { filter: blur(5px); user-select: none; pointer-events: none; }.qs-embed .footer {\n  background: var(--ink);\n  color: rgba(255,255,255,0.65);\n  padding: 3rem 0 1.5rem;\n  margin-top: 4rem;\n}.qs-embed .footer-grid {\n  display: grid;\n  grid-template-columns: 2fr 1fr 1fr 1fr;\n  gap: 2rem;\n  padding-bottom: 2rem;\n  border-bottom: 1px solid rgba(255,255,255,0.08);\n  margin-bottom: 1.5rem;\n}\n@media (max-width: 800px) {.qs-embed .footer-grid { grid-template-columns: 1fr 1fr; } }\n@media (max-width: 480px) {.qs-embed .footer-grid { grid-template-columns: 1fr; } }.qs-embed .footer-brand h3 { color: var(--white); font-size: 1rem; font-weight: 700; margin-bottom: 0.5rem; }.qs-embed .footer-brand p { font-size: 0.83rem; line-height: 1.6; }.qs-embed .footer-col h4 { color: var(--white); font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.75rem; }.qs-embed .footer-col a { display: block; font-size: 0.85rem; color: rgba(255,255,255,0.55); margin-bottom: 0.4rem; transition: color 150ms; }.qs-embed .footer-col a:hover { color: var(--white); }.qs-embed .footer-bottom { display: flex; justify-content: space-between; align-items: center; font-size: 0.78rem; flex-wrap: wrap; gap: 0.5rem; }.qs-embed .footer-bottom a { color: rgba(255,255,255,0.4); font-size: 0.72rem; }.qs-embed .footer-bottom a:hover { color: rgba(255,255,255,0.7); }.qs-embed .modal-overlay {\n  display: none;\n  position: fixed;\n  inset: 0;\n  background: rgba(0,0,0,0.5);\n  z-index: 999;\n  align-items: center;\n  justify-content: center;\n}.qs-embed .modal-overlay.open { display: flex; }.qs-embed .modal {\n  background: var(--white);\n  border-radius: var(--radius-lg);\n  padding: 2rem;\n  max-width: 440px;\n  width: 90%;\n  box-shadow: var(--shadow-lg);\n  text-align: center;\n}.qs-embed .modal h3 { font-size: 1.2rem; font-weight: 800; color: var(--ink); margin-bottom: 0.75rem; }.qs-embed .modal p { font-size: 0.9rem; color: var(--gray-600); margin-bottom: 1.5rem; line-height: 1.6; }.qs-embed .modal-close { background: var(--gray-100); border: none; padding: 0.6rem 1.25rem; border-radius: var(--radius); font-family: var(--font); font-size: 0.88rem; font-weight: 600; cursor: pointer; color: var(--gray-700); }.qs-embed .modal-close:hover { background: var(--gray-200); }\n\n\n@media (max-width: 768px) {.qs-embed .nav-links { display: none; }.qs-embed .nav-cta { padding: 0.4rem 0.9rem; font-size: 0.8rem; }\n}.qs-embed .nav-link { padding: 0.4rem 0.6rem; font-size: 0.82rem; }.qs-embed .nav-inner { gap: 1.25rem; }.qs-embed .nav-dropdown { position: relative; }.qs-embed .nav-link-has-dropdown::after { content: ' \u2193'; font-size: 0.68em; vertical-align: middle; opacity: 0.6; }.qs-embed .nav-dropdown-panel {\n  display: none;\n  position: absolute;\n  top: calc(100% + 6px);\n  left: 0;\n  background: var(--white);\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  box-shadow: var(--shadow-lg);\n  min-width: 210px;\n  padding: 0.4rem;\n  z-index: 300;\n}.qs-embed .nav-dropdown:hover .nav-dropdown-panel { display: block; }.qs-embed .nav-dropdown-link {\n  display: block;\n  padding: 0.5rem 0.75rem;\n  font-size: 0.82rem;\n  font-weight: 500;\n  color: var(--gray-600);\n  border-radius: var(--radius);\n  transition: all 150ms;\n  white-space: nowrap;\n}.qs-embed .nav-dropdown-link:hover { background: var(--accent-soft); color: var(--accent); }.qs-embed .nav-dropdown-divider { height: 1px; background: var(--gray-100); margin: 0.3rem 0.5rem; }.qs-embed .quantum-subnav {\n  background: rgba(37,99,235,0.04);\n  border-bottom: 1px solid rgba(37,99,235,0.12);\n  padding: 0.4rem 0;\n}.qs-embed .quantum-subnav-inner {\n  max-width: var(--max-w);\n  margin: 0 auto;\n  padding: 0 1.5rem;\n  display: flex;\n  align-items: center;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  scrollbar-width: none;\n}.qs-embed .quantum-subnav-inner::-webkit-scrollbar { display: none; }.qs-embed .quantum-subnav-label {\n  font-size: 0.68rem;\n  font-weight: 800;\n  text-transform: uppercase;\n  letter-spacing: 0.1em;\n  color: var(--accent);\n  white-space: nowrap;\n  padding-right: 0.75rem;\n  margin-right: 0.25rem;\n  border-right: 1px solid rgba(37,99,235,0.2);\n  flex-shrink: 0;\n}.qs-embed .quantum-subnav-link {\n  font-size: 0.8rem;\n  font-weight: 500;\n  color: var(--gray-500);\n  padding: 0.28rem 0.7rem;\n  border-radius: var(--radius);\n  white-space: nowrap;\n  transition: all 150ms;\n  flex-shrink: 0;\n}.qs-embed .quantum-subnav-link:hover { color: var(--accent); background: rgba(37,99,235,0.08); }.qs-embed .quantum-subnav-link.active { color: var(--accent); font-weight: 600; }.qs-embed .overlap-callout {\n  display: flex;\n  gap: 0.875rem;\n  align-items: flex-start;\n  background: #fffbeb;\n  border: 1px solid #fcd34d;\n  border-left: 4px solid #f59e0b;\n  border-radius: var(--radius-lg);\n  padding: 1rem 1.25rem;\n  margin: 1.25rem 0;\n}.qs-embed .overlap-icon { font-size: 1rem; flex-shrink: 0; line-height: 1.6; color: #d97706; }.qs-embed .overlap-body .overlap-title {\n  font-size: 0.78rem;\n  font-weight: 700;\n  color: #92400e;\n  text-transform: uppercase;\n  letter-spacing: 0.05em;\n  margin-bottom: 0.3rem;\n}.qs-embed .overlap-body p { font-size: 0.84rem; color: #78350f; line-height: 1.6; margin: 0; }.qs-embed .overlap-body p + p { margin-top: 0.35rem; }.qs-embed .overlap-body a { color: #b45309; text-decoration: underline; font-weight: 600; }.qs-embed .hero-split {\n  display: grid;\n  grid-template-columns: 1fr auto;\n  gap: 3rem;\n  align-items: center;\n}\n@media (max-width: 768px) {.qs-embed .hero-split { grid-template-columns: 1fr; }.qs-embed .hero-photo { display: none; } }.qs-embed .hero-photo img {\n  width: 200px;\n  height: 200px;\n  object-fit: cover;\n  border-radius: var(--radius-lg);\n  border: 3px solid var(--gray-200);\n}.qs-embed .hero-credentials {\n  display: flex;\n  gap: 0.5rem;\n  flex-wrap: wrap;\n  margin-top: 1.5rem;\n}.qs-embed .hero-credentials span {\n  background: var(--gray-100);\n  color: var(--gray-600);\n  font-size: 0.72rem;\n  font-weight: 600;\n  padding: 0.2rem 0.6rem;\n  border-radius: 999px;\n}.qs-embed .topic-card {\n  border: 1px solid var(--gray-200);\n  border-radius: var(--radius-lg);\n  padding: 1.5rem;\n  background: var(--white);\n}.qs-embed .topic-card h3 { font-size: 0.95rem; font-weight: 700; color: var(--ink); margin-bottom: 0.75rem; }.qs-embed .topic-card ul { display: flex; flex-direction: column; gap: 0.35rem; }.qs-embed .topic-card li { font-size: 0.83rem; color: var(--gray-600); display: flex; gap: 0.4rem; }.qs-embed .topic-card li::before { content: '\u2192'; color: var(--accent); flex-shrink: 0; font-size: 0.75rem; margin-top: 1px; }.qs-embed .section-context {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.4rem;\n  font-size: 0.72rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--gray-400);\n  margin-bottom: 0.6rem;\n}.qs-embed .contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; align-items: start; }\n@media (max-width: 768px) {.qs-embed .contact-grid { grid-template-columns: 1fr; } }\n\n\n:root {\n    \n    --color-primary: #2563eb;\n    --color-primary-dark: #1d4ed8;\n    --color-primary-light: #3b82f6;\n    --color-secondary: #0f172a;\n    --color-accent: #06b6d4;\n    --color-success: #10b981;\n    --color-warning: #f59e0b;\n    --color-danger: #ef4444;\n\n    \n    --color-white: #ffffff;\n    --color-gray-50: #f8fafc;\n    --color-gray-100: #f1f5f9;\n    --color-gray-200: #e2e8f0;\n    --color-gray-300: #cbd5e1;\n    --color-gray-400: #94a3b8;\n    --color-gray-500: #64748b;\n    --color-gray-600: #475569;\n    --color-gray-700: #334155;\n    --color-gray-800: #1e293b;\n    --color-gray-900: #0f172a;\n\n    \n    --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    --font-size-xs: 0.75rem;\n    --font-size-sm: 0.875rem;\n    --font-size-base: 1rem;\n    --font-size-lg: 1.125rem;\n    --font-size-xl: 1.25rem;\n    --font-size-2xl: 1.5rem;\n    --font-size-3xl: 1.875rem;\n    --font-size-4xl: 2.25rem;\n    --font-size-5xl: 3rem;\n    --font-size-6xl: 3.75rem;\n\n    \n    --spacing-1: 0.25rem;\n    --spacing-2: 0.5rem;\n    --spacing-3: 0.75rem;\n    --spacing-4: 1rem;\n    --spacing-5: 1.25rem;\n    --spacing-6: 1.5rem;\n    --spacing-8: 2rem;\n    --spacing-10: 2.5rem;\n    --spacing-12: 3rem;\n    --spacing-16: 4rem;\n    --spacing-20: 5rem;\n    --spacing-24: 6rem;\n\n    \n    --max-width: 1200px;\n    --max-width-narrow: 800px;\n\n    \n    --shadow-sm: 0 1px 2px 0 rgb(0 0 0 \/ 0.05);\n    --shadow: 0 1px 3px 0 rgb(0 0 0 \/ 0.1), 0 1px 2px -1px rgb(0 0 0 \/ 0.1);\n    --shadow-md: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1);\n    --shadow-lg: 0 10px 15px -3px rgb(0 0 0 \/ 0.1), 0 4px 6px -4px rgb(0 0 0 \/ 0.1);\n    --shadow-xl: 0 20px 25px -5px rgb(0 0 0 \/ 0.1), 0 8px 10px -6px rgb(0 0 0 \/ 0.1);\n\n    \n    --radius-sm: 0.25rem;\n    --radius: 0.5rem;\n    --radius-md: 0.75rem;\n    --radius-lg: 1rem;\n    --radius-xl: 1.5rem;\n    --radius-full: 9999px;\n\n    \n    --transition-fast: 150ms ease;\n    --transition: 200ms ease;\n    --transition-slow: 300ms ease;\n}.qs-embed, .qs-embed *, .qs-embed *::before, .qs-embed *::after {\n    box-sizing: border-box;\n    margin: 0;\n    padding: 0;\n}.qs-embed {\n    font-family: var(--font-family);\n    font-size: var(--font-size-base);\n    line-height: 1.6;\n    color: var(--color-gray-700);\n    background-color: var(--color-white);\n    -webkit-font-smoothing: antialiased;\n    -moz-osx-font-smoothing: grayscale;\n}.qs-embed img {\n    max-width: 100%;\n    height: auto;\n    display: block;\n}.qs-embed a {\n    color: inherit;\n    text-decoration: none;\n}.qs-embed ul {\n    list-style: none;\n}.qs-embed .container {\n    width: 100%;\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n}.qs-embed h1, .qs-embed h2, .qs-embed h3, .qs-embed h4, .qs-embed h5, .qs-embed h6 {\n    color: var(--color-gray-900);\n    font-weight: 600;\n    line-height: 1.2;\n}.qs-embed h1 { font-size: var(--font-size-5xl); }.qs-embed h2 { font-size: var(--font-size-3xl); }.qs-embed h3 { font-size: var(--font-size-xl); }.qs-embed h4 { font-size: var(--font-size-lg); }.qs-embed .section-title {\n    font-size: var(--font-size-3xl);\n    text-align: center;\n    margin-bottom: var(--spacing-4);\n}.qs-embed .section-subtitle {\n    font-size: var(--font-size-lg);\n    color: var(--color-gray-500);\n    text-align: center;\n    max-width: 600px;\n    margin: 0 auto var(--spacing-12);\n}.qs-embed .btn {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: var(--spacing-2);\n    padding: var(--spacing-3) var(--spacing-6);\n    font-size: var(--font-size-base);\n    font-weight: 500;\n    border-radius: var(--radius);\n    border: 2px solid transparent;\n    cursor: pointer;\n    transition: all var(--transition);\n    white-space: nowrap;\n}.qs-embed .btn-primary {\n    background-color: var(--color-primary);\n    color: var(--color-white);\n    border-color: var(--color-primary);\n}.qs-embed .btn-primary:hover {\n    background-color: var(--color-primary-dark);\n    border-color: var(--color-primary-dark);\n    transform: translateY(-1px);\n}.qs-embed .btn-secondary {\n    background-color: var(--color-white);\n    color: var(--color-gray-700);\n    border-color: var(--color-gray-300);\n}.qs-embed .btn-secondary:hover {\n    background-color: var(--color-gray-50);\n    border-color: var(--color-gray-400);\n}.qs-embed .btn-outline {\n    background-color: transparent;\n    color: var(--color-primary);\n    border-color: var(--color-primary);\n}.qs-embed .btn-outline:hover {\n    background-color: var(--color-primary);\n    color: var(--color-white);\n}.qs-embed .btn-lg {\n    padding: var(--spacing-4) var(--spacing-8);\n    font-size: var(--font-size-lg);\n}.qs-embed .btn-icon {\n    width: 20px;\n    height: 20px;\n}.qs-embed .nav {\n    position: fixed;\n    top: 0;\n    left: 0;\n    right: 0;\n    z-index: 1000;\n    background-color: rgba(255, 255, 255, 0.95);\n    backdrop-filter: blur(10px);\n    border-bottom: 1px solid var(--color-gray-100);\n}.qs-embed .nav-container {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: var(--spacing-4) var(--spacing-6);\n}.qs-embed .nav-logo {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-2);\n    font-weight: 600;\n    color: var(--color-gray-900);\n}.qs-embed .logo-icon {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 36px;\n    height: 36px;\n    background: linear-gradient(135deg, var(--color-primary), var(--color-accent));\n    color: var(--color-white);\n    border-radius: var(--radius);\n    font-weight: 700;\n    font-size: var(--font-size-lg);\n}.qs-embed .nav-links {\n    display: flex;\n    gap: var(--spacing-8);\n}.qs-embed .nav-link {\n    color: var(--color-gray-600);\n    font-weight: 500;\n    transition: color var(--transition);\n}.qs-embed .nav-link:hover {\n    color: var(--color-primary);\n}.qs-embed .nav-cta {\n    padding: var(--spacing-2) var(--spacing-5);\n    background-color: var(--color-primary);\n    color: var(--color-white);\n    font-weight: 500;\n    border-radius: var(--radius);\n    transition: background-color var(--transition);\n}.qs-embed .nav-cta:hover {\n    background-color: var(--color-primary-dark);\n}.qs-embed .nav-mobile-toggle {\n    display: none;\n    flex-direction: column;\n    gap: 4px;\n    padding: var(--spacing-2);\n    background: none;\n    border: none;\n    cursor: pointer;\n}.qs-embed .nav-mobile-toggle span {\n    width: 24px;\n    height: 2px;\n    background-color: var(--color-gray-700);\n    border-radius: 2px;\n}.qs-embed .hero {\n    padding: calc(var(--spacing-24) + 80px) 0 var(--spacing-24);\n    background: linear-gradient(180deg, var(--color-gray-50) 0%, var(--color-white) 100%);\n}.qs-embed .hero-container {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: var(--spacing-16);\n    align-items: center;\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n}.qs-embed .hero-title {\n    font-size: var(--font-size-5xl);\n    line-height: 1.1;\n    margin-bottom: var(--spacing-6);\n}.qs-embed .hero-title .highlight {\n    color: var(--color-primary);\n}.qs-embed .hero-subtitle {\n    font-size: var(--font-size-xl);\n    color: var(--color-gray-600);\n    margin-bottom: var(--spacing-8);\n    line-height: 1.6;\n}.qs-embed .hero-cta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--spacing-4);\n    margin-bottom: var(--spacing-8);\n}.qs-embed .hero-trust {\n    color: var(--color-gray-500);\n    font-size: var(--font-size-sm);\n}.qs-embed .hero-learn-link {\n    display: inline-block;\n    margin-top: var(--spacing-3);\n    color: var(--color-primary);\n    font-weight: 500;\n    text-decoration: none;\n    transition: color var(--transition);\n}.qs-embed .hero-learn-link:hover {\n    color: var(--color-primary-dark);\n    text-decoration: underline;\n}.qs-embed .quantum-animation {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 400px;\n}.qs-embed .qubit-container {\n    position: relative;\n    width: 300px;\n    height: 300px;\n}.qs-embed .qubit {\n    position: absolute;\n    width: 16px;\n    height: 16px;\n    background: linear-gradient(135deg, var(--color-primary), var(--color-accent));\n    border-radius: 50%;\n    box-shadow: 0 0 20px rgba(37, 99, 235, 0.4);\n}.qs-embed .qubit-1 {\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    animation: pulse 2s ease-in-out infinite;\n}.qs-embed .qubit-2 {\n    top: 20%;\n    left: 50%;\n    transform: translateX(-50%);\n    animation: orbit1 4s linear infinite;\n}.qs-embed .qubit-3 {\n    bottom: 20%;\n    left: 50%;\n    transform: translateX(-50%);\n    animation: orbit2 5s linear infinite reverse;\n}.qs-embed .orbit {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    border: 1px solid var(--color-gray-200);\n    border-radius: 50%;\n}.qs-embed .orbit-1 { width: 100px; height: 100px; }.qs-embed .orbit-2 { width: 180px; height: 180px; }.qs-embed .orbit-3 { width: 260px; height: 260px; }\n\n@keyframes pulse {\n    0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; }\n    50% { transform: translate(-50%, -50%) scale(1.2); opacity: 0.8; }\n}\n\n@keyframes orbit1 {\n    from { transform: translateX(-50%) rotate(0deg) translateY(-90px) rotate(0deg); }\n    to { transform: translateX(-50%) rotate(360deg) translateY(-90px) rotate(-360deg); }\n}\n\n@keyframes orbit2 {\n    from { transform: translateX(-50%) rotate(0deg) translateY(130px) rotate(0deg); }\n    to { transform: translateX(-50%) rotate(360deg) translateY(130px) rotate(-360deg); }\n}.qs-embed .education-banner {\n    padding: var(--spacing-10) 0;\n    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);\n}.qs-embed .education-banner-content {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: var(--spacing-8);\n}.qs-embed .education-banner-text h2 {\n    color: var(--color-white);\n    font-size: var(--font-size-2xl);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .education-banner-text p {\n    color: rgba(255, 255, 255, 0.9);\n    margin: 0;\n    max-width: 600px;\n}.qs-embed .education-banner .btn-primary {\n    background-color: var(--color-white);\n    color: var(--color-primary);\n    border-color: var(--color-white);\n    white-space: nowrap;\n    flex-shrink: 0;\n}.qs-embed .education-banner .btn-primary:hover {\n    background-color: var(--color-gray-100);\n}\n\n@media (max-width: 768px) {.qs-embed .education-banner-content {\n        flex-direction: column;\n        text-align: center;\n    }\n}.qs-embed .problem-section {\n    padding: var(--spacing-16) 0;\n    background-color: var(--color-gray-900);\n}.qs-embed .problem-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--spacing-8);\n}.qs-embed .problem-stat {\n    text-align: center;\n    padding: var(--spacing-8);\n}.qs-embed .stat-number {\n    display: block;\n    font-size: var(--font-size-5xl);\n    font-weight: 700;\n    color: var(--color-white);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .stat-label {\n    display: block;\n    font-size: var(--font-size-base);\n    color: var(--color-gray-400);\n}.qs-embed .explainer-section {\n    padding: var(--spacing-24) 0;\n}.qs-embed .timeline-explainer {\n    max-width: 700px;\n    margin: 0 auto;\n}.qs-embed .timeline-step {\n    display: grid;\n    grid-template-columns: 100px 1fr;\n    gap: var(--spacing-6);\n    padding: var(--spacing-6) 0;\n}.qs-embed .step-visual {\n    display: flex;\n    justify-content: center;\n}.qs-embed .icon-container {\n    width: 64px;\n    height: 64px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 50%;\n    background-color: var(--color-gray-100);\n    color: var(--color-gray-600);\n}.qs-embed .icon-container svg {\n    width: 32px;\n    height: 32px;\n}.qs-embed .icon-harvest { background-color: #fef3c7; color: #d97706; }.qs-embed .icon-wait { background-color: #e0e7ff; color: #4f46e5; }.qs-embed .icon-decrypt { background-color: #fee2e2; color: #dc2626; }.qs-embed .icon-protect { background-color: #d1fae5; color: #059669; }.qs-embed .step-content h3 {\n    margin-bottom: var(--spacing-2);\n}.qs-embed .step-content p {\n    color: var(--color-gray-600);\n}.qs-embed .timeline-connector {\n    width: 2px;\n    height: 40px;\n    background-color: var(--color-gray-200);\n    margin-left: 81px;\n}.qs-embed .highlight-step .icon-container {\n    box-shadow: 0 0 0 4px rgba(16, 185, 129, 0.2);\n}.qs-embed .explainer-cta {\n    text-align: center;\n    margin-top: var(--spacing-12);\n}.qs-embed .game-section {\n    padding: var(--spacing-24) 0;\n    background-color: var(--color-gray-50);\n}.qs-embed .sensitivity-game {\n    max-width: 900px;\n    margin: 0 auto;\n}.qs-embed .game-cards {\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--spacing-4);\n    justify-content: center;\n    margin-bottom: var(--spacing-8);\n}.qs-embed .game-card {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: var(--spacing-2);\n    padding: var(--spacing-4) var(--spacing-6);\n    background-color: var(--color-white);\n    border: 2px solid var(--color-gray-200);\n    border-radius: var(--radius-md);\n    cursor: grab;\n    transition: all var(--transition);\n    user-select: none;\n}.qs-embed .game-card:hover {\n    border-color: var(--color-primary);\n    box-shadow: var(--shadow-md);\n}.qs-embed .game-card.dragging {\n    opacity: 0.5;\n    cursor: grabbing;\n}.qs-embed .card-icon {\n    width: 32px;\n    height: 32px;\n    color: var(--color-gray-600);\n}.qs-embed .card-icon svg {\n    width: 100%;\n    height: 100%;\n}.qs-embed .card-label {\n    font-size: var(--font-size-sm);\n    font-weight: 500;\n    color: var(--color-gray-700);\n    text-align: center;\n}.qs-embed .game-zones {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: var(--spacing-6);\n}.qs-embed .drop-zone {\n    min-height: 200px;\n    padding: var(--spacing-6);\n    border: 2px dashed var(--color-gray-300);\n    border-radius: var(--radius-lg);\n    transition: all var(--transition);\n}.qs-embed .drop-zone.drag-over {\n    border-color: var(--color-primary);\n    background-color: rgba(37, 99, 235, 0.05);\n}.qs-embed .zone-header {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-2);\n    margin-bottom: var(--spacing-3);\n    font-weight: 600;\n    color: var(--color-gray-700);\n}.qs-embed .zone-header svg {\n    width: 24px;\n    height: 24px;\n}.qs-embed .zone-sensitive .zone-header { color: var(--color-danger); }.qs-embed .zone-not-sensitive .zone-header { color: var(--color-success); }.qs-embed .zone-hint {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .zone-cards {\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--spacing-3);\n}.qs-embed .zone-cards .game-card {\n    cursor: default;\n}.qs-embed .game-results {\n    margin-top: var(--spacing-8);\n    padding: var(--spacing-8);\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-lg);\n}.qs-embed .game-results.hidden {\n    display: none;\n}.qs-embed .game-results h3 {\n    text-align: center;\n    margin-bottom: var(--spacing-6);\n}.qs-embed .results-grid {\n    display: grid;\n    gap: var(--spacing-4);\n    margin-bottom: var(--spacing-8);\n}.qs-embed .result-item {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-4);\n    padding: var(--spacing-4);\n    border-radius: var(--radius);\n    background-color: var(--color-gray-50);\n}.qs-embed .result-item.correct {\n    background-color: #d1fae5;\n}.qs-embed .result-item.incorrect {\n    background-color: #fee2e2;\n}.qs-embed .result-icon {\n    width: 24px;\n    height: 24px;\n    flex-shrink: 0;\n}.qs-embed .result-text {\n    flex: 1;\n}.qs-embed .result-text strong {\n    display: block;\n    margin-bottom: var(--spacing-1);\n}.qs-embed .result-text span {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .results-cta {\n    text-align: center;\n}.qs-embed .results-cta p {\n    margin-bottom: var(--spacing-4);\n    color: var(--color-gray-600);\n}.qs-embed .qubits-section {\n    padding: var(--spacing-24) 0;\n}.qs-embed .qubits-explainer {\n    max-width: 900px;\n    margin: 0 auto;\n}.qs-embed .qubits-visual {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: var(--spacing-8);\n    margin-bottom: var(--spacing-12);\n    padding: var(--spacing-12);\n    background-color: var(--color-gray-50);\n    border-radius: var(--radius-lg);\n}.qs-embed .physical-qubits {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--spacing-4);\n}.qs-embed .qubit-dot {\n    width: 24px;\n    height: 24px;\n    border-radius: 50%;\n    background: linear-gradient(135deg, var(--color-primary), var(--color-accent));\n}.qs-embed .qubit-dot.glitching {\n    animation: glitch 0.5s ease-in-out infinite alternate;\n}.qs-embed .qubit-dot.stable {\n    width: 48px;\n    height: 48px;\n    box-shadow: 0 0 20px rgba(37, 99, 235, 0.4);\n    animation: stablePulse 2s ease-in-out infinite;\n}\n\n@keyframes glitch {\n    0% { opacity: 1; transform: translate(0, 0); }\n    25% { opacity: 0.7; transform: translate(-2px, 1px); }\n    50% { opacity: 0.5; transform: translate(2px, -1px); }\n    75% { opacity: 0.8; transform: translate(-1px, -2px); }\n    100% { opacity: 0.6; transform: translate(1px, 2px); }\n}\n\n@keyframes stablePulse {\n    0%, 100% { transform: scale(1); }\n    50% { transform: scale(1.05); }\n}.qs-embed .qubits-arrow {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: var(--spacing-2);\n    color: var(--color-gray-500);\n    font-size: var(--font-size-sm);\n}.qs-embed .qubits-arrow svg {\n    width: 24px;\n    height: 48px;\n}.qs-embed .logical-qubit {\n    display: flex;\n    justify-content: center;\n}.qs-embed .qubits-info {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: var(--spacing-6);\n    margin-bottom: var(--spacing-8);\n}.qs-embed .info-card {\n    padding: var(--spacing-6);\n    background-color: var(--color-gray-50);\n    border-radius: var(--radius-lg);\n}.qs-embed .info-card.highlight {\n    background-color: var(--color-primary);\n    color: var(--color-white);\n}.qs-embed .info-card.highlight h4 {\n    color: var(--color-white);\n}.qs-embed .info-card h4 {\n    margin-bottom: var(--spacing-4);\n}.qs-embed .info-card ul {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-2);\n}.qs-embed .info-card li {\n    padding-left: var(--spacing-4);\n    position: relative;\n}.qs-embed .info-card li::before {\n    content: \"\u2022\";\n    position: absolute;\n    left: 0;\n    color: var(--color-gray-400);\n}.qs-embed .info-card.highlight li::before {\n    color: rgba(255, 255, 255, 0.6);\n}.qs-embed .qubits-insight {\n    text-align: center;\n}.qs-embed .qubits-insight blockquote {\n    font-size: var(--font-size-lg);\n    font-style: italic;\n    color: var(--color-gray-600);\n    max-width: 700px;\n    margin: 0 auto;\n    padding: var(--spacing-6);\n    border-left: 4px solid var(--color-primary);\n    background-color: var(--color-gray-50);\n    text-align: left;\n}.qs-embed .shor-section {\n    padding: var(--spacing-24) 0;\n    background-color: var(--color-gray-900);\n    color: var(--color-white);\n}.qs-embed .shor-section .section-title, .qs-embed .shor-section .section-subtitle {\n    color: var(--color-white);\n}.qs-embed .shor-section .section-subtitle {\n    color: var(--color-gray-400);\n}.qs-embed .shor-interactive {\n    max-width: 700px;\n    margin: 0 auto;\n}.qs-embed .shor-slider-container {\n    margin-bottom: var(--spacing-12);\n}.qs-embed .slider-labels {\n    display: flex;\n    justify-content: space-between;\n    margin-bottom: var(--spacing-4);\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-400);\n}.qs-embed .shor-slider {\n    width: 100%;\n    height: 8px;\n    appearance: none;\n    background: linear-gradient(90deg, var(--color-gray-700) 0%, var(--color-primary) 100%);\n    border-radius: var(--radius-full);\n    outline: none;\n    cursor: pointer;\n}.qs-embed .shor-slider::-webkit-slider-thumb {\n    appearance: none;\n    width: 24px;\n    height: 24px;\n    background-color: var(--color-white);\n    border-radius: 50%;\n    cursor: pointer;\n    box-shadow: var(--shadow-lg);\n}.qs-embed .slider-scale {\n    display: flex;\n    justify-content: space-between;\n    margin-top: var(--spacing-4);\n    font-size: var(--font-size-xs);\n    color: var(--color-gray-500);\n}.qs-embed .shor-result {\n    text-align: center;\n    padding: var(--spacing-12);\n    background-color: var(--color-gray-800);\n    border-radius: var(--radius-lg);\n    margin-bottom: var(--spacing-8);\n}.qs-embed .result-time {\n    display: flex;\n    align-items: baseline;\n    justify-content: center;\n    gap: var(--spacing-2);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .time-value {\n    font-size: var(--font-size-5xl);\n    font-weight: 700;\n    color: var(--color-accent);\n}.qs-embed .time-unit {\n    font-size: var(--font-size-2xl);\n    color: var(--color-gray-400);\n}.qs-embed .result-context {\n    color: var(--color-gray-400);\n}.qs-embed .shor-message {\n    text-align: center;\n}.qs-embed .shor-message p {\n    font-size: var(--font-size-lg);\n    color: var(--color-gray-300);\n}.qs-embed .shor-message .subtle {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n    margin-top: var(--spacing-2);\n}.qs-embed .timeline-section {\n    padding: var(--spacing-24) 0;\n}.qs-embed .migration-timeline {\n    max-width: 1000px;\n    margin: 0 auto;\n}.qs-embed .timeline-track {\n    position: relative;\n    height: 8px;\n    background-color: var(--color-gray-200);\n    border-radius: var(--radius-full);\n    margin-bottom: var(--spacing-8);\n}.qs-embed .timeline-qday {\n    position: absolute;\n    right: 10%;\n    top: -8px;\n    padding: var(--spacing-1) var(--spacing-3);\n    background-color: var(--color-warning);\n    color: var(--color-white);\n    font-size: var(--font-size-xs);\n    font-weight: 600;\n    border-radius: var(--radius-full);\n    white-space: nowrap;\n}.qs-embed .timeline-phases {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--spacing-6);\n    margin-bottom: var(--spacing-12);\n}.qs-embed .phase {\n    padding: var(--spacing-6);\n    background-color: var(--color-gray-50);\n    border-radius: var(--radius-lg);\n    border-top: 4px solid;\n}.qs-embed .phase-1 { border-top-color: var(--color-primary); }.qs-embed .phase-2 { border-top-color: var(--color-accent); }.qs-embed .phase-3 { border-top-color: var(--color-success); }.qs-embed .phase-header {\n    margin-bottom: var(--spacing-4);\n}.qs-embed .phase-years {\n    display: inline-block;\n    font-size: var(--font-size-sm);\n    font-weight: 600;\n    color: var(--color-gray-500);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .phase-header h3 {\n    font-size: var(--font-size-lg);\n}.qs-embed .phase-actions {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-2);\n}.qs-embed .phase-actions li {\n    padding-left: var(--spacing-4);\n    position: relative;\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .phase-actions li::before {\n    content: \"\u2192\";\n    position: absolute;\n    left: 0;\n    color: var(--color-gray-400);\n}.qs-embed .timeline-regulatory {\n    padding: var(--spacing-6);\n    background-color: var(--color-gray-100);\n    border-radius: var(--radius-lg);\n}.qs-embed .timeline-regulatory h4 {\n    margin-bottom: var(--spacing-4);\n}.qs-embed .regulatory-items {\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--spacing-6);\n}.qs-embed .reg-item {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-3);\n}.qs-embed .reg-year {\n    font-weight: 700;\n    color: var(--color-primary);\n}.qs-embed .reg-text {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .cta-section {\n    padding: var(--spacing-24) 0;\n    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);\n    color: var(--color-white);\n}.qs-embed .cta-content {\n    text-align: center;\n    max-width: 600px;\n    margin: 0 auto;\n}.qs-embed .cta-content h2 {\n    color: var(--color-white);\n    font-size: var(--font-size-3xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .cta-content > p {\n    font-size: var(--font-size-lg);\n    opacity: 0.9;\n    margin-bottom: var(--spacing-8);\n}.qs-embed .cta-buttons {\n    display: flex;\n    justify-content: center;\n    gap: var(--spacing-4);\n    margin-bottom: var(--spacing-6);\n}.qs-embed .cta-section .btn-primary {\n    background-color: var(--color-white);\n    color: var(--color-primary);\n    border-color: var(--color-white);\n}.qs-embed .cta-section .btn-primary:hover {\n    background-color: var(--color-gray-100);\n}.qs-embed .cta-section .btn-outline {\n    background-color: transparent;\n    color: var(--color-white);\n    border-color: var(--color-white);\n}.qs-embed .cta-section .btn-outline:hover {\n    background-color: rgba(255, 255, 255, 0.1);\n}.qs-embed .cta-note {\n    font-size: var(--font-size-sm);\n    opacity: 0.7;\n}.qs-embed .footer {\n    padding: var(--spacing-16) 0 var(--spacing-8);\n    background-color: var(--color-gray-900);\n    color: var(--color-gray-400);\n}.qs-embed .footer-grid {\n    display: grid;\n    grid-template-columns: 2fr 1fr 1fr 1fr;\n    gap: var(--spacing-12);\n    margin-bottom: var(--spacing-12);\n}.qs-embed .footer-logo {\n    display: flex;\n    align-items: center;\n    gap: var(--spacing-2);\n    color: var(--color-white);\n    font-weight: 600;\n    margin-bottom: var(--spacing-4);\n}.qs-embed .footer-brand p {\n    font-size: var(--font-size-sm);\n    line-height: 1.6;\n}.qs-embed .footer-links h4 {\n    color: var(--color-white);\n    font-size: var(--font-size-sm);\n    font-weight: 600;\n    margin-bottom: var(--spacing-4);\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n}.qs-embed .footer-links ul {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-2);\n}.qs-embed .footer-links a {\n    font-size: var(--font-size-sm);\n    transition: color var(--transition);\n}.qs-embed .footer-links a:hover {\n    color: var(--color-white);\n}.qs-embed .footer-bottom {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    padding-top: var(--spacing-8);\n    border-top: 1px solid var(--color-gray-800);\n    font-size: var(--font-size-sm);\n}.qs-embed .footer-tagline {\n    font-style: italic;\n    color: var(--color-gray-500);\n}.qs-embed .footer-version {\n    display: inline-block;\n    font-size: 0.7rem;\n    font-weight: 600;\n    color: var(--color-gray-500);\n    background: var(--color-gray-800);\n    padding: 1px 7px;\n    border-radius: 999px;\n    vertical-align: middle;\n    margin-left: 4px;\n    letter-spacing: 0.03em;\n}\n\n\n@media (max-width: 1024px) {.qs-embed .hero-container {\n        grid-template-columns: 1fr;\n        text-align: center;\n    }.qs-embed .hero-cta {\n        justify-content: center;\n    }.qs-embed .hero-visual {\n        order: -1;\n    }.qs-embed .quantum-animation {\n        height: 300px;\n    }.qs-embed .qubit-container {\n        width: 200px;\n        height: 200px;\n    }.qs-embed .problem-grid {\n        grid-template-columns: 1fr;\n        gap: var(--spacing-4);\n    }.qs-embed .timeline-phases {\n        grid-template-columns: 1fr;\n    }.qs-embed .footer-grid {\n        grid-template-columns: 1fr 1fr;\n    }\n}\n\n@media (max-width: 768px) {.qs-embed .nav-links {\n        display: none;\n    }.qs-embed .nav-cta {\n        display: none;\n    }.qs-embed .nav-mobile-toggle {\n        display: flex;\n    }.qs-embed .hero-title {\n        font-size: var(--font-size-3xl);\n    }.qs-embed .hero-subtitle {\n        font-size: var(--font-size-lg);\n    }.qs-embed .hero-cta {\n        flex-direction: column;\n    }.qs-embed .stat-number {\n        font-size: var(--font-size-3xl);\n    }.qs-embed .section-title {\n        font-size: var(--font-size-2xl);\n    }.qs-embed .timeline-step {\n        grid-template-columns: 60px 1fr;\n    }.qs-embed .icon-container {\n        width: 48px;\n        height: 48px;\n    }.qs-embed .timeline-connector {\n        margin-left: 53px;\n    }.qs-embed .game-zones {\n        grid-template-columns: 1fr;\n    }.qs-embed .qubits-info {\n        grid-template-columns: 1fr;\n    }.qs-embed .slider-scale {\n        flex-wrap: wrap;\n        justify-content: center;\n        gap: var(--spacing-2);\n    }.qs-embed .cta-buttons {\n        flex-direction: column;\n    }.qs-embed .footer-grid {\n        grid-template-columns: 1fr;\n        gap: var(--spacing-8);\n    }.qs-embed .footer-bottom {\n        flex-direction: column;\n        gap: var(--spacing-4);\n        text-align: center;\n    }\n}.qs-embed .hidden {\n    display: none !important;\n}.qs-embed .text-center {\n    text-align: center;\n}\n\n\n.qs-embed .about-photo {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: var(--radius-xl);\n    filter: grayscale(20%);\n}.qs-embed .about-image {\n    overflow: hidden;\n}.qs-embed .assessment-page {\n    padding-top: 100px;\n    min-height: 100vh;\n    background: linear-gradient(180deg, var(--color-gray-50) 0%, var(--color-white) 100%);\n}.qs-embed .assessment-container {\n    max-width: 800px;\n    margin: 0 auto;\n    padding: var(--spacing-8) var(--spacing-6);\n}.qs-embed .assessment-header {\n    text-align: center;\n    margin-bottom: var(--spacing-8);\n}.qs-embed .assessment-header h1 {\n    font-size: var(--font-size-3xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .assessment-header p {\n    color: var(--color-gray-600);\n    font-size: var(--font-size-lg);\n}.qs-embed .progress-container {\n    margin-bottom: var(--spacing-8);\n}.qs-embed .progress-bar {\n    height: 8px;\n    background-color: var(--color-gray-200);\n    border-radius: var(--radius-full);\n    overflow: hidden;\n}.qs-embed .progress-fill {\n    height: 100%;\n    background: linear-gradient(90deg, var(--color-primary), var(--color-accent));\n    border-radius: var(--radius-full);\n    transition: width var(--transition-slow);\n}.qs-embed .progress-text {\n    display: flex;\n    justify-content: space-between;\n    margin-top: var(--spacing-2);\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n}.qs-embed .question-card {\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-lg);\n    padding: var(--spacing-8);\n    margin-bottom: var(--spacing-6);\n}.qs-embed .question-number {\n    display: inline-block;\n    padding: var(--spacing-1) var(--spacing-3);\n    background-color: var(--color-primary);\n    color: var(--color-white);\n    font-size: var(--font-size-sm);\n    font-weight: 600;\n    border-radius: var(--radius-full);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .question-text {\n    font-size: var(--font-size-xl);\n    font-weight: 600;\n    color: var(--color-gray-900);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .question-help {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n    margin-bottom: var(--spacing-6);\n}.qs-embed .answer-options {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-3);\n}.qs-embed .answer-option {\n    display: flex;\n    align-items: flex-start;\n    gap: var(--spacing-4);\n    padding: var(--spacing-4) var(--spacing-5);\n    background-color: var(--color-gray-50);\n    border: 2px solid var(--color-gray-200);\n    border-radius: var(--radius-md);\n    cursor: pointer;\n    transition: all var(--transition);\n}.qs-embed .answer-option:hover {\n    border-color: var(--color-primary-light);\n    background-color: rgba(37, 99, 235, 0.05);\n}.qs-embed .answer-option.selected {\n    border-color: var(--color-primary);\n    background-color: rgba(37, 99, 235, 0.1);\n}.qs-embed .answer-radio {\n    width: 20px;\n    height: 20px;\n    border: 2px solid var(--color-gray-400);\n    border-radius: 50%;\n    flex-shrink: 0;\n    margin-top: 2px;\n    position: relative;\n}.qs-embed .answer-option.selected .answer-radio {\n    border-color: var(--color-primary);\n}.qs-embed .answer-option.selected .answer-radio::after {\n    content: \"\";\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 10px;\n    height: 10px;\n    background-color: var(--color-primary);\n    border-radius: 50%;\n}.qs-embed .answer-content {\n    flex: 1;\n}.qs-embed .answer-label {\n    font-weight: 500;\n    color: var(--color-gray-800);\n    margin-bottom: var(--spacing-1);\n}.qs-embed .answer-description {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n}.qs-embed .slider-container {\n    padding: var(--spacing-4) 0;\n}.qs-embed .slider-input {\n    width: 100%;\n    height: 8px;\n    appearance: none;\n    background: linear-gradient(90deg, var(--color-gray-300) 0%, var(--color-primary) 100%);\n    border-radius: var(--radius-full);\n    outline: none;\n    cursor: pointer;\n}.qs-embed .slider-input::-webkit-slider-thumb {\n    appearance: none;\n    width: 24px;\n    height: 24px;\n    background-color: var(--color-white);\n    border: 2px solid var(--color-primary);\n    border-radius: 50%;\n    cursor: pointer;\n    box-shadow: var(--shadow-md);\n}.qs-embed .slider-labels {\n    display: flex;\n    justify-content: space-between;\n    margin-top: var(--spacing-3);\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n}.qs-embed .slider-value {\n    text-align: center;\n    font-size: var(--font-size-2xl);\n    font-weight: 700;\n    color: var(--color-primary);\n    margin-top: var(--spacing-4);\n}.qs-embed .assessment-nav {\n    display: flex;\n    justify-content: space-between;\n    margin-top: var(--spacing-8);\n}.qs-embed .nav-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: var(--spacing-2);\n    padding: var(--spacing-3) var(--spacing-6);\n    font-size: var(--font-size-base);\n    font-weight: 500;\n    border-radius: var(--radius);\n    cursor: pointer;\n    transition: all var(--transition);\n    border: none;\n}.qs-embed .nav-btn-prev {\n    background-color: var(--color-gray-100);\n    color: var(--color-gray-700);\n}.qs-embed .nav-btn-prev:hover {\n    background-color: var(--color-gray-200);\n}.qs-embed .nav-btn-next {\n    background-color: var(--color-primary);\n    color: var(--color-white);\n}.qs-embed .nav-btn-next:hover {\n    background-color: var(--color-primary-dark);\n}.qs-embed .nav-btn:disabled {\n    opacity: 0.5;\n    cursor: not-allowed;\n}.qs-embed .results-container {\n    max-width: 900px;\n    margin: 0 auto;\n    padding: var(--spacing-8) var(--spacing-6);\n}.qs-embed .results-header {\n    text-align: center;\n    margin-bottom: var(--spacing-12);\n}.qs-embed .results-header h1 {\n    font-size: var(--font-size-3xl);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .results-header p {\n    color: var(--color-gray-600);\n}.qs-embed .score-display {\n    text-align: center;\n    padding: var(--spacing-12);\n    background: linear-gradient(135deg, var(--color-gray-900) 0%, var(--color-gray-800) 100%);\n    border-radius: var(--radius-xl);\n    margin-bottom: var(--spacing-12);\n}.qs-embed .score-circle {\n    position: relative;\n    width: 200px;\n    height: 200px;\n    margin: 0 auto var(--spacing-6);\n}.qs-embed .score-circle svg {\n    width: 100%;\n    height: 100%;\n    transform: rotate(-90deg);\n}.qs-embed .score-ring-bg {\n    fill: none;\n    stroke: var(--color-gray-700);\n    stroke-width: 12;\n}.qs-embed .score-ring {\n    fill: none;\n    stroke: var(--color-accent);\n    stroke-width: 12;\n    stroke-linecap: round;\n    stroke-dasharray: 565;\n    stroke-dashoffset: 565;\n    transition: stroke-dashoffset 1.5s ease-out;\n}.qs-embed .score-number {\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    font-size: var(--font-size-5xl);\n    font-weight: 700;\n    color: var(--color-white);\n}.qs-embed .score-label {\n    font-size: var(--font-size-2xl);\n    font-weight: 600;\n    color: var(--color-accent);\n    margin-bottom: var(--spacing-2);\n}.qs-embed .score-description {\n    color: var(--color-gray-400);\n    max-width: 400px;\n    margin: 0 auto;\n}.qs-embed .dimension-scores {\n    margin-bottom: var(--spacing-12);\n}.qs-embed .dimension-scores h2 {\n    text-align: center;\n    margin-bottom: var(--spacing-8);\n}.qs-embed .dimension-grid {\n    display: grid;\n    gap: var(--spacing-4);\n}.qs-embed .dimension-item {\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    padding: var(--spacing-5);\n    box-shadow: var(--shadow);\n}.qs-embed .dimension-header {\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    margin-bottom: var(--spacing-3);\n}.qs-embed .dimension-name {\n    font-weight: 600;\n    color: var(--color-gray-800);\n}.qs-embed .dimension-score {\n    font-weight: 700;\n    color: var(--color-primary);\n}.qs-embed .dimension-bar {\n    height: 8px;\n    background-color: var(--color-gray-200);\n    border-radius: var(--radius-full);\n    overflow: hidden;\n    margin-bottom: var(--spacing-2);\n}.qs-embed .dimension-fill {\n    height: 100%;\n    background: linear-gradient(90deg, var(--color-primary), var(--color-accent));\n    border-radius: var(--radius-full);\n    transition: width 0.8s ease-out;\n}.qs-embed .dimension-description {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n}.qs-embed .next-steps {\n    margin-bottom: var(--spacing-12);\n}.qs-embed .next-steps h2 {\n    text-align: center;\n    margin-bottom: var(--spacing-8);\n}.qs-embed .steps-list {\n    display: flex;\n    flex-direction: column;\n    gap: var(--spacing-4);\n}.qs-embed .step-item {\n    display: flex;\n    gap: var(--spacing-4);\n    padding: var(--spacing-5);\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow);\n}.qs-embed .step-number {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 40px;\n    height: 40px;\n    background-color: var(--color-primary);\n    color: var(--color-white);\n    font-weight: 700;\n    border-radius: 50%;\n    flex-shrink: 0;\n}.qs-embed .step-content h4 {\n    margin-bottom: var(--spacing-1);\n}.qs-embed .step-content p {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .step-timeline {\n    display: inline-block;\n    margin-top: var(--spacing-2);\n    padding: var(--spacing-1) var(--spacing-3);\n    background-color: var(--color-gray-100);\n    color: var(--color-gray-600);\n    font-size: var(--font-size-xs);\n    font-weight: 500;\n    border-radius: var(--radius-full);\n}.qs-embed .lead-capture {\n    background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);\n    border-radius: var(--radius-xl);\n    padding: var(--spacing-12);\n    text-align: center;\n    color: var(--color-white);\n}.qs-embed .lead-capture h2 {\n    color: var(--color-white);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .lead-capture > p {\n    opacity: 0.9;\n    margin-bottom: var(--spacing-8);\n    max-width: 500px;\n    margin-left: auto;\n    margin-right: auto;\n}.qs-embed .lead-form {\n    max-width: 400px;\n    margin: 0 auto;\n}.qs-embed .form-group {\n    margin-bottom: var(--spacing-4);\n}.qs-embed .form-input {\n    width: 100%;\n    padding: var(--spacing-3) var(--spacing-4);\n    font-size: var(--font-size-base);\n    border: 2px solid transparent;\n    border-radius: var(--radius);\n    outline: none;\n    transition: border-color var(--transition);\n}.qs-embed .form-input:focus {\n    border-color: var(--color-accent);\n}.qs-embed .form-input::placeholder {\n    color: var(--color-gray-400);\n}.qs-embed .form-checkbox {\n    display: flex;\n    align-items: flex-start;\n    gap: var(--spacing-3);\n    text-align: left;\n    margin-bottom: var(--spacing-6);\n}.qs-embed .form-checkbox input {\n    width: 18px;\n    height: 18px;\n    margin-top: 2px;\n    flex-shrink: 0;\n}.qs-embed .form-checkbox label {\n    font-size: var(--font-size-sm);\n    opacity: 0.9;\n}.qs-embed .lead-form .btn {\n    width: 100%;\n}.qs-embed .lead-form .btn-primary {\n    background-color: var(--color-white);\n    color: var(--color-primary);\n}.qs-embed .lead-form .btn-primary:hover {\n    background-color: var(--color-gray-100);\n}.qs-embed .form-note {\n    font-size: var(--font-size-xs);\n    opacity: 0.7;\n    margin-top: var(--spacing-4);\n}.qs-embed .services-page {\n    padding-top: 100px;\n}.qs-embed .services-hero {\n    padding: var(--spacing-16) 0;\n    background: linear-gradient(180deg, var(--color-gray-50) 0%, var(--color-white) 100%);\n    text-align: center;\n}.qs-embed .services-hero h1 {\n    font-size: var(--font-size-4xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .services-hero p {\n    font-size: var(--font-size-xl);\n    color: var(--color-gray-600);\n    max-width: 600px;\n    margin: 0 auto;\n}.qs-embed .services-grid {\n    padding: var(--spacing-16) 0;\n}.qs-embed .services-intro {\n    text-align: center;\n    margin-bottom: var(--spacing-12);\n}.qs-embed .service-cards {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--spacing-8);\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n}.qs-embed .service-card {\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-lg);\n    padding: var(--spacing-8);\n    border-top: 4px solid;\n    transition: transform var(--transition);\n}.qs-embed .service-card:hover {\n    transform: translateY(-4px);\n}.qs-embed .service-card.exploring { border-top-color: var(--color-warning); }.qs-embed .service-card.planning { border-top-color: var(--color-primary); }.qs-embed .service-card.executing { border-top-color: var(--color-success); }.qs-embed .service-badge {\n    display: inline-block;\n    padding: var(--spacing-1) var(--spacing-3);\n    font-size: var(--font-size-xs);\n    font-weight: 600;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    border-radius: var(--radius-full);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .service-card.exploring .service-badge {\n    background-color: #fef3c7;\n    color: #d97706;\n}.qs-embed .service-card.planning .service-badge {\n    background-color: #dbeafe;\n    color: #1d4ed8;\n}.qs-embed .service-card.executing .service-badge {\n    background-color: #d1fae5;\n    color: #059669;\n}.qs-embed .service-card h3 {\n    font-size: var(--font-size-xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .service-card > p {\n    color: var(--color-gray-600);\n    margin-bottom: var(--spacing-6);\n}.qs-embed .service-features {\n    margin-bottom: var(--spacing-6);\n}.qs-embed .service-features li {\n    display: flex;\n    align-items: flex-start;\n    gap: var(--spacing-2);\n    padding: var(--spacing-2) 0;\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .service-features li::before {\n    content: \"\u2713\";\n    color: var(--color-success);\n    font-weight: 600;\n}.qs-embed .service-card .btn {\n    width: 100%;\n}.qs-embed .roadmap-preview {\n    padding: var(--spacing-16) 0;\n    background-color: var(--color-gray-50);\n}.qs-embed .roadmap-visual {\n    max-width: 900px;\n    margin: 0 auto var(--spacing-8);\n    padding: var(--spacing-8);\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow);\n}.qs-embed .roadmap-phases {\n    display: flex;\n    justify-content: space-between;\n    position: relative;\n}.qs-embed .roadmap-phases::before {\n    content: \"\";\n    position: absolute;\n    top: 20px;\n    left: 50px;\n    right: 50px;\n    height: 4px;\n    background-color: var(--color-gray-200);\n}.qs-embed .roadmap-phase {\n    text-align: center;\n    position: relative;\n    z-index: 1;\n}.qs-embed .phase-dot {\n    width: 40px;\n    height: 40px;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin: 0 auto var(--spacing-3);\n    font-weight: 600;\n    color: var(--color-white);\n}.qs-embed .phase-dot.phase-1 { background-color: var(--color-primary); }.qs-embed .phase-dot.phase-2 { background-color: var(--color-accent); }.qs-embed .phase-dot.phase-3 { background-color: var(--color-success); }.qs-embed .phase-label {\n    font-size: var(--font-size-sm);\n    font-weight: 600;\n    color: var(--color-gray-700);\n}.qs-embed .phase-time {\n    font-size: var(--font-size-xs);\n    color: var(--color-gray-500);\n}.qs-embed .about-page {\n    padding-top: 100px;\n}.qs-embed .about-hero {\n    padding: var(--spacing-16) 0;\n    background: linear-gradient(180deg, var(--color-gray-50) 0%, var(--color-white) 100%);\n}.qs-embed .about-hero-content {\n    display: grid;\n    grid-template-columns: 300px 1fr;\n    gap: var(--spacing-12);\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n    align-items: start;\n}.qs-embed .about-image {\n    width: 300px;\n    height: 300px;\n    background: linear-gradient(135deg, var(--color-primary), var(--color-accent));\n    border-radius: var(--radius-xl);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n}.qs-embed .about-image-placeholder {\n    font-size: 120px;\n    color: var(--color-white);\n    font-weight: 700;\n}.qs-embed .about-intro h1 {\n    font-size: var(--font-size-4xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .about-intro .subtitle {\n    font-size: var(--font-size-xl);\n    color: var(--color-primary);\n    font-weight: 500;\n    margin-bottom: var(--spacing-6);\n}.qs-embed .about-intro p {\n    font-size: var(--font-size-lg);\n    color: var(--color-gray-600);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .about-links {\n    display: flex;\n    gap: var(--spacing-4);\n    margin-top: var(--spacing-8);\n}.qs-embed .about-credentials {\n    padding: var(--spacing-16) 0;\n}.qs-embed .credentials-grid {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: var(--spacing-8);\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n}.qs-embed .credential-card {\n    text-align: center;\n    padding: var(--spacing-8);\n    background-color: var(--color-gray-50);\n    border-radius: var(--radius-lg);\n}.qs-embed .credential-icon {\n    width: 64px;\n    height: 64px;\n    margin: 0 auto var(--spacing-4);\n    background-color: var(--color-primary);\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    color: var(--color-white);\n}.qs-embed .credential-icon svg {\n    width: 32px;\n    height: 32px;\n}.qs-embed .credential-card h3 {\n    margin-bottom: var(--spacing-2);\n}.qs-embed .credential-card p {\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-600);\n}.qs-embed .education-page {\n    padding-top: 100px;\n}.qs-embed .education-hero {\n    padding: var(--spacing-16) 0;\n    background: linear-gradient(180deg, var(--color-gray-50) 0%, var(--color-white) 100%);\n    text-align: center;\n}.qs-embed .education-hero h1 {\n    font-size: var(--font-size-4xl);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .education-hero p {\n    font-size: var(--font-size-xl);\n    color: var(--color-gray-600);\n    max-width: 600px;\n    margin: 0 auto;\n}.qs-embed .education-modules {\n    padding: var(--spacing-16) 0;\n}.qs-embed .modules-grid {\n    display: grid;\n    grid-template-columns: repeat(2, 1fr);\n    gap: var(--spacing-8);\n    max-width: var(--max-width);\n    margin: 0 auto;\n    padding: 0 var(--spacing-6);\n}.qs-embed .module-card {\n    background-color: var(--color-white);\n    border-radius: var(--radius-lg);\n    box-shadow: var(--shadow-lg);\n    overflow: hidden;\n    transition: transform var(--transition);\n}.qs-embed .module-card:hover {\n    transform: translateY(-4px);\n}.qs-embed .module-header {\n    padding: var(--spacing-6);\n    background: linear-gradient(135deg, var(--color-gray-900) 0%, var(--color-gray-800) 100%);\n    color: var(--color-white);\n}.qs-embed .module-number {\n    font-size: var(--font-size-sm);\n    font-weight: 600;\n    opacity: 0.7;\n    margin-bottom: var(--spacing-2);\n}.qs-embed .module-header h3 {\n    color: var(--color-white);\n    font-size: var(--font-size-xl);\n}.qs-embed .module-body {\n    padding: var(--spacing-6);\n}.qs-embed .module-body p {\n    color: var(--color-gray-600);\n    margin-bottom: var(--spacing-4);\n}.qs-embed .module-topics {\n    margin-bottom: var(--spacing-4);\n}.qs-embed .module-topics li {\n    padding: var(--spacing-1) 0;\n    font-size: var(--font-size-sm);\n    color: var(--color-gray-500);\n}.qs-embed .module-topics li::before {\n    content: \"\u2192 \";\n    color: var(--color-primary);\n}.qs-embed .module-cta {\n    display: inline-flex;\n    align-items: center;\n    gap: var(--spacing-2);\n    color: var(--color-primary);\n    font-weight: 500;\n    font-size: var(--font-size-sm);\n}.qs-embed .module-cta svg {\n    width: 16px;\n    height: 16px;\n}\n\n\n@media (max-width: 1024px) {.qs-embed .service-cards {\n        grid-template-columns: 1fr;\n    }.qs-embed .about-hero-content {\n        grid-template-columns: 1fr;\n        text-align: center;\n    }.qs-embed .about-image {\n        margin: 0 auto;\n    }.qs-embed .about-links {\n        justify-content: center;\n    }.qs-embed .credentials-grid {\n        grid-template-columns: 1fr;\n    }.qs-embed .modules-grid {\n        grid-template-columns: 1fr;\n    }\n}\n\n@media (max-width: 768px) {.qs-embed .score-circle {\n        width: 160px;\n        height: 160px;\n    }.qs-embed .score-number {\n        font-size: var(--font-size-4xl);\n    }.qs-embed .roadmap-phases {\n        flex-direction: column;\n        gap: var(--spacing-6);\n    }.qs-embed .roadmap-phases::before {\n        display: none;\n    }.qs-embed .about-image {\n        width: 200px;\n        height: 200px;\n    }.qs-embed .about-image-placeholder {\n        font-size: 80px;\n    }\n}\n\n\n\n\/* === Embed override: remove old fixed-nav clearance === *\/\n.qs-embed .assessment-page {\n  padding-top: 2rem !important;\n  min-height: auto !important;\n}\n\/* Keep qs-main hidden utility global so JS toggle works site-wide *\/\n.hidden { display: none !important; }\n\n\/* === Sector callout styles (generated inline by JS) === *\/\n.qs-embed .sector-context-callout {\n  background: rgba(37,99,235,0.06);\n  border: 1px solid rgba(37,99,235,0.18);\n  border-left: 4px solid var(--color-primary, #2563eb);\n  border-radius: 10px;\n  padding: 1rem 1.25rem;\n  margin-bottom: 2rem;\n}\n.qs-embed .sector-tag {\n  font-size: 0.72rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  color: var(--color-primary, #2563eb);\n  margin-bottom: 0.4rem;\n}\n.qs-embed .sector-context-callout p {\n  font-size: 0.85rem;\n  color: var(--color-gray-700, #334155);\n  line-height: 1.65;\n  margin: 0;\n}\n\n\/* === Weakest dimension callout === *\/\n.qs-embed .weakest-dimension-callout {\n  background: linear-gradient(135deg, var(--color-gray-900, #0f172a) 0%, var(--color-gray-800, #1e293b) 100%);\n  border-radius: 10px;\n  padding: 1.25rem 1.5rem;\n  margin-bottom: 1.5rem;\n  color: #fff;\n}\n.qs-embed .weakest-label {\n  font-size: 0.7rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.1em;\n  color: var(--color-accent, #06b6d4);\n  margin-bottom: 0.3rem;\n}\n.qs-embed .weakest-name {\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: #fff;\n  margin-bottom: 0.4rem;\n}\n.qs-embed .weakest-dimension-callout p {\n  font-size: 0.85rem;\n  color: rgba(255,255,255,0.75);\n  margin: 0;\n  line-height: 1.6;\n}\n.qs-embed .weakest-secondary {\n  font-size: 0.82rem;\n  color: rgba(255,255,255,0.55);\n  margin-top: 0.5rem !important;\n}\n\n\/* === Service recommendation block === *\/\n.qs-embed .service-recommendation {\n  background: var(--color-gray-50, #f8fafc);\n  border: 1px solid var(--color-gray-200, #e2e8f0);\n  border-left: 4px solid var(--color-primary, #2563eb);\n  border-radius: 10px;\n  padding: 1.5rem;\n  margin-bottom: 2rem;\n}\n.qs-embed .service-rec-header {\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n  font-size: 0.75rem;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.07em;\n  color: var(--color-primary, #2563eb);\n  margin-bottom: 0.6rem;\n}\n.qs-embed .service-recommendation h3 {\n  font-size: 1.1rem;\n  font-weight: 700;\n  color: var(--color-gray-900, #0f172a);\n  margin-bottom: 0.5rem;\n}\n.qs-embed .service-recommendation p {\n  font-size: 0.87rem;\n  color: var(--color-gray-600, #475569);\n  line-height: 1.65;\n  margin-bottom: 1rem;\n}\n\n<\/style>\n\n<div class=\"qs-embed\">\n<section class=\"hero\" style=\"padding:3rem 0 2.5rem;\">\n  <div class=\"hero-inner\">\n    <div style=\"display:grid;grid-template-columns:1fr auto;gap:2rem;align-items:center;\">\n      <div>\n        <div style=\"display:flex;align-items:center;gap:0.5rem;margin-bottom:0.6rem;\">\n          <div class=\"hero-badge\" style=\"margin-bottom:0;\">Free Tool<\/div>\n          <div style=\"background:#ef4444;color:#fff;font-size:0.68rem;font-weight:700;padding:2px 8px;border-radius:4px;letter-spacing:0.06em;\">\u03b2 BETA v1<\/div>\n        <\/div>\n\n\n<h1 class=\"wp-block-heading\">Quantum-Safe Readiness Assessment<\/h1>\n\n\n<p class=\"hero-sub\">In ~10 minutes, benchmark your organisation&#8217;s readiness across six dimensions \u2014 cryptographic inventory, data lifetime, governance, infrastructure, crypto agility, and PQC progress. Free, no account required.<\/p>\n\n\n      <\/div>\n      <div style=\"text-align:right;flex-shrink:0;\">\n        <div style=\"display:flex;flex-direction:column;gap:0.5rem;align-items:flex-end;\">\n          <div style=\"display:flex;align-items:center;gap:0.5rem;font-size:0.82rem;color:var(--gray-600);\"><span style=\"color:var(--accent);\">\u2713<\/span> No account needed<\/div>\n          <div style=\"display:flex;align-items:center;gap:0.5rem;font-size:0.82rem;color:var(--gray-600);\"><span style=\"color:var(--accent);\">\u2713<\/span> ~10 minutes<\/div>\n          <div style=\"display:flex;align-items:center;gap:0.5rem;font-size:0.82rem;color:var(--gray-600);\"><span style=\"color:var(--accent);\">\u2713<\/span> PDF report download<\/div>\n          <div style=\"display:flex;align-items:center;gap:0.5rem;font-size:0.82rem;color:var(--gray-600);\"><span style=\"color:var(--accent);\">\u2713<\/span> Sector-specific context<\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n<div style=\"background:rgba(37,99,235,0.06);border-top:1px solid rgba(37,99,235,0.14);border-bottom:1px solid rgba(37,99,235,0.14);padding:0.6rem 0;\">\n  <div style=\"max-width:760px;margin:0 auto;padding:0 1.5rem;display:flex;align-items:flex-start;gap:0.75rem;\">\n    <span style=\"background:#2563eb;color:#fff;font-size:0.67rem;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:0.06em;flex-shrink:0;margin-top:1px;\">\u03b2 BETA<\/span>\n    <p style=\"font-size:0.8rem;line-height:1.6;color:var(--gray-600);margin:0;\">Results are indicative \u2014 based on your self-reported responses, not a technical audit. This tool does not constitute professional security advice. \u00a9 2026 Karel De Kneef. Feedback welcome \u2014 <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=103\" style=\"color:var(--accent);font-weight:600;\">meet the team<\/a>.<\/p>\n  <\/div>\n<\/div>\n<main class=\"assessment-page\">\n  <div class=\"assessment-container\">\n    <div class=\"assessment-header\" id=\"assessment-header\">\n      <h1>Quantum Readiness Assessment<\/h1>\n      <p>Answer 12 questions to discover your organisation&#8217;s quantum-safe readiness score and get personalised recommendations.<\/p>\n    <\/div>\n    <div class=\"progress-container\" id=\"progress-container\">\n      <div class=\"progress-bar\"><div class=\"progress-fill\" id=\"progress-fill\" style=\"width:0%\"><\/div><\/div>\n      <div class=\"progress-text\"><span id=\"progress-step\">Select your sector to begin<\/span><span id=\"progress-time\">~8 minutes<\/span><\/div>\n    <\/div>\n    <div id=\"questions-container\"><\/div>\n    <div class=\"assessment-nav\" id=\"assessment-nav\">\n      <button class=\"nav-btn nav-btn-prev\" id=\"prev-btn\" disabled>\u2190 Previous<\/button>\n      <button class=\"nav-btn nav-btn-next\" id=\"next-btn\">Next \u2192<\/button>\n    <\/div>\n    <div id=\"results-container\" class=\"hidden\"><\/div>\n  <\/div>\n<\/main>\n\n\n\n<div class=\"wp-block-group section-sm\">\n\n<div class=\"wp-block-group container\" style=\"max-width:760px;\">\n\n<div class=\"credit-strip\">\n  <img decoding=\"async\" src=\"https:\/\/www.resiliaconnect.com\/wp-content\/uploads\/2026\/06\/karel-dekneef.jpg\" alt=\"Karel De Kneef\">\n  <div class=\"credit-strip-text\">\n    <strong>Karel De Kneef<\/strong> built this assessment. He spent almost three decades at SWIFT, ending as its Chief Security Officer, protecting critical infrastructure used by 11,000+ financial institutions, before founding his own advisory company, <a href=\"https:\/\/karleefcyber.dekneef.be\" target=\"_blank\" style=\"color:var(--accent);font-weight:600;\">Karleef Cyber<\/a>, focused on strategic security advice. Almost 10 years ago he presented on post-quantum cryptography and helped raise awareness of the topic, with a prime focus on crypto agility.\n  <\/div>\n<\/div>\n\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-group section\" style=\"background-color:#f9fafb\">\n\n<div class=\"wp-block-group container\">\n\n<div class=\"wp-block-group section-head center\">\n\n<p class=\"label\">Next Steps<\/p>\n\n\n<h2 class=\"wp-block-heading\">Ready to go deeper?<\/h2>\n\n\n<p>The assessment gives you your readiness score. The Framework paper tells you exactly what to do about it.<\/p>\n\n<\/div>\n\n\n<div class=\"grid-3\" style=\"max-width:900px;margin:0 auto;\">\n  <div class=\"card\" style=\"text-align:center;\">\n    <div style=\"font-size:1.5rem;margin-bottom:0.75rem;\">\ud83d\udcd8<\/div>\n    <h3 style=\"font-size:0.95rem;font-weight:700;color:var(--ink);margin-bottom:0.5rem;\">See the Paper<\/h3>\n    <p style=\"font-size:0.83rem;color:var(--gray-600);line-height:1.6;margin-bottom:1rem;\">The conceptual grounding \u2014 why quantum computing threatens encryption. Written by practitioners, without vendor bias. From \u00a31,000.<\/p>\n    <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=111\" class=\"btn btn-primary btn-sm\">See the Paper \u2192<\/a>\n  <\/div>\n  <div class=\"card\" style=\"text-align:center;\">\n    <div style=\"font-size:1.5rem;margin-bottom:0.75rem;\">\ud83d\udcca<\/div>\n    <h3 style=\"font-size:0.95rem;font-weight:700;color:var(--ink);margin-bottom:0.5rem;\">Visit Community<\/h3>\n    <p style=\"font-size:0.83rem;color:var(--gray-600);line-height:1.6;margin-bottom:1rem;\">Free findings from the Quantum Security Connection tabletop series and the regulatory round-up.<\/p>\n    <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=113\" class=\"btn btn-outline btn-sm\">Visit Community \u2192<\/a>\n  <\/div>\n  <div class=\"card\" style=\"text-align:center;\">\n    <div style=\"font-size:1.5rem;margin-bottom:0.75rem;\">\ud83c\udfaf<\/div>\n    <h3 style=\"font-size:0.95rem;font-weight:700;color:var(--ink);margin-bottom:0.5rem;\">Book a Board Briefing<\/h3>\n    <p style=\"font-size:0.83rem;color:var(--gray-600);line-height:1.6;margin-bottom:1rem;\">A bespoke session delivered by a member of the team for your board. From \u00a37,000.<\/p>\n    <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=111#enquiry\" class=\"btn btn-outline btn-sm\">Enquire \u2192<\/a>\n  <\/div>\n<\/div>\n\n<\/div>\n\n<\/div>\n<\/div>\n\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<script>\n\/* \u2500\u2500 pdf-generator.js (patched) \u2500\u2500 *\/\n\/* Wrapped in IIFE so const declarations don't conflict if WP also enqueues this file *\/\nif (!window.PDFGenerator) (function() {\n\/**\n * Quantum-Safe Action Brief PDF Generator\n * Generates personalized PDF reports for assessment completions\n * Uses jsPDF directly for more reliable PDF generation\n *\/\n\n\/\/ Load jsPDF library\n\/\/ jsPDF loaded via CDN script tag above\n\nconst PDFGenerator = {\n    \/\/ Get next steps based on maturity level\n    getNextSteps: function(maturity) {\n        const steps = {\n            'Not started': [\n                { step: 'Schedule a quantum risk awareness briefing for your security leadership', timeline: 'Within 30 days' },\n                { step: 'Identify an owner for quantum-safe strategy exploration', timeline: 'Within 30 days' },\n                { step: 'Begin documenting your cryptographic inventory starting with critical systems', timeline: 'Within 90 days' },\n                { step: 'Review NIST PQC standards (FIPS 203, 204, 205) at a high level', timeline: 'Within 60 days' },\n                { step: 'Assess data sensitivity periods and digital signature assets for HNDL and HNFL exposure', timeline: 'Within 90 days' }\n            ],\n            'Exploring': [\n                { step: 'Complete a cryptographic inventory of your top 20 critical systems', timeline: 'Within 90 days' },\n                { step: 'Classify data by sensitivity period and HNDL risk level', timeline: 'Within 60 days' },\n                { step: 'Assign formal ownership of quantum-safe strategy to a senior leader', timeline: 'Within 30 days' },\n                { step: 'Engage vendors to understand their PQC roadmaps', timeline: 'Within 90 days' },\n                { step: 'Draft an initial PQC migration roadmap for leadership review', timeline: 'Within 120 days' }\n            ],\n            'Planning': [\n                { step: 'Get leadership approval on your PQC migration roadmap', timeline: 'Within 60 days' },\n                { step: 'Begin hybrid PQC pilot in a non-production environment', timeline: 'Within 90 days' },\n                { step: 'Assess HSM and PKI upgrade requirements and timelines', timeline: 'Within 60 days' },\n                { step: 'Include PQC requirements in vendor security questionnaires', timeline: 'Within 30 days' },\n                { step: 'Develop a crypto agility improvement plan for key applications', timeline: 'Within 120 days' }\n            ],\n            'Executing': [\n                { step: 'Expand hybrid PQC deployment to production systems', timeline: 'Within 180 days' },\n                { step: 'Complete HSM and PKI upgrades for PQC support', timeline: 'Within 12 months' },\n                { step: 'Establish regular board-level reporting on migration progress', timeline: 'Within 60 days' },\n                { step: 'Conduct independent review of your PQC migration plan', timeline: 'Within 90 days' },\n                { step: 'Develop incident response procedures for quantum-related scenarios', timeline: 'Within 120 days' }\n            ],\n            'Leading': [\n                { step: 'Require FIPS 203\/204\/205 compliance in all new vendor contracts and procurement reviews', timeline: 'Immediate' },\n                { step: 'Run quarterly crypto agility reviews \u2014 including hybrid mode performance benchmarking', timeline: 'Quarterly' },\n                { step: 'Monitor next-generation standards developments (post-FIPS evolution, CNSA 3.0) and update your roadmap', timeline: 'Ongoing' },\n                { step: 'Contribute to sector working groups or information-sharing forums on quantum readiness', timeline: 'Ongoing' },\n                { step: 'Plan complete phase-out of classical asymmetric algorithms well ahead of the 2035 deadline', timeline: 'Within 24 months' }\n            ]\n        };\n        return steps[maturity] || steps['Not started'];\n    },\n\n    \/\/ Convert hex color to RGB\n    hexToRgb: function(hex) {\n        const result = \/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$\/i.exec(hex);\n        return result ? {\n            r: parseInt(result[1], 16),\n            g: parseInt(result[2], 16),\n            b: parseInt(result[3], 16)\n        } : { r: 0, g: 0, b: 0 };\n    },\n\n    \/\/ Generate and download PDF using jsPDF\n    generatePDF: function(data) {\n        return new Promise((resolve, reject) => {\n            try {\n                \/\/ Wait for jsPDF to load\n                const checkAndGenerate = (retries = 20) => {\n                    if (window.jspdf && window.jspdf.jsPDF) {\n                        this.createPDF(data);\n                        resolve(true);\n                    } else if (retries > 0) {\n                        setTimeout(() => checkAndGenerate(retries - 1), 100);\n                    } else {\n                        reject(new Error('jsPDF library failed to load'));\n                    }\n                };\n                checkAndGenerate();\n            } catch (err) {\n                console.error('PDF generation error:', err);\n                reject(err);\n            }\n        });\n    },\n\n    createPDF: function(data) {\n        const { jsPDF } = window.jspdf;\n        const doc = new jsPDF({\n            orientation: 'portrait',\n            unit: 'mm',\n            format: 'a4'\n        });\n\n        const pageWidth = doc.internal.pageSize.getWidth();\n        const pageHeight = doc.internal.pageSize.getHeight();\n        const margin = 20;\n        const contentWidth = pageWidth - (margin * 2);\n        let y = margin;\n\n        const today = new Date().toLocaleDateString('en-US', {\n            year: 'numeric',\n            month: 'long',\n            day: 'numeric'\n        });\n\n        \/\/ Colors\n        const primaryBlue = this.hexToRgb('#2563eb');\n        const darkGray = this.hexToRgb('#1e293b');\n        const mediumGray = this.hexToRgb('#64748b');\n        const lightGray = this.hexToRgb('#f1f5f9');\n        const maturityColor = this.hexToRgb(data.maturityColor);\n\n        \/\/ === HEADER ===\n        \/\/ Logo box\n        doc.setFillColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n        doc.roundedRect(margin, y, 12, 12, 2, 2, 'F');\n        doc.setTextColor(255, 255, 255);\n        doc.setFontSize(14);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Q', margin + 6, y + 8, { align: 'center' });\n\n        \/\/ Logo text\n        doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.setFontSize(16);\n        doc.text('Quantum-Safe', margin + 16, y + 8);\n\n        \/\/ Beta badge\n        doc.setFillColor(239, 68, 68);\n        doc.roundedRect(margin + 64, y + 1, 14, 6, 1, 1, 'F');\n        doc.setTextColor(255, 255, 255);\n        doc.setFontSize(7);\n        doc.setFont('helvetica', 'bold');\n        doc.text('BETA', margin + 71, y + 5.5, { align: 'center' });\n\n        \/\/ Company and date (right side)\n        doc.setFontSize(10);\n        doc.setFont('helvetica', 'normal');\n        doc.setTextColor(mediumGray.r, mediumGray.g, mediumGray.b);\n        doc.text(`Prepared for: ${data.company}`, pageWidth - margin, y + 4, { align: 'right' });\n        doc.text(today, pageWidth - margin, y + 9, { align: 'right' });\n\n        y += 18;\n\n        \/\/ Blue line under header\n        doc.setDrawColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n        doc.setLineWidth(1);\n        doc.line(margin, y, pageWidth - margin, y);\n\n        y += 12;\n\n        \/\/ === TITLE ===\n        doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.setFontSize(22);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Quantum-Safe Action Brief', margin, y);\n        y += 8;\n\n        doc.setFontSize(11);\n        doc.setFont('helvetica', 'normal');\n        doc.setTextColor(mediumGray.r, mediumGray.g, mediumGray.b);\n        doc.text(`Personalized assessment results and recommendations for ${data.company}`, margin, y);\n        y += 14;\n\n        \/\/ === SCORE SECTION (Dark box) ===\n        const scoreBoxHeight = 55;\n        doc.setFillColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.roundedRect(margin, y, contentWidth, scoreBoxHeight, 3, 3, 'F');\n\n        \/\/ Score circle\n        const circleCenterX = pageWidth \/ 2;\n        const circleCenterY = y + 22;\n        const circleRadius = 16;\n\n        \/\/ Circle border\n        doc.setDrawColor(maturityColor.r, maturityColor.g, maturityColor.b);\n        doc.setLineWidth(1.5);\n        doc.circle(circleCenterX, circleCenterY, circleRadius, 'S');\n\n        \/\/ Score number\n        doc.setTextColor(255, 255, 255);\n        doc.setFontSize(28);\n        doc.setFont('helvetica', 'bold');\n        doc.text(String(data.score), circleCenterX, circleCenterY + 4, { align: 'center' });\n\n        \/\/ Maturity label\n        doc.setTextColor(maturityColor.r, maturityColor.g, maturityColor.b);\n        doc.setFontSize(16);\n        doc.text(data.maturity, circleCenterX, y + 44, { align: 'center' });\n\n        \/\/ Description (wrap text)\n        doc.setTextColor(200, 200, 200);\n        doc.setFontSize(9);\n        doc.setFont('helvetica', 'normal');\n        const descLines = doc.splitTextToSize(data.maturityDescription, contentWidth - 30);\n        doc.text(descLines, circleCenterX, y + 50, { align: 'center', maxWidth: contentWidth - 30 });\n\n        y += scoreBoxHeight + 12;\n\n        \/\/ === DIMENSION SCORES ===\n        doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.setFontSize(14);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Scores by Dimension', margin, y);\n        y += 2;\n\n        \/\/ Underline\n        doc.setDrawColor(220, 220, 220);\n        doc.setLineWidth(0.5);\n        doc.line(margin, y + 2, pageWidth - margin, y + 2);\n        y += 10;\n\n        \/\/ Dimension bars\n        const dimensions = Object.keys(data.dimensions);\n        dimensions.forEach((key) => {\n            const dim = data.dimensions[key];\n            const barWidth = contentWidth - 70;\n            const barHeight = 6;\n            const fillWidth = Math.max(3, (dim.score \/ 100) * barWidth);\n\n            \/\/ Label\n            doc.setFontSize(10);\n            doc.setFont('helvetica', 'normal');\n            doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n            doc.text(dim.name, margin, y + 4);\n\n            \/\/ Background bar\n            doc.setFillColor(lightGray.r, lightGray.g, lightGray.b);\n            doc.roundedRect(margin + 50, y, barWidth, barHeight, 1, 1, 'F');\n\n            \/\/ Fill bar\n            doc.setFillColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n            doc.roundedRect(margin + 50, y, fillWidth, barHeight, 1, 1, 'F');\n\n            \/\/ Score value\n            doc.setTextColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n            doc.setFont('helvetica', 'bold');\n            doc.text(String(dim.score), pageWidth - margin, y + 4, { align: 'right' });\n\n            y += 11;\n        });\n\n        y += 6;\n\n        \/\/ === NEXT STEPS ===\n        doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.setFontSize(14);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Your Recommended Next Steps', margin, y);\n        y += 2;\n\n        doc.setDrawColor(220, 220, 220);\n        doc.setLineWidth(0.5);\n        doc.line(margin, y + 2, pageWidth - margin, y + 2);\n        y += 10;\n\n        const nextSteps = this.getNextSteps(data.maturity);\n        nextSteps.forEach((step, i) => {\n            \/\/ Check if we need a new page\n            if (y > pageHeight - 40) {\n                doc.addPage();\n                y = margin;\n            }\n\n            \/\/ Step box background\n            doc.setFillColor(248, 250, 252);\n            doc.roundedRect(margin, y, contentWidth, 18, 2, 2, 'F');\n\n            \/\/ Blue left border\n            doc.setFillColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n            doc.rect(margin, y, 1.5, 18, 'F');\n\n            \/\/ Step number circle\n            doc.setFillColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n            doc.circle(margin + 10, y + 9, 5, 'F');\n            doc.setTextColor(255, 255, 255);\n            doc.setFontSize(10);\n            doc.setFont('helvetica', 'bold');\n            doc.text(String(i + 1), margin + 10, y + 11, { align: 'center' });\n\n            \/\/ Step text\n            doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n            doc.setFontSize(9);\n            doc.setFont('helvetica', 'normal');\n            const stepLines = doc.splitTextToSize(step.step, contentWidth - 35);\n            doc.text(stepLines, margin + 20, y + 7);\n\n            \/\/ Timeline badge\n            doc.setFillColor(226, 232, 240);\n            const timelineWidth = doc.getTextWidth(step.timeline) + 6;\n            doc.roundedRect(margin + 20, y + 11, timelineWidth, 5, 1, 1, 'F');\n            doc.setTextColor(mediumGray.r, mediumGray.g, mediumGray.b);\n            doc.setFontSize(7);\n            doc.text(step.timeline, margin + 23, y + 14.5);\n\n            y += 22;\n        });\n\n        \/\/ === PAGE 2: ROADMAP ===\n        doc.addPage();\n        y = margin;\n\n        doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n        doc.setFontSize(14);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Migration Roadmap', margin, y);\n        y += 2;\n\n        doc.setDrawColor(220, 220, 220);\n        doc.setLineWidth(0.5);\n        doc.line(margin, y + 2, pageWidth - margin, y + 2);\n        y += 12;\n\n        \/\/ Roadmap box\n        doc.setFillColor(248, 250, 252);\n        doc.roundedRect(margin, y, contentWidth, 70, 3, 3, 'F');\n\n        \/\/ Three phases\n        const phases = [\n            { num: '1', title: 'Discovery & Planning', years: '2025-2026', color: '#2563eb', items: ['Cryptographic inventory', 'Data classification', 'Vendor assessment', 'Initial roadmap'] },\n            { num: '2', title: 'Pilot & Validate', years: '2027-2030', color: '#06b6d4', items: ['Hybrid PQC pilots', 'Team training', 'PKI updates', 'Performance testing'] },\n            { num: '3', title: 'Production Rollout', years: '2030-2035', color: '#10b981', items: ['Full PQC deployment', 'Phase out classical', 'Compliance achieved', 'Continuous monitoring'] }\n        ];\n\n        const phaseWidth = contentWidth \/ 3;\n        phases.forEach((phase, i) => {\n            const phaseX = margin + (i * phaseWidth) + (phaseWidth \/ 2);\n            const phaseColor = this.hexToRgb(phase.color);\n\n            \/\/ Phase circle\n            doc.setFillColor(phaseColor.r, phaseColor.g, phaseColor.b);\n            doc.circle(phaseX, y + 15, 8, 'F');\n            doc.setTextColor(255, 255, 255);\n            doc.setFontSize(12);\n            doc.setFont('helvetica', 'bold');\n            doc.text(phase.num, phaseX, y + 18, { align: 'center' });\n\n            \/\/ Phase title\n            doc.setTextColor(darkGray.r, darkGray.g, darkGray.b);\n            doc.setFontSize(10);\n            doc.setFont('helvetica', 'bold');\n            doc.text(phase.title, phaseX, y + 30, { align: 'center' });\n\n            \/\/ Years\n            doc.setTextColor(mediumGray.r, mediumGray.g, mediumGray.b);\n            doc.setFontSize(8);\n            doc.setFont('helvetica', 'normal');\n            doc.text(phase.years, phaseX, y + 36, { align: 'center' });\n\n            \/\/ Items\n            doc.setFontSize(8);\n            doc.setTextColor(100, 100, 100);\n            phase.items.forEach((item, j) => {\n                doc.text('\u2022 ' + item, phaseX - 20, y + 44 + (j * 5));\n            });\n        });\n\n        y += 78;\n\n        \/\/ Regulatory box\n        doc.setFillColor(254, 243, 199);\n        doc.roundedRect(margin, y, contentWidth, 22, 2, 2, 'F');\n        doc.setFillColor(245, 158, 11);\n        doc.rect(margin, y, 1.5, 22, 'F');\n\n        doc.setTextColor(146, 64, 14);\n        doc.setFontSize(10);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Key Regulatory Milestones', margin + 8, y + 8);\n\n        doc.setFontSize(9);\n        doc.setFont('helvetica', 'normal');\n        doc.text('2028: UK discovery phase must begin  |  2030: US RSA-2048\/ECC-256 deprecated  |  2035: Complete phase-out', margin + 8, y + 16);\n\n        y += 32;\n\n        \/\/ Contact box\n        doc.setFillColor(primaryBlue.r, primaryBlue.g, primaryBlue.b);\n        doc.roundedRect(margin, y, contentWidth, 20, 3, 3, 'F');\n\n        doc.setTextColor(255, 255, 255);\n        doc.setFontSize(10);\n        doc.setFont('helvetica', 'bold');\n        doc.text('Karel De Kneef | Strategic Cybersecurity Advisor', pageWidth \/ 2, y + 8, { align: 'center' });\n        doc.setFont('helvetica', 'normal');\n        doc.text('linkedin.com\/in\/kareldekneef', pageWidth \/ 2, y + 15, { align: 'center' });\n\n        y += 30;\n\n        \/\/ Footer\n        doc.setTextColor(mediumGray.r, mediumGray.g, mediumGray.b);\n        doc.setFontSize(7.5);\n        doc.setFont('helvetica', 'normal');\n        doc.text('Beta v1 \u2014 Results are indicative, based on self-reported responses. Not a substitute for professional security advice.', pageWidth \/ 2, y, { align: 'center' });\n        doc.setFontSize(7.5);\n        doc.text('\u00a9 2026 Karel De Kneef. All rights reserved. | Quantum-Safe Readiness Assessment', pageWidth \/ 2, y + 5, { align: 'center' });\n        doc.setFont('helvetica', 'italic');\n        doc.text('\"Doing nothing is a decision too.\"', pageWidth \/ 2, y + 11, { align: 'center' });\n\n        \/\/ Save the PDF\n        const filename = `Quantum-Safe-Action-Brief-${data.company.replace(\/[^a-zA-Z0-9]\/g, '-')}.pdf`;\n        doc.save(filename);\n    },\n\n    \/\/ Save report data to server for record keeping\n    saveReportData: function(data) {\n        \/\/ Lead already captured via \/wp-json\/quantum\/v1\/lead in assessment.js\n        return Promise.resolve();\n    }\n};\n\n\/\/ Export for use\nwindow.PDFGenerator = PDFGenerator;\n\n})();\n<\/script>\n\n<script>\n\/* \u2500\u2500 assessment.js (patched) \u2500\u2500 *\/\n\/* Wrapped in IIFE so const declarations don't conflict if WP also enqueues this file *\/\nif (!window._qsLoaded) (function() {\nwindow._qsLoaded = true;\n\/* ===================================\n   Quantum-Safe Readiness Assessment\n   Assessment Logic & Questions\n   =================================== *\/\n\n\/\/ Assessment Questions\nconst questions = [\n    \/\/ Dimension: Cryptographic Inventory\n    {\n        id: 1,\n        dimension: 'inventory',\n        dimensionName: 'Cryptographic Inventory',\n        question: 'How well do you know where RSA, ECC, and other public-key cryptography is used in your organisation?',\n        helpText: 'This includes certificates, key management, digital signatures, and encrypted communications.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'We have no visibility', description: 'We don\\'t know where cryptography is used in our systems' },\n            { value: 25, label: 'Ad-hoc awareness', description: 'Some teams know their own systems, but no central view' },\n            { value: 50, label: 'Partial inventory', description: 'We\\'ve documented major systems but gaps remain' },\n            { value: 75, label: 'Comprehensive inventory', description: 'We have a complete inventory of cryptographic assets' },\n            { value: 100, label: 'Automated discovery', description: 'We use tools to continuously discover and track crypto usage' }\n        ]\n    },\n    {\n        id: 2,\n        dimension: 'inventory',\n        dimensionName: 'Cryptographic Inventory',\n        question: 'Have your key vendors and cloud providers shared post-quantum migration plans with you?',\n        helpText: 'Vendors with legacy cryptography in their products are a migration dependency. NCSC and CISA both flag supply chain as a major gap in sector-wide readiness.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'Not addressed', description: 'We haven\\'t raised PQC migration with our vendors' },\n            { value: 33, label: 'Initial contact', description: 'We\\'ve asked key vendors; most haven\\'t shared migration plans yet' },\n            { value: 66, label: 'In progress', description: 'Key vendors have shared PQC roadmaps and we\\'re tracking them' },\n            { value: 100, label: 'Embedded', description: 'PQC requirements are in contracts; we actively audit vendor migration progress' }\n        ]\n    },\n\n    \/\/ Dimension: Data Lifetime & Sensitivity\n    {\n        id: 3,\n        dimension: 'data',\n        dimensionName: 'Data Lifetime & Sensitivity',\n        question: 'What is the longest sensitivity period for data your organization handles?',\n        helpText: 'Consider regulatory requirements, competitive value, and privacy obligations.',\n        type: 'choice',\n        options: [\n            { value: 100, label: 'Less than 5 years', description: 'Our data loses sensitivity relatively quickly' },\n            { value: 75, label: '5-10 years', description: 'Moderate long-term sensitivity' },\n            { value: 50, label: '10-15 years', description: 'Significant long-term sensitivity requirements' },\n            { value: 25, label: '15-25 years', description: 'Very long retention and sensitivity periods' },\n            { value: 0, label: '25+ years', description: 'Indefinite sensitivity (healthcare, government, R&D)' }\n        ]\n    },\n    {\n        id: 4,\n        dimension: 'data',\n        dimensionName: 'Data Lifetime & Sensitivity',\n        question: 'Have you classified your long-lived data and digital assets for quantum-era threat exposure?',\n        helpText: 'HNDL (harvest now, decrypt later) affects encrypted data with long sensitivity periods. HNFL (harvest now, forge later) affects digital signatures, code signing, and authentication credentials \u2014 both threats are active now.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'No classification', description: 'We haven\\'t assessed quantum-specific risk exposure' },\n            { value: 33, label: 'Initial awareness', description: 'We\\'re aware of the risk but haven\\'t classified data' },\n            { value: 66, label: 'Partial classification', description: 'We\\'ve identified high-risk data categories' },\n            { value: 100, label: 'Complete classification', description: 'All data is classified with quantum risk in mind' }\n        ]\n    },\n\n    \/\/ Dimension: Governance & Ownership\n    {\n        id: 5,\n        dimension: 'governance',\n        dimensionName: 'Governance & Ownership',\n        question: 'Who owns the quantum-safe strategy in your organisation?',\n        helpText: 'Clear ownership accelerates decision-making and resource allocation.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'No owner', description: 'Nobody is responsible for quantum-safe strategy' },\n            { value: 25, label: 'IT\/Security interest', description: 'Technical teams are aware but no formal ownership' },\n            { value: 50, label: 'CISO\/CTO ownership', description: 'A senior technical leader owns the initiative' },\n            { value: 75, label: 'Executive sponsorship', description: 'C-suite sponsor with dedicated team' },\n            { value: 100, label: 'Board oversight', description: 'Board-level visibility and regular reporting' }\n        ]\n    },\n    {\n        id: 6,\n        dimension: 'governance',\n        dimensionName: 'Governance & Ownership',\n        question: 'Does your organization have a documented post-quantum cryptography roadmap?',\n        helpText: 'A roadmap helps coordinate migration efforts across teams and systems.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'No roadmap', description: 'We haven\\'t started planning' },\n            { value: 25, label: 'Informal discussions', description: 'Some planning discussions but nothing documented' },\n            { value: 50, label: 'Draft roadmap', description: 'Initial roadmap exists but not approved' },\n            { value: 75, label: 'Approved roadmap', description: 'Formal roadmap approved by leadership' },\n            { value: 100, label: 'Executing roadmap', description: 'We\\'re actively executing our PQC migration plan' }\n        ]\n    },\n\n    \/\/ Dimension: Vendor \/ HSM \/ PKI\n    {\n        id: 7,\n        dimension: 'infrastructure',\n        dimensionName: 'Infrastructure Readiness',\n        question: 'Are your Hardware Security Modules (HSMs) capable of supporting post-quantum algorithms?',\n        helpText: 'HSMs are critical for key management and may need upgrades for PQC support.',\n        type: 'choice',\n        options: [\n            { value: 10, label: 'Unknown', description: 'We don\\'t know our HSM capabilities \u2014 assessment needed' },\n            { value: 15, label: 'Not capable', description: 'Our HSMs don\\'t support PQC algorithms \u2014 upgrade required' },\n            { value: 50, label: 'Upgrade planned', description: 'We have a plan to upgrade to PQC-capable HSMs' },\n            { value: 75, label: 'Partially capable', description: 'Some HSMs support PQC, others need upgrading' },\n            { value: 100, label: 'Fully capable', description: 'All HSMs support NIST-approved PQC algorithms' }\n        ]\n    },\n    {\n        id: 8,\n        dimension: 'infrastructure',\n        dimensionName: 'Infrastructure Readiness',\n        question: 'Can your PKI (Public Key Infrastructure) support hybrid or post-quantum certificates?',\n        helpText: 'PKI changes are often the longest lead-time item in PQC migration.',\n        type: 'choice',\n        options: [\n            { value: 10, label: 'Unknown', description: 'We haven\\'t assessed our PKI\\'s capabilities \u2014 but can find out' },\n            { value: 15, label: 'Not ready', description: 'Our PKI cannot support PQC certificates \u2014 changes required' },\n            { value: 50, label: 'Assessment complete', description: 'We know what needs to change' },\n            { value: 75, label: 'Upgrade in progress', description: 'We\\'re actively upgrading our PKI' },\n            { value: 100, label: 'PQC ready', description: 'Our PKI can issue hybrid or PQC certificates' }\n        ]\n    },\n\n    \/\/ Dimension: Crypto Agility\n    {\n        id: 9,\n        dimension: 'agility',\n        dimensionName: 'Crypto Agility',\n        question: 'How easily can you change cryptographic algorithms in your applications without major code changes?',\n        helpText: 'Crypto agility enables faster migration and response to algorithm vulnerabilities.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'Hardcoded everywhere', description: 'Algorithms are embedded throughout code' },\n            { value: 25, label: 'Mostly hardcoded', description: 'Some abstraction but major changes needed' },\n            { value: 50, label: 'Partial abstraction', description: 'Critical systems use configurable crypto' },\n            { value: 75, label: 'Good abstraction', description: 'Most systems use crypto libraries\/frameworks' },\n            { value: 100, label: 'Fully agile', description: 'Algorithms can be swapped via configuration' }\n        ]\n    },\n    {\n        id: 10,\n        dimension: 'agility',\n        dimensionName: 'Crypto Agility',\n        question: 'Do you use standardized cryptographic libraries that are being updated for PQC?',\n        helpText: 'Libraries like OpenSSL, BoringSSL, and language-specific crypto libraries are adding PQC support.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'Custom\/Legacy', description: 'We use custom or outdated cryptographic implementations' },\n            { value: 33, label: 'Mixed', description: 'Some standard libraries, some legacy code' },\n            { value: 66, label: 'Mostly standardized', description: 'We primarily use maintained libraries' },\n            { value: 100, label: 'Fully standardized', description: 'All crypto uses current, maintained libraries' }\n        ]\n    },\n\n    \/\/ Dimension: PQC Pilots & Experiments\n    {\n        id: 11,\n        dimension: 'progress',\n        dimensionName: 'PQC Progress',\n        question: 'Have you run any post-quantum cryptography pilots or experiments?',\n        helpText: 'Hands-on experience helps teams understand performance impacts and integration challenges.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'No experimentation', description: 'We haven\\'t explored PQC practically' },\n            { value: 25, label: 'Research only', description: 'We\\'ve read about PQC but no hands-on work' },\n            { value: 50, label: 'Lab testing', description: 'We\\'ve tested PQC in isolated environments' },\n            { value: 75, label: 'Limited pilot', description: 'We\\'ve piloted PQC in non-production systems' },\n            { value: 100, label: 'Running in production', description: 'We\\'ve deployed hybrid classical+PQC or full PQC algorithms in production' }\n        ]\n    },\n    {\n        id: 12,\n        dimension: 'progress',\n        dimensionName: 'PQC Progress',\n        question: 'How far has quantum security awareness spread across your organisation?',\n        helpText: 'PQC transition requires awareness beyond the security team \u2014 procurement, legal, operations, and the board all play a role in a successful migration.',\n        type: 'choice',\n        options: [\n            { value: 0, label: 'Not started', description: 'Little to no PQC knowledge in the organisation' },\n            { value: 33, label: 'Technical only', description: 'Security team has some PQC knowledge; business functions are unaware' },\n            { value: 66, label: 'Spreading', description: 'Security team trained; key stakeholders in procurement, legal, or operations briefed' },\n            { value: 100, label: 'Embedded', description: 'Quantum risk on the board agenda; embedded in procurement, risk, and supplier management' }\n        ]\n    }\n];\n\n\/\/ Maturity levels based on score\nconst maturityLevels = [\n    { min: 0, max: 20, label: 'Not started', color: '#ef4444', description: 'Your organisation has not yet formally addressed quantum risks. Understanding your exposure is the essential first step.' },\n    { min: 21, max: 40, label: 'Exploring', color: '#f59e0b', description: 'You\\'re aware of quantum threats but lack formal planning. It\\'s time to build your cryptographic inventory and roadmap.' },\n    { min: 41, max: 60, label: 'Planning', color: '#3b82f6', description: 'You have some foundations in place. Focus on formalizing your strategy and beginning pilot projects.' },\n    { min: 61, max: 80, label: 'Executing', color: '#06b6d4', description: 'You\\'re making good progress on your quantum-safe journey. Continue executing and expand your migration scope.' },\n    { min: 81, max: 100, label: 'Leading', color: '#10b981', description: 'Your organization is well-positioned for the quantum transition. Focus on continuous improvement and vendor alignment.' }\n];\n\n\/\/ Next steps based on maturity\nconst nextStepsTemplates = {\n    'Not started': [\n        { step: 'Schedule a quantum risk awareness briefing for your security leadership', timeline: 'Within 30 days' },\n        { step: 'Identify an owner for quantum-safe strategy exploration', timeline: 'Within 30 days' },\n        { step: 'Begin documenting your cryptographic inventory starting with critical systems', timeline: 'Within 90 days' },\n        { step: 'Review NIST PQC standards (FIPS 203, 204, 205) at a high level', timeline: 'Within 60 days' },\n        { step: 'Assess data sensitivity periods and digital signature assets to understand your HNDL and HNFL risk exposure', timeline: 'Within 90 days' }\n    ],\n    'Exploring': [\n        { step: 'Complete a cryptographic inventory of your top 20 critical systems', timeline: 'Within 90 days' },\n        { step: 'Classify data by sensitivity period and HNDL risk level', timeline: 'Within 60 days' },\n        { step: 'Assign formal ownership of quantum-safe strategy to a senior leader', timeline: 'Within 30 days' },\n        { step: 'Engage vendors to understand their PQC roadmaps', timeline: 'Within 90 days' },\n        { step: 'Draft an initial PQC migration roadmap for leadership review', timeline: 'Within 120 days' }\n    ],\n    'Planning': [\n        { step: 'Get leadership approval on your PQC migration roadmap', timeline: 'Within 60 days' },\n        { step: 'Begin hybrid PQC pilot in a non-production environment', timeline: 'Within 90 days' },\n        { step: 'Assess HSM and PKI upgrade requirements and timelines', timeline: 'Within 60 days' },\n        { step: 'Include PQC requirements in vendor security questionnaires', timeline: 'Within 30 days' },\n        { step: 'Develop a crypto agility improvement plan for key applications', timeline: 'Within 120 days' }\n    ],\n    'Executing': [\n        { step: 'Expand hybrid PQC deployment to production systems', timeline: 'Within 180 days' },\n        { step: 'Complete HSM and PKI upgrades for PQC support', timeline: 'Within 12 months' },\n        { step: 'Establish regular board-level reporting on migration progress', timeline: 'Within 60 days' },\n        { step: 'Conduct independent review of your PQC migration plan', timeline: 'Within 90 days' },\n        { step: 'Develop incident response procedures for quantum-related scenarios', timeline: 'Within 120 days' }\n    ],\n    'Leading': [\n        { step: 'Require FIPS 203\/204\/205 compliance in all new vendor contracts and procurement reviews', timeline: 'Immediate' },\n        { step: 'Run quarterly crypto agility reviews \u2014 including hybrid mode performance benchmarking across critical systems', timeline: 'Quarterly' },\n        { step: 'Monitor next-generation standards developments (post-FIPS evolution, CNSA 3.0) and update your roadmap accordingly', timeline: 'Ongoing' },\n        { step: 'Contribute to sector working groups or information-sharing forums on quantum readiness', timeline: 'Ongoing' },\n        { step: 'Plan complete phase-out of classical asymmetric algorithms well ahead of the 2035 regulatory deadline', timeline: 'Within 24 months' }\n    ]\n};\n\n\/\/ Sector context (non-scored, shapes recommendations)\nconst sectorProfiles = {\n    financial: {\n        label: 'Financial Services',\n        urgencyNote: 'EU DORA (in force Jan 2025) requires digital operational resilience planning across all ICT risk \u2014 quantum is in scope. Combined with the UK NCSC 2028 strategic planning milestone and MAS Singapore\\'s \\'act now\\' guidance, your migration window is tighter than average.'\n    },\n    healthcare: {\n        label: 'Healthcare \/ Pharma',\n        urgencyNote: 'Patient data and R&D formulas often carry 20+ year sensitivity periods \u2014 putting you in the highest HNDL risk category. Harvest Now, Decrypt Later is an immediate concern.'\n    },\n    government: {\n        label: 'Government \/ Defence',\n        urgencyNote: 'CNSA 2.0 (US NSS systems): mandatory from 2027. UK NCSC: strategic planning by 2028, critical assets protected by 2031. EU agencies: active NIS2 obligations now. If your organisation handles classified or sensitive government data, the regulatory clock is already running \u2014 regardless of jurisdiction.'\n    },\n    tech: {\n        label: 'Technology \/ Cloud',\n        urgencyNote: 'Your vendors \u2014 Cloudflare, browser makers, cloud providers \u2014 have already deployed hybrid PQC. Customer and partner expectations around crypto standards are evolving fast.'\n    },\n    other: {\n        label: 'Other \/ General Enterprise',\n        urgencyNote: 'Most enterprise migration timelines are 4\u20137 years. Combined with a 5\u201315 year Q-Day window, starting your cryptographic inventory now is the minimum prudent action.'\n    }\n};\n\nconst serviceLinks = {\n    'Board Briefing': { url: 'https:\/\/REPLACE-with-Paper-page-URL#enquiry', desc: 'A bespoke board-level briefing session with a member of the team, tailored to your organisation\\'s sector, threat model, and regulatory context. From \u00a37,000.' }\n};\n\n\/\/ State \u2014 -1 = sector selector screen, 0..11 = questions\nlet currentQuestion = -1;\nlet answers = {};\nlet selectedSector = null;\n\n\/\/ Initialize\nfunction _qsInit() {\n    renderSectorSelector();\n    setupNavigation();\n}\nif (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', _qsInit);\n} else {\n    _qsInit();\n}\n\nfunction renderSectorSelector() {\n    const container = document.getElementById('questions-container');\n    container.innerHTML = `\n        <div class=\"question-card sector-card\">\n            <span class=\"question-number\">Before we start<\/span>\n            <h2 class=\"question-text\">What best describes your organisation?<\/h2>\n            <p class=\"question-help\">This helps us tailor your recommendations to your specific regulatory and risk context. It does not affect your score.<\/p>\n            <div class=\"answer-options\">\n                ${Object.entries(sectorProfiles).map(([key, p]) => `\n                    <div class=\"answer-option ${selectedSector === key ? 'selected' : ''}\"\n                         data-value=\"${key}\"\n                         onclick=\"selectSector('${key}', this)\">\n                        <div class=\"answer-radio\"><\/div>\n                        <div class=\"answer-content\">\n                            <div class=\"answer-label\">${p.label}<\/div>\n                        <\/div>\n                    <\/div>\n                `).join('')}\n            <\/div>\n        <\/div>\n    `;\n    document.getElementById('progress-step').textContent = 'Select your sector to begin';\n    document.getElementById('progress-time').textContent = '~8 minutes';\n    document.getElementById('progress-fill').style.width = '0%';\n    document.getElementById('prev-btn').disabled = true;\n    document.getElementById('next-btn').innerHTML = `Start Assessment <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>`;\n}\n\nfunction selectSector(key, element) {\n    selectedSector = key;\n    document.querySelectorAll('.answer-option').forEach(o => o.classList.remove('selected'));\n    element.classList.add('selected');\n}\n\nfunction renderQuestion(index) {\n    const container = document.getElementById('questions-container');\n    const question = questions[index];\n\n    let optionsHTML = '';\n    question.options.forEach((option, i) => {\n        const isSelected = answers[question.id] === option.value;\n        optionsHTML += `\n            <div class=\"answer-option ${isSelected ? 'selected' : ''}\" data-value=\"${option.value}\" onclick=\"selectAnswer(${question.id}, ${option.value}, this)\">\n                <div class=\"answer-radio\"><\/div>\n                <div class=\"answer-content\">\n                    <div class=\"answer-label\">${option.label}<\/div>\n                    <div class=\"answer-description\">${option.description}<\/div>\n                <\/div>\n            <\/div>\n        `;\n    });\n\n    container.innerHTML = `\n        <div class=\"question-card\">\n            <span class=\"question-number\">${question.dimensionName}<\/span>\n            <h2 class=\"question-text\">${question.question}<\/h2>\n            <p class=\"question-help\">${question.helpText}<\/p>\n            <div class=\"answer-options\">\n                ${optionsHTML}\n            <\/div>\n        <\/div>\n    `;\n\n    updateProgress();\n    updateNavButtons();\n}\n\nfunction selectAnswer(questionId, value, element) {\n    answers[questionId] = value;\n\n    \/\/ Update UI\n    document.querySelectorAll('.answer-option').forEach(opt => {\n        opt.classList.remove('selected');\n    });\n    element.classList.add('selected');\n\n    \/\/ Auto-advance after short delay\n    setTimeout(() => {\n        if (currentQuestion < questions.length - 1) {\n            currentQuestion++;\n            renderQuestion(currentQuestion);\n        }\n    }, 300);\n}\n\nfunction updateProgress() {\n    const progress = ((currentQuestion + 1) \/ questions.length) * 100;\n    document.getElementById('progress-fill').style.width = `${progress}%`;\n    document.getElementById('progress-step').textContent = `Question ${currentQuestion + 1} of ${questions.length}`;\n\n    const remaining = Math.ceil((questions.length - currentQuestion - 1) * 0.7);\n    document.getElementById('progress-time').textContent = remaining > 0 ? `~${remaining} minutes remaining` : 'Almost done!';\n}\n\nfunction updateNavButtons() {\n    const prevBtn = document.getElementById('prev-btn');\n    const nextBtn = document.getElementById('next-btn');\n\n    prevBtn.disabled = currentQuestion === 0;\n\n    if (currentQuestion === questions.length - 1) {\n        nextBtn.innerHTML = `\n            View Results\n            <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                <path d=\"M5 12h14M12 5l7 7-7 7\"\/>\n            <\/svg>\n        `;\n    } else {\n        nextBtn.innerHTML = `\n            Next\n            <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                <path d=\"M5 12h14M12 5l7 7-7 7\"\/>\n            <\/svg>\n        `;\n    }\n}\n\nfunction setupNavigation() {\n    document.getElementById('prev-btn').addEventListener('click', () => {\n        if (currentQuestion > 0) {\n            currentQuestion--;\n            renderQuestion(currentQuestion);\n        } else {\n            \/\/ Go back to sector selector\n            currentQuestion = -1;\n            renderSectorSelector();\n        }\n    });\n\n    document.getElementById('next-btn').addEventListener('click', () => {\n        if (currentQuestion === -1) {\n            \/\/ Move from sector screen to first question\n            currentQuestion = 0;\n            renderQuestion(currentQuestion);\n        } else if (currentQuestion < questions.length - 1) {\n            currentQuestion++;\n            renderQuestion(currentQuestion);\n        } else {\n            showResults();\n        }\n    });\n}\n\nfunction calculateResults() {\n    \/\/ Calculate overall score\n    const totalQuestions = questions.length;\n    const answeredQuestions = Object.keys(answers).length;\n\n    if (answeredQuestions === 0) {\n        return { overallScore: 0, dimensions: {}, maturity: maturityLevels[0] };\n    }\n\n    let totalScore = 0;\n    const dimensions = {};\n\n    questions.forEach(q => {\n        const answer = answers[q.id] !== undefined ? answers[q.id] : 0;\n        totalScore += answer;\n\n        if (!dimensions[q.dimension]) {\n            dimensions[q.dimension] = {\n                name: q.dimensionName,\n                scores: [],\n                total: 0\n            };\n        }\n        dimensions[q.dimension].scores.push(answer);\n    });\n\n    const overallScore = Math.round(totalScore \/ totalQuestions);\n\n    \/\/ Calculate dimension averages\n    Object.keys(dimensions).forEach(key => {\n        const dim = dimensions[key];\n        dim.score = Math.round(dim.scores.reduce((a, b) => a + b, 0) \/ dim.scores.length);\n    });\n\n    \/\/ Determine maturity level\n    const maturity = maturityLevels.find(m => overallScore >= m.min && overallScore <= m.max) || maturityLevels[0];\n\n    return { overallScore, dimensions, maturity };\n}\n\nfunction showResults() {\n    const results = calculateResults();\n\n    \/\/ Hide assessment elements\n    document.getElementById('assessment-header').style.display = 'none';\n    document.getElementById('progress-container').style.display = 'none';\n    document.getElementById('questions-container').style.display = 'none';\n    document.getElementById('assessment-nav').style.display = 'none';\n\n    \/\/ Show results\n    const resultsContainer = document.getElementById('results-container');\n    resultsContainer.classList.remove('hidden');\n\n    \/\/ Calculate stroke dashoffset for score ring\n    const circumference = 2 * Math.PI * 90; \/\/ radius = 90\n    const offset = circumference - (results.overallScore \/ 100) * circumference;\n\n    \/\/ Get next steps based on maturity\n    const nextSteps = nextStepsTemplates[results.maturity.label] || nextStepsTemplates['Not started'];\n\n    resultsContainer.innerHTML = `\n        <div class=\"results-container\">\n            <div class=\"results-header\">\n                <h1>Your Quantum Readiness Results<\/h1>\n                <p>Based on your responses, here's your organisation's quantum-safe readiness profile.<\/p>\n            <\/div>\n\n            <div class=\"score-display\">\n                <div class=\"score-circle\">\n                    <svg viewBox=\"0 0 200 200\">\n                        <circle class=\"score-ring-bg\" cx=\"100\" cy=\"100\" r=\"90\"\/>\n                        <circle class=\"score-ring\" cx=\"100\" cy=\"100\" r=\"90\" style=\"stroke-dashoffset: ${offset}; stroke: ${results.maturity.color}\"\/>\n                    <\/svg>\n                    <div class=\"score-number\">${results.overallScore}<\/div>\n                <\/div>\n                <div class=\"score-label\" style=\"color: ${results.maturity.color}\">${results.maturity.label}<\/div>\n                <p class=\"score-description\">${results.maturity.description}<\/p>\n            <\/div>\n\n            ${buildSectorCallout()}\n\n            <div class=\"dimension-scores\">\n                <h2>Scores by Dimension<\/h2>\n                ${buildWeakestDimensionCallout(results.dimensions)}\n                <div class=\"dimension-grid\">\n                    ${Object.keys(results.dimensions).sort((a,b) => results.dimensions[a].score - results.dimensions[b].score).map(key => {\n                        const dim = results.dimensions[key];\n                        return `\n                            <div class=\"dimension-item\">\n                                <div class=\"dimension-header\">\n                                    <span class=\"dimension-name\">${dim.name}<\/span>\n                                    <span class=\"dimension-score\">${dim.score}\/100<\/span>\n                                <\/div>\n                                <div class=\"dimension-bar\">\n                                    <div class=\"dimension-fill\" style=\"width: ${dim.score}%\"><\/div>\n                                <\/div>\n                                <p class=\"dimension-description\">${getDimensionFeedback(key, dim.score)}<\/p>\n                            <\/div>\n                        `;\n                    }).join('')}\n                <\/div>\n            <\/div>\n\n            <div class=\"next-steps\">\n                <h2>Your Recommended Next Steps<\/h2>\n                <div class=\"steps-list\">\n                    ${nextSteps.map((step, i) => `\n                        <div class=\"step-item\">\n                            <div class=\"step-number\">${i + 1}<\/div>\n                            <div class=\"step-content\">\n                                <h4>${step.step}<\/h4>\n                                <span class=\"step-timeline\">${step.timeline}<\/span>\n                            <\/div>\n                        <\/div>\n                    `).join('')}\n                <\/div>\n            <\/div>\n\n            ${buildServiceRecommendation(results.maturity.label)}\n\n            <div style=\"display:flex;align-items:flex-start;gap:0.75rem;background:rgba(37,99,235,0.07);border:1px solid rgba(37,99,235,0.18);border-radius:10px;padding:1rem 1.25rem;margin:1.5rem 0;\">\n                <span style=\"background:#2563eb;color:#fff;font-size:0.68rem;font-weight:700;padding:2px 7px;border-radius:4px;letter-spacing:0.06em;flex-shrink:0;margin-top:2px;\">\u03b2 BETA<\/span>\n                <p style=\"font-size:0.82rem;line-height:1.6;color:#374151;margin:0;\">This assessment is in beta. Results are indicative \u2014 based on your self-reported responses, not a technical audit. Scoring and recommendations will improve over time. \u00a9 2026 Karel De Kneef. All rights reserved. <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=103\" style=\"color:#2563eb;font-weight:600;\">Meet the team \u2192<\/a><\/p>\n            <\/div>\n\n            <div class=\"lead-capture\">\n                <h2>Get Your Quantum-Safe Action Brief<\/h2>\n                <p>Receive a personalized PDF with your scores, detailed recommendations, and a visual roadmap to share with your team.<\/p>\n                <form class=\"lead-form\" id=\"lead-form\" onsubmit=\"handleLeadSubmit(event)\">\n                    <div class=\"form-group\">\n                        <input type=\"email\" class=\"form-input\" placeholder=\"Work email\" required id=\"lead-email\">\n                    <\/div>\n                    <div class=\"form-group\">\n                        <input type=\"text\" class=\"form-input\" placeholder=\"Company name\" required id=\"lead-company\">\n                    <\/div>\n                    <div class=\"form-group\">\n                        <input type=\"text\" class=\"form-input\" placeholder=\"Your role\" required id=\"lead-role\">\n                    <\/div>\n\n                    <button type=\"submit\" class=\"btn btn-primary btn-lg\">\n                        Download Action Brief\n                        <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                            <path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4M7 10l5 5 5-5M12 15V3\"\/>\n                        <\/svg>\n                    <\/button>\n                    <p class=\"form-note\">We respect your privacy. No spam, just your personalized action brief.<\/p>\n                <\/form>\n            <\/div>\n        <\/div>\n    `;\n\n    \/\/ Animate score ring after render\n    setTimeout(() => {\n        const ring = document.querySelector('.score-ring');\n        if (ring) {\n            ring.style.strokeDashoffset = offset;\n        }\n    }, 100);\n}\n\nfunction getDimensionFeedback(dimension, score) {\n    const feedback = {\n        inventory: {\n            low: 'You need to build visibility into where cryptography is used across your organisation.',\n            medium: 'You have some visibility but should expand your cryptographic inventory.',\n            high: 'Strong cryptographic visibility positions you well for migration planning.'\n        },\n        data: {\n            low: 'Understanding your data\\'s sensitivity timeline is critical for prioritizing migration.',\n            medium: 'Continue classifying data to understand your full HNDL risk exposure.',\n            high: 'Good data classification will help you prioritize your PQC migration.'\n        },\n        governance: {\n            low: 'Assign clear ownership and develop a formal quantum-safe strategy.',\n            medium: 'Strengthen governance with executive sponsorship and a documented roadmap.',\n            high: 'Strong governance foundation supports effective execution.'\n        },\n        infrastructure: {\n            low: 'Assess your HSM and PKI capabilities to understand upgrade requirements.',\n            medium: 'Continue planning infrastructure upgrades for PQC support.',\n            high: 'Your infrastructure is well-positioned for PQC migration.'\n        },\n        agility: {\n            low: 'Improving crypto agility should be a priority to enable future algorithm changes.',\n            medium: 'Continue building abstraction layers to improve crypto agility.',\n            high: 'Strong crypto agility will accelerate your PQC transition.'\n        },\n        progress: {\n            low: 'Start with PQC education and small-scale experiments.',\n            medium: 'Expand your pilots and deepen team expertise.',\n            high: 'Your hands-on progress puts you ahead of most organisations.'\n        }\n    };\n\n    const level = score < 40 ? 'low' : score < 70 ? 'medium' : 'high';\n    return feedback[dimension]?.[level] || '';\n}\n\nfunction buildSectorCallout() {\n    if (!selectedSector) return '';\n    const profile = sectorProfiles[selectedSector];\n    return `\n        <div class=\"sector-context-callout\">\n            <div class=\"sector-tag\">${profile.label}<\/div>\n            <p>${profile.urgencyNote}<\/p>\n        <\/div>\n    `;\n}\n\nfunction buildWeakestDimensionCallout(dimensions) {\n    const sorted = Object.entries(dimensions).sort((a, b) => a[1].score - b[1].score);\n    if (!sorted.length) return '';\n    const [key, dim] = sorted[0];\n    const [, dim2] = sorted[1] || [null, null];\n    const inventoryScore = dimensions['inventory'] ? dimensions['inventory'].score : 100;\n    const inventoryNote = inventoryScore < 25 &#038;&#038; key !== 'inventory'\n        ? `<p class=\"weakest-secondary\" style=\"margin-top:0.5rem;color:#93c5fd;\">Note: Cryptographic inventory (${inventoryScore}\/100) is foundational \u2014 progress on other dimensions will be constrained until discovery is complete.<\/p>`\n        : '';\n    return `\n        <div class=\"weakest-dimension-callout\">\n            <div class=\"weakest-label\">Your biggest gap<\/div>\n            <div class=\"weakest-name\">${dim.name} \u2014 ${dim.score}\/100<\/div>\n            <p>${getDimensionFeedback(key, dim.score)}<\/p>\n            ${dim2 ? `<p class=\"weakest-secondary\">Second priority: <strong>${dim2.name}<\/strong> (${dim2.score}\/100)<\/p>` : ''}\n            ${inventoryNote}\n        <\/div>\n    `;\n}\n\nfunction buildServiceRecommendation(maturityLabel) {\n    const isEarlyStage = maturityLabel === 'Not started' || maturityLabel === 'Exploring';\n    if (isEarlyStage) {\n        return `\n            <div class=\"service-recommendation\">\n                <div class=\"service-rec-header\">\n                    <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                        <path d=\"M9 11l3 3L22 4\"\/><path d=\"M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11\"\/>\n                    <\/svg>\n                    <span>Recommended next step<\/span>\n                <\/div>\n                <h3>Start with the Paper<\/h3>\n                <p>At this stage, conceptual grounding matters more than process. Practical Quantum Mechanics\u2122 \u2014 For Post-Quantum Preparedness gives you the understanding to brief leadership credibly, prioritise the right actions, and avoid the most common misconceptions. From \u00a31,000.<\/p>\n                <a href=\"https:\/\/REPLACE-with-Paper-page-URL\" class=\"btn btn-primary\">See the Paper \u2192<\/a>\n            <\/div>\n        `;\n    } else {\n        const service = serviceLinks['Board Briefing'];\n        return `\n            <div class=\"service-recommendation\">\n                <div class=\"service-rec-header\">\n                    <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n                        <path d=\"M9 11l3 3L22 4\"\/><path d=\"M21 12v7a2 2 0 01-2 2H5a2 2 0 01-2-2V5a2 2 0 012-2h11\"\/>\n                    <\/svg>\n                    <span>Recommended next step<\/span>\n                <\/div>\n                <h3>Board Briefing<\/h3>\n                <p>${service.desc}<\/p>\n                <a href=\"${service.url}\" class=\"btn btn-primary\">Enquire About a Board Briefing<\/a>\n            <\/div>\n        `;\n    }\n}\n\nfunction handleLeadSubmit(event) {\n    event.preventDefault();\n\n    const email = document.getElementById('lead-email').value;\n    const company = document.getElementById('lead-company').value;\n    const role = document.getElementById('lead-role').value;\n    const wantsCall = false;\n\n    const results = calculateResults();\n\n    \/\/ Prepare lead data\n    const leadData = {\n        type: 'assessment',\n        email,\n        company,\n        role,\n        wants_call: wantsCall,\n        lead_recipients: wantsCall ? ['moona', 'karel'] : ['moona'],\n        score: results.overallScore,\n        maturity: results.maturity.label\n    };\n\n    \/\/ POST lead to WordPress REST API (endpoint registered by Quantum Loader plugin)\n    const restUrl = (window.QSConfig && window.QSConfig.restUrl)\n        ? window.QSConfig.restUrl\n        : '\/index.php?rest_route=\/quantum\/v1\/lead';\n    const restHeaders = { 'Content-Type': 'application\/json' };\n    if (window.QSConfig && window.QSConfig.nonce) {\n        restHeaders['X-WP-Nonce'] = window.QSConfig.nonce;\n    }\n    fetch(restUrl, {\n        method: 'POST',\n        headers: restHeaders,\n        body: JSON.stringify(leadData)\n    })\n    .then(response => response.json())\n    .then(data => {\n    })\n    .catch(err => {\n        console.error('Error saving lead:', err);\n    });\n\n    \/\/ Track analytics event\n    if (window.QSAnalytics) {\n        window.QSAnalytics.event('assessment_complete', {\n            score: results.overallScore,\n            maturity: results.maturity.label\n        });\n    }\n\n    \/\/ Prepare PDF data\n    const pdfData = {\n        email: email,\n        company: company,\n        role: role,\n        score: results.overallScore,\n        maturity: results.maturity.label,\n        maturityColor: results.maturity.color,\n        maturityDescription: results.maturity.description,\n        dimensions: results.dimensions,\n        wantsCall: wantsCall\n    };\n\n    \/\/ Show generating message\n    const form = document.getElementById('lead-form');\n    form.innerHTML = `\n        <div style=\"text-align: center; padding: 2rem;\">\n            <div class=\"loading-spinner\" style=\"margin: 0 auto 1rem; width: 48px; height: 48px; border: 4px solid rgba(255,255,255,0.3); border-top-color: #10b981; border-radius: 50%; animation: spin 1s linear infinite;\"><\/div>\n            <h3 style=\"color: white; margin-bottom: 0.5rem;\">Generating Your Action Brief...<\/h3>\n            <p style=\"opacity: 0.9;\">Your personalized PDF is being prepared.<\/p>\n        <\/div>\n        <style>\n            @keyframes spin {\n                to { transform: rotate(360deg); }\n            }\n        <\/style>\n    `;\n\n    \/\/ Generate PDF (wait for jsPDF library to load if needed)\n    const generatePDFWithRetry = (retries = 20) => {\n        if (window.jspdf && window.PDFGenerator) {\n            \/\/ Save report data to server\n            window.PDFGenerator.saveReportData(pdfData);\n\n            \/\/ Generate and download PDF\n            window.PDFGenerator.generatePDF(pdfData)\n                .then(success => {\n                    \/\/ Show success message\n                    form.innerHTML = `\n                        <div style=\"text-align: center; padding: 2rem;\">\n                            <svg viewBox=\"0 0 24 24\" width=\"64\" height=\"64\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"2\" style=\"margin-bottom: 1rem;\">\n                                <path d=\"M22 11.08V12a10 10 0 11-5.93-9.14\"\/>\n                                <path d=\"M22 4L12 14.01l-3-3\"\/>\n                            <\/svg>\n                            <h3 style=\"color: white; margin-bottom: 0.5rem;\">Your Action Brief is Ready!<\/h3>\n                            <p style=\"opacity: 0.9;\">Your PDF has been downloaded. Share it with your team to start your quantum-safe journey.<\/p>\n                            ${wantsCall ? '<p style=\"opacity: 0.9; margin-top: 1rem;\">We\\'ll also be in touch to schedule your strategy call.<\/p>' : ''}\n\n                        <\/div>\n                    `;\n                })\n                .catch(err => {\n                    console.error('PDF generation error:', err);\n                    form.innerHTML = `\n                        <div style=\"text-align: center; padding: 2rem;\">\n                            <svg viewBox=\"0 0 24 24\" width=\"64\" height=\"64\" fill=\"none\" stroke=\"#f59e0b\" stroke-width=\"2\" style=\"margin-bottom: 1rem;\">\n                                <circle cx=\"12\" cy=\"12\" r=\"10\"\/>\n                                <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"\/>\n                                <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"\/>\n                            <\/svg>\n                            <h3 style=\"color: white; margin-bottom: 0.5rem;\">PDF Download Issue<\/h3>\n                            <p style=\"opacity: 0.9;\">We've saved your results. Please try downloading again or contact us for your action brief.<\/p>\n                            ${wantsCall ? '<p style=\"opacity: 0.9; margin-top: 1rem;\">We\\'ll be in touch to schedule your strategy call.<\/p>' : ''}\n                            <a href=\"https:\/\/www.resiliaconnect.com\/?page_id=103\" class=\"btn btn-primary\" style=\"margin-top: 1.5rem;\">\n                                Contact Us\n                            <\/a>\n                        <\/div>\n                    `;\n                });\n        } else if (retries > 0) {\n            \/\/ Wait for library to load\n            setTimeout(() => generatePDFWithRetry(retries - 1), 200);\n        } else {\n            \/\/ Fallback if library fails to load\n            form.innerHTML = `\n                <div style=\"text-align: center; padding: 2rem;\">\n                    <svg viewBox=\"0 0 24 24\" width=\"64\" height=\"64\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"2\" style=\"margin-bottom: 1rem;\">\n                        <path d=\"M22 11.08V12a10 10 0 11-5.93-9.14\"\/>\n                        <path d=\"M22 4L12 14.01l-3-3\"\/>\n                    <\/svg>\n                    <h3 style=\"color: white; margin-bottom: 0.5rem;\">Results Saved!<\/h3>\n                    <p style=\"opacity: 0.9;\">We've captured your assessment results. We'll send your personalized Action Brief to ${email}.<\/p>\n                    ${wantsCall ? '<p style=\"opacity: 0.9; margin-top: 1rem;\">We\\'ll also be in touch to schedule your strategy call.<\/p>' : ''}\n\n                <\/div>\n            `;\n        }\n    };\n\n    generatePDFWithRetry();\n}\n\n\/* Expose inline-handler functions to global scope *\/\nwindow.selectSector     = typeof selectSector     !== 'undefined' ? selectSector     : window.selectSector;\nwindow.selectAnswer     = typeof selectAnswer     !== 'undefined' ? selectAnswer     : window.selectAnswer;\nwindow.handleLeadSubmit = typeof handleLeadSubmit !== 'undefined' ? handleLeadSubmit : window.handleLeadSubmit;\n})();\n<\/script>\n\n\n\n\n<div class=\"wp-block-group alignfull is-content-justification-space-between is-layout-flex wp-container-core-group-is-layout-c79b59fa wp-block-group-is-layout-flex\" style=\"margin-top:0;margin-bottom:0;padding-top:var(--wp--preset--spacing--50);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-group wp-container-content-9cfa9a5a is-vertical is-layout-flex wp-container-core-group-is-layout-f0d5df8b wp-block-group-is-layout-flex\"><h1 class=\"wp-block-site-title has-medium-font-size\"><a href=\"https:\/\/www.resiliaconnect.com\" target=\"_self\" rel=\"home\">Resilia Connect Ltd.<\/a><\/h1>\n\n\n<p class=\"has-text-align-left has-small-font-size wp-block-paragraph\">Company Nr.:&nbsp;16151434<\/p>\n\n\n\n<p class=\"has-text-align-left has-small-font-size wp-block-paragraph\">VAT Nr.: 482860366<\/p>\n\n\n\n<p class=\"has-text-align-left has-small-font-size wp-block-paragraph\">Proudly powered by <a rel=\"nofollow\" href=\"https:\/\/wordpress.org\">WordPress<\/a> <\/p>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-541a6b20\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-content-justification-right is-layout-flex wp-container-core-group-is-layout-91d7612d wp-block-group-is-layout-flex\">\n<div class=\"wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-831b2db5 wp-block-group-is-layout-flex\">\n<p class=\"has-text-align-left wp-block-paragraph\">Pages<\/p>\n\n\n<nav class=\"has-small-font-size items-justified-left is-vertical no-wrap wp-block-navigation is-content-justification-left is-nowrap is-layout-flex wp-container-core-navigation-is-layout-cba580fe wp-block-navigation-is-layout-flex\" aria-label=\"Menu\"><ul class=\"wp-block-navigation__container has-small-font-size items-justified-left is-vertical no-wrap wp-block-navigation\"><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/\"><span class=\"wp-block-navigation-item__label\">Quantum Security<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/?page_id=111\"><span class=\"wp-block-navigation-item__label\">Practical Quantum Mechanics\u2122<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/?page_id=150\"><span class=\"wp-block-navigation-item__label\">Practical Post-Quantum Transition Framework\u2122<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/?page_id=258\"><span class=\"wp-block-navigation-item__label\">PQC Assessment<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/?page_id=103\"><span class=\"wp-block-navigation-item__label\">The Team<\/span><\/a><\/li><li class=\"has-small-font-size wp-block-navigation-item wp-block-navigation-link\"><a class=\"wp-block-navigation-item__content\"  href=\"https:\/\/www.resiliaconnect.com\/?page_id=113\"><span class=\"wp-block-navigation-item__label\">Community<\/span><\/a><\/li><\/ul><\/nav>\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-541a6b20\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Free Tool \u03b2 BETA v1 Quantum-Safe Readiness Assessment In ~10 minutes, benchmark your organisation&#8217;s readiness across six dimensions \u2014 cryptographic inventory, data lifetime, governance, infrastructure, crypto agility, and PQC progress. Free, no account required. \u2713 No account needed \u2713 ~10 minutes \u2713 PDF report download \u2713 Sector-specific context \u03b2 BETA Results are indicative \u2014 based [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-258","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/pages\/258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=258"}],"version-history":[{"count":12,"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/pages\/258\/revisions"}],"predecessor-version":[{"id":308,"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=\/wp\/v2\/pages\/258\/revisions\/308"}],"wp:attachment":[{"href":"https:\/\/www.resiliaconnect.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}