{"id":703,"date":"2026-02-22T21:02:05","date_gmt":"2026-02-22T21:02:05","guid":{"rendered":"https:\/\/www.opey.org\/opeyit\/?page_id=703"},"modified":"2026-02-27T15:05:49","modified_gmt":"2026-02-27T15:05:49","slug":"sla-contract-analyzer","status":"publish","type":"page","link":"https:\/\/www.opey.org\/opeyit\/?page_id=703","title":{"rendered":"SLA Contract Analyzer"},"content":{"rendered":"\n<!-- SLA Contract Analyzer - When Clouds Fail by Steve Oppenheim -->\n<!-- Paste this entire code block into a WordPress Custom HTML block or page -->\n\n<div id=\"wcf-sla-analyzer\">\n  <style>\n    \/* Reset and Container *\/\n    #wcf-sla-analyzer {\n      font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif;\n      background: linear-gradient(180deg, #1a1f2e 0%, #0f1219 100%);\n      color: #e2e8f0;\n      padding: 60px 32px;\n      border-radius: 0;\n      max-width: 100%;\n      margin: 0 auto;\n      box-sizing: border-box;\n      line-height: 1.6;\n    }\n    #wcf-sla-analyzer *, #wcf-sla-analyzer *::before, #wcf-sla-analyzer *::after {\n      box-sizing: border-box;\n    }\n    .wcf-container {\n      max-width: 1000px;\n      margin: 0 auto;\n    }\n    \n    \/* SVG Icons *\/\n    .wcf-icon {\n      width: 20px;\n      height: 20px;\n      display: inline-block;\n      vertical-align: middle;\n      fill: currentColor;\n    }\n    .wcf-icon-lg {\n      width: 28px;\n      height: 28px;\n    }\n    .wcf-icon-xl {\n      width: 40px;\n      height: 40px;\n    }\n    \n    \/* Typography *\/\n    .wcf-badge {\n      display: inline-block;\n      background: rgba(232, 121, 34, 0.15);\n      border: 1px solid rgba(232, 121, 34, 0.4);\n      color: #e87922;\n      padding: 8px 20px;\n      border-radius: 2px;\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: 1.5px;\n      margin-bottom: 20px;\n    }\n    .wcf-title {\n      font-size: clamp(32px, 5vw, 48px);\n      font-weight: 700;\n      line-height: 1.15;\n      margin: 0 0 20px 0;\n      color: #ffffff;\n      letter-spacing: -0.5px;\n    }\n    .wcf-subtitle {\n      font-size: 18px;\n      color: #94a3b8;\n      line-height: 1.7;\n      margin: 0 0 40px 0;\n      max-width: 700px;\n    }\n    .wcf-section-title {\n      font-size: 16px;\n      font-weight: 700;\n      margin: 0 0 20px 0;\n      color: #ffffff;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .wcf-section-number {\n      width: 32px;\n      height: 32px;\n      background: #e87922;\n      color: #fff;\n      border-radius: 2px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 14px;\n      font-weight: 700;\n    }\n    \n    \/* Cards and Panels *\/\n    .wcf-panel {\n      background: rgba(255,255,255,0.03);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 4px;\n      padding: 32px;\n      margin-bottom: 24px;\n    }\n    .wcf-panel-header {\n      display: flex;\n      align-items: center;\n      gap: 16px;\n      margin-bottom: 24px;\n      padding-bottom: 20px;\n      border-bottom: 1px solid rgba(255,255,255,0.08);\n    }\n    .wcf-panel-icon {\n      width: 48px;\n      height: 48px;\n      background: rgba(232, 121, 34, 0.15);\n      border-radius: 4px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #e87922;\n    }\n    \n    \/* Provider Selection *\/\n    .wcf-provider-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n      gap: 16px;\n      margin-bottom: 32px;\n    }\n    .wcf-provider-card {\n      background: rgba(255,255,255,0.02);\n      border: 2px solid rgba(255,255,255,0.08);\n      border-radius: 4px;\n      padding: 24px 16px;\n      text-align: center;\n      cursor: pointer;\n      transition: all 0.2s ease;\n    }\n    .wcf-provider-card:hover {\n      background: rgba(255,255,255,0.05);\n      border-color: rgba(232, 121, 34, 0.4);\n    }\n    .wcf-provider-card.selected {\n      background: rgba(232, 121, 34, 0.1);\n      border-color: #e87922;\n    }\n    .wcf-provider-logo {\n      width: 56px;\n      height: 56px;\n      border-radius: 4px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin: 0 auto 12px;\n      font-size: 18px;\n      font-weight: 700;\n      color: #fff;\n    }\n    .wcf-provider-card span {\n      font-size: 14px;\n      color: #94a3b8;\n      font-weight: 500;\n    }\n    .wcf-provider-card.selected span {\n      color: #e87922;\n    }\n    \n    \/* Form Elements *\/\n    .wcf-form-group {\n      margin-bottom: 24px;\n    }\n    .wcf-label {\n      display: block;\n      font-size: 12px;\n      font-weight: 600;\n      color: #94a3b8;\n      margin-bottom: 10px;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n    }\n    .wcf-input {\n      width: 100%;\n      background: rgba(0,0,0,0.3);\n      border: 1px solid rgba(255,255,255,0.15);\n      border-radius: 4px;\n      padding: 14px 16px;\n      font-size: 16px;\n      color: #fff;\n      transition: border-color 0.2s;\n    }\n    .wcf-input:focus {\n      outline: none;\n      border-color: #e87922;\n    }\n    .wcf-input::placeholder {\n      color: #475569;\n    }\n    .wcf-input-row {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 20px;\n    }\n    @media (max-width: 600px) {\n      .wcf-input-row { grid-template-columns: 1fr; }\n    }\n    .wcf-select {\n      width: 100%;\n      background: rgba(0,0,0,0.3);\n      border: 1px solid rgba(255,255,255,0.15);\n      border-radius: 4px;\n      padding: 14px 16px;\n      font-size: 16px;\n      color: #fff;\n      cursor: pointer;\n      appearance: none;\n      background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'\/%3E%3C\/svg%3E\");\n      background-repeat: no-repeat;\n      background-position: right 16px center;\n    }\n    .wcf-select:focus {\n      outline: none;\n      border-color: #e87922;\n    }\n    .wcf-select option {\n      background: #1a1f2e;\n      color: #fff;\n    }\n    \n    \/* Buttons *\/\n    .wcf-btn {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 10px;\n      padding: 16px 36px;\n      border-radius: 4px;\n      font-size: 14px;\n      font-weight: 700;\n      cursor: pointer;\n      transition: all 0.2s ease;\n      border: none;\n      text-decoration: none;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n    }\n    .wcf-btn-primary {\n      background: #e87922;\n      color: #fff;\n    }\n    .wcf-btn-primary:hover {\n      background: #d66a15;\n      transform: translateY(-2px);\n      box-shadow: 0 8px 24px rgba(232, 121, 34, 0.3);\n    }\n    .wcf-btn-secondary {\n      background: transparent;\n      color: #fff;\n      border: 2px solid rgba(255,255,255,0.3);\n    }\n    .wcf-btn-secondary:hover {\n      background: rgba(255,255,255,0.05);\n      border-color: rgba(255,255,255,0.5);\n    }\n    .wcf-btn-block {\n      width: 100%;\n    }\n    \n    \/* Score Cards *\/\n    .wcf-score-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n      gap: 20px;\n      margin-bottom: 32px;\n    }\n    .wcf-score-card {\n      background: rgba(255,255,255,0.02);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 4px;\n      padding: 28px 20px;\n      text-align: center;\n      position: relative;\n      overflow: hidden;\n    }\n    .wcf-score-card::before {\n      content: '';\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      height: 3px;\n    }\n    .wcf-score-card.danger::before { background: #dc2626; }\n    .wcf-score-card.warning::before { background: #e87922; }\n    .wcf-score-card.success::before { background: #16a34a; }\n    .wcf-score-value {\n      font-size: 36px;\n      font-weight: 700;\n      margin-bottom: 8px;\n      letter-spacing: -1px;\n    }\n    .wcf-score-card.danger .wcf-score-value { color: #dc2626; }\n    .wcf-score-card.warning .wcf-score-value { color: #e87922; }\n    .wcf-score-card.success .wcf-score-value { color: #16a34a; }\n    .wcf-score-label {\n      font-size: 11px;\n      color: #64748b;\n      text-transform: uppercase;\n      letter-spacing: 1px;\n      font-weight: 600;\n    }\n    \n    \/* Findings List *\/\n    .wcf-finding {\n      display: flex;\n      align-items: flex-start;\n      gap: 16px;\n      padding: 20px 0;\n      border-bottom: 1px solid rgba(255,255,255,0.06);\n    }\n    .wcf-finding:last-child { border-bottom: none; }\n    .wcf-finding-icon {\n      width: 32px;\n      height: 32px;\n      border-radius: 4px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      flex-shrink: 0;\n    }\n    .wcf-finding-icon.critical { background: rgba(220, 38, 38, 0.15); color: #dc2626; }\n    .wcf-finding-icon.warning { background: rgba(232, 121, 34, 0.15); color: #e87922; }\n    .wcf-finding-icon.info { background: rgba(59, 130, 246, 0.15); color: #3b82f6; }\n    .wcf-finding-icon.success { background: rgba(22, 163, 74, 0.15); color: #16a34a; }\n    .wcf-finding h4 {\n      font-size: 15px;\n      font-weight: 600;\n      color: #e2e8f0;\n      margin: 0 0 6px 0;\n    }\n    .wcf-finding p {\n      font-size: 14px;\n      color: #64748b;\n      line-height: 1.6;\n      margin: 0;\n    }\n    \n    \/* Compensation Table *\/\n    .wcf-comp-panel {\n      background: linear-gradient(135deg, rgba(232, 121, 34, 0.08), rgba(220, 38, 38, 0.05));\n      border: 1px solid rgba(232, 121, 34, 0.25);\n      border-radius: 4px;\n      padding: 32px;\n      margin-bottom: 24px;\n    }\n    .wcf-comp-header {\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      flex-wrap: wrap;\n      gap: 16px;\n      margin-bottom: 28px;\n      padding-bottom: 20px;\n      border-bottom: 1px solid rgba(255,255,255,0.1);\n    }\n    .wcf-comp-header h3 {\n      font-size: 18px;\n      font-weight: 700;\n      margin: 0;\n      display: flex;\n      align-items: center;\n      gap: 12px;\n    }\n    .wcf-comp-amount {\n      font-size: 36px;\n      font-weight: 700;\n      color: #16a34a;\n      letter-spacing: -1px;\n    }\n    .wcf-credit-breakdown {\n      display: grid;\n      gap: 12px;\n    }\n    .wcf-credit-row {\n      display: grid;\n      grid-template-columns: 1fr auto auto;\n      gap: 20px;\n      align-items: center;\n      padding: 16px 20px;\n      background: rgba(0,0,0,0.25);\n      border-radius: 4px;\n      font-size: 14px;\n    }\n    .wcf-credit-row .label { color: #94a3b8; }\n    .wcf-credit-row .percent { color: #e87922; font-weight: 700; }\n    .wcf-credit-row .value { color: #16a34a; font-weight: 700; }\n    \n    \/* Leverage Points *\/\n    .wcf-leverage-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n      gap: 20px;\n    }\n    .wcf-leverage-card {\n      background: rgba(255,255,255,0.02);\n      border: 1px solid rgba(255,255,255,0.08);\n      border-radius: 4px;\n      padding: 24px;\n      border-left: 3px solid #e87922;\n    }\n    .wcf-leverage-card h4 {\n      font-size: 15px;\n      font-weight: 600;\n      margin: 0 0 12px 0;\n      color: #fff;\n      display: flex;\n      align-items: center;\n      gap: 10px;\n    }\n    .wcf-leverage-card p {\n      font-size: 14px;\n      color: #94a3b8;\n      line-height: 1.6;\n      margin: 0;\n    }\n    .wcf-leverage-icon {\n      width: 24px;\n      height: 24px;\n      background: rgba(232, 121, 34, 0.15);\n      border-radius: 4px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      color: #e87922;\n      flex-shrink: 0;\n    }\n    \n    \/* CTA Section *\/\n    .wcf-cta {\n      background: linear-gradient(180deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.01) 100%);\n      border: 1px solid rgba(255,255,255,0.1);\n      border-radius: 4px;\n      padding: 48px;\n      text-align: center;\n      margin-top: 40px;\n    }\n    .wcf-cta h3 {\n      font-size: 28px;\n      font-weight: 700;\n      margin: 0 0 12px 0;\n      color: #fff;\n    }\n    .wcf-cta p {\n      color: #64748b;\n      font-size: 16px;\n      margin: 0 0 32px 0;\n      max-width: 600px;\n      margin-left: auto;\n      margin-right: auto;\n    }\n    .wcf-cta-buttons {\n      display: flex;\n      justify-content: center;\n      flex-wrap: wrap;\n      gap: 16px;\n    }\n    \n    \/* Tabs *\/\n    .wcf-tabs {\n      display: flex;\n      gap: 4px;\n      margin-bottom: 24px;\n      flex-wrap: wrap;\n      background: rgba(0,0,0,0.2);\n      padding: 4px;\n      border-radius: 4px;\n    }\n    .wcf-tab {\n      padding: 12px 24px;\n      background: transparent;\n      border: none;\n      border-radius: 4px;\n      color: #94a3b8;\n      font-size: 13px;\n      font-weight: 600;\n      cursor: pointer;\n      transition: all 0.2s;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n    }\n    .wcf-tab:hover { \n      color: #fff;\n      background: rgba(255,255,255,0.05);\n    }\n    .wcf-tab.active {\n      background: #e87922;\n      color: #fff;\n    }\n    .wcf-tab-content { display: none; }\n    .wcf-tab-content.active { display: block; }\n    \n    \/* Pillar Reference *\/\n    .wcf-pillar-ref {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      background: rgba(232, 121, 34, 0.1);\n      border: 1px solid rgba(232, 121, 34, 0.3);\n      padding: 6px 12px;\n      border-radius: 4px;\n      font-size: 11px;\n      font-weight: 600;\n      color: #e87922;\n      text-transform: uppercase;\n      letter-spacing: 0.5px;\n    }\n    \n    \/* Utilities *\/\n    .wcf-hidden { display: none !important; }\n    .wcf-text-center { text-align: center; }\n    .wcf-divider {\n      height: 1px;\n      background: rgba(255,255,255,0.08);\n      margin: 32px 0;\n    }\n    \n    \/* Animations *\/\n    @keyframes wcf-fadeIn {\n      from { opacity: 0; transform: translateY(10px); }\n      to { opacity: 1; transform: translateY(0); }\n    }\n    .wcf-animate { animation: wcf-fadeIn 0.4s ease-out; }\n    \n    \/* Print Styles *\/\n    @media print {\n      #wcf-sla-analyzer { background: #fff; color: #000; }\n      .wcf-btn, .wcf-provider-grid { display: none; }\n    }\n  <\/style>\n\n  <!-- SVG Icon Definitions -->\n  <svg style=\"display: none;\">\n    <defs>\n      <symbol id=\"wcf-icon-search\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <circle cx=\"11\" cy=\"11\" r=\"8\"><\/circle>\n        <path d=\"M21 21l-4.35-4.35\"><\/path>\n      <\/symbol>\n      <symbol id=\"wcf-icon-alert\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"><\/path>\n        <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"><\/line>\n        <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"><\/line>\n      <\/symbol>\n      <symbol id=\"wcf-icon-dollar\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"23\"><\/line>\n        <path d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"><\/path>\n      <\/symbol>\n      <symbol id=\"wcf-icon-target\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n        <circle cx=\"12\" cy=\"12\" r=\"6\"><\/circle>\n        <circle cx=\"12\" cy=\"12\" r=\"2\"><\/circle>\n      <\/symbol>\n      <symbol id=\"wcf-icon-shield\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"><\/path>\n      <\/symbol>\n      <symbol id=\"wcf-icon-clock\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <circle cx=\"12\" cy=\"12\" r=\"10\"><\/circle>\n        <polyline points=\"12 6 12 12 16 14\"><\/polyline>\n      <\/symbol>\n      <symbol id=\"wcf-icon-link\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"><\/path>\n        <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"><\/path>\n      <\/symbol>\n      <symbol id=\"wcf-icon-trending\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <polyline points=\"23 6 13.5 15.5 8.5 10.5 1 18\"><\/polyline>\n        <polyline points=\"17 6 23 6 23 12\"><\/polyline>\n      <\/symbol>\n      <symbol id=\"wcf-icon-file\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"><\/path>\n        <polyline points=\"14 2 14 8 20 8\"><\/polyline>\n        <line x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"><\/line>\n        <line x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"><\/line>\n      <\/symbol>\n      <symbol id=\"wcf-icon-check\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <polyline points=\"20 6 9 17 4 12\"><\/polyline>\n      <\/symbol>\n      <symbol id=\"wcf-icon-x\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"><\/line>\n        <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"><\/line>\n      <\/symbol>\n      <symbol id=\"wcf-icon-book\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <path d=\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\"><\/path>\n        <path d=\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\"><\/path>\n      <\/symbol>\n      <symbol id=\"wcf-icon-refresh\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n        <polyline points=\"23 4 23 10 17 10\"><\/polyline>\n        <path d=\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\"><\/path>\n      <\/symbol>\n    <\/defs>\n  <\/svg>\n\n  <div class=\"wcf-container\">\n    <!-- Step 1: Input -->\n    <div id=\"wcf-step-input\">\n      <div class=\"wcf-text-center\">\n        <span class=\"wcf-badge\">Free Analysis Tool<\/span>\n        <h1 class=\"wcf-title\">SLA Contract Analyzer<\/h1>\n        <p class=\"wcf-subtitle\">Discover hidden gaps in your cloud provider agreements, calculate credits you may be owed, and uncover negotiation leverage points aligned with the Four Pillars of Sovereignty.<\/p>\n      <\/div>\n\n      <div class=\"wcf-panel\">\n        <h2 class=\"wcf-section-title\">\n          <span class=\"wcf-section-number\">1<\/span>\n          Select Your Primary Cloud Provider\n        <\/h2>\n        <div class=\"wcf-provider-grid\" id=\"wcf-providers\">\n          <div class=\"wcf-provider-card\" data-provider=\"aws\">\n            <div class=\"wcf-provider-logo\" style=\"background: linear-gradient(135deg, #ff9900, #ff6600);\">AWS<\/div>\n            <span>Amazon AWS<\/span>\n          <\/div>\n          <div class=\"wcf-provider-card\" data-provider=\"azure\">\n            <div class=\"wcf-provider-logo\" style=\"background: linear-gradient(135deg, #0078d4, #00bcf2);\">Az<\/div>\n            <span>Microsoft Azure<\/span>\n          <\/div>\n          <div class=\"wcf-provider-card\" data-provider=\"gcp\">\n            <div class=\"wcf-provider-logo\" style=\"background: linear-gradient(135deg, #4285f4, #34a853);\">G<\/div>\n            <span>Google Cloud<\/span>\n          <\/div>\n          <div class=\"wcf-provider-card\" data-provider=\"cloudflare\">\n            <div class=\"wcf-provider-logo\" style=\"background: linear-gradient(135deg, #f48120, #faad3f);\">CF<\/div>\n            <span>Cloudflare<\/span>\n          <\/div>\n          <div class=\"wcf-provider-card\" data-provider=\"oracle\">\n            <div class=\"wcf-provider-logo\" style=\"background: linear-gradient(135deg, #c41e3a, #f80000);\">Or<\/div>\n            <span>Oracle Cloud<\/span>\n          <\/div>\n        <\/div>\n\n        <h2 class=\"wcf-section-title\">\n          <span class=\"wcf-section-number\">2<\/span>\n          Your Cloud Spend and Usage\n        <\/h2>\n        <div class=\"wcf-input-row\">\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Monthly Cloud Spend (USD)<\/label>\n            <input type=\"number\" class=\"wcf-input\" id=\"wcf-spend\" placeholder=\"e.g., 50000\" min=\"0\">\n          <\/div>\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Primary Workload Type<\/label>\n            <select class=\"wcf-select\" id=\"wcf-workload\">\n              <option value=\"mixed\">Mixed \/ General<\/option>\n              <option value=\"compute\">Compute Heavy (VMs, Containers)<\/option>\n              <option value=\"data\">Data and Analytics<\/option>\n              <option value=\"ai\">AI \/ ML Workloads<\/option>\n              <option value=\"web\">Web Applications<\/option>\n              <option value=\"saas\">SaaS Platform<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n        <div class=\"wcf-input-row\">\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Contract Type<\/label>\n            <select class=\"wcf-select\" id=\"wcf-contract\">\n              <option value=\"payg\">Pay-As-You-Go<\/option>\n              <option value=\"reserved\">Reserved \/ Committed<\/option>\n              <option value=\"enterprise\">Enterprise Agreement<\/option>\n              <option value=\"custom\">Custom Negotiated<\/option>\n            <\/select>\n          <\/div>\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Infrastructure Strategy<\/label>\n            <select class=\"wcf-select\" id=\"wcf-multicloud\">\n              <option value=\"single\">Single Provider<\/option>\n              <option value=\"backup\">Primary + Backup Provider<\/option>\n              <option value=\"multi\">Active Multi-Cloud<\/option>\n              <option value=\"hybrid\">Hybrid (Cloud + On-Prem)<\/option>\n            <\/select>\n          <\/div>\n        <\/div>\n\n        <h2 class=\"wcf-section-title\">\n          <span class=\"wcf-section-number\">3<\/span>\n          Recent Outage Experience (Past 12 Months)\n        <\/h2>\n        <div class=\"wcf-input-row\">\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Total Outage Hours Experienced<\/label>\n            <input type=\"number\" class=\"wcf-input\" id=\"wcf-outage-hours\" placeholder=\"e.g., 8\" min=\"0\" step=\"0.5\">\n          <\/div>\n          <div class=\"wcf-form-group\">\n            <label class=\"wcf-label\">Number of Separate Incidents<\/label>\n            <input type=\"number\" class=\"wcf-input\" id=\"wcf-incidents\" placeholder=\"e.g., 3\" min=\"0\">\n          <\/div>\n        <\/div>\n        <div class=\"wcf-form-group\">\n          <label class=\"wcf-label\">Estimated Business Impact Per Hour of Downtime (USD)<\/label>\n          <input type=\"number\" class=\"wcf-input\" id=\"wcf-impact\" placeholder=\"e.g., 10000\" min=\"0\">\n        <\/div>\n\n        <div class=\"wcf-divider\"><\/div>\n        <button class=\"wcf-btn wcf-btn-primary wcf-btn-block\" id=\"wcf-analyze-btn\">\n          <svg class=\"wcf-icon\"><use href=\"#wcf-icon-search\"><\/use><\/svg>\n          Analyze My SLA Coverage\n        <\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Step 2: Results -->\n    <div id=\"wcf-step-results\" class=\"wcf-hidden\">\n      <div class=\"wcf-text-center\">\n        <span class=\"wcf-badge\">Analysis Complete<\/span>\n        <h1 class=\"wcf-title\">Your SLA Analysis<\/h1>\n        <p class=\"wcf-subtitle\" id=\"wcf-provider-name\">Amazon AWS Enterprise Agreement Analysis<\/p>\n      <\/div>\n\n      <!-- Score Cards -->\n      <div class=\"wcf-score-grid wcf-animate\">\n        <div class=\"wcf-score-card\" id=\"wcf-score-grade\">\n          <div class=\"wcf-score-value\">&#8212;<\/div>\n          <div class=\"wcf-score-label\">Coverage Grade<\/div>\n        <\/div>\n        <div class=\"wcf-score-card\" id=\"wcf-score-credits\">\n          <div class=\"wcf-score-value\">$&#8211;<\/div>\n          <div class=\"wcf-score-label\">Potential Credits<\/div>\n        <\/div>\n        <div class=\"wcf-score-card\" id=\"wcf-score-gaps\">\n          <div class=\"wcf-score-value\">&#8212;<\/div>\n          <div class=\"wcf-score-label\">Coverage Gaps<\/div>\n        <\/div>\n        <div class=\"wcf-score-card\" id=\"wcf-score-leverage\">\n          <div class=\"wcf-score-value\">&#8212;<\/div>\n          <div class=\"wcf-score-label\">Leverage Points<\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Tabs -->\n      <div class=\"wcf-tabs\">\n        <button class=\"wcf-tab active\" data-tab=\"exclusions\">Hidden Exclusions<\/button>\n        <button class=\"wcf-tab\" data-tab=\"credits\">Credit Calculator<\/button>\n        <button class=\"wcf-tab\" data-tab=\"leverage\">Negotiation Leverage<\/button>\n      <\/div>\n\n      <!-- Tab: Hidden Exclusions -->\n      <div class=\"wcf-tab-content active\" id=\"wcf-tab-exclusions\">\n        <div class=\"wcf-panel\">\n          <div class=\"wcf-panel-header\">\n            <div class=\"wcf-panel-icon\">\n              <svg class=\"wcf-icon-lg\"><use href=\"#wcf-icon-alert\"><\/use><\/svg>\n            <\/div>\n            <div>\n              <h3 style=\"margin: 0; font-size: 18px; font-weight: 700;\">Hidden Exclusions and Gaps<\/h3>\n              <p style=\"margin: 4px 0 0 0; font-size: 13px; color: #64748b;\">What your provider agreement does not tell you<\/p>\n            <\/div>\n          <\/div>\n          <div id=\"wcf-exclusions-list\">\n            <!-- Populated dynamically -->\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Tab: Credit Calculator -->\n      <div class=\"wcf-tab-content\" id=\"wcf-tab-credits\">\n        <div class=\"wcf-comp-panel\">\n          <div class=\"wcf-comp-header\">\n            <h3>\n              <svg class=\"wcf-icon-lg\" style=\"color: #16a34a;\"><use href=\"#wcf-icon-dollar\"><\/use><\/svg>\n              Credit Calculation\n            <\/h3>\n            <div class=\"wcf-comp-amount\" id=\"wcf-total-credit\">$0<\/div>\n          <\/div>\n          <div class=\"wcf-credit-breakdown\" id=\"wcf-credit-breakdown\">\n            <!-- Populated dynamically -->\n          <\/div>\n        <\/div>\n        <div class=\"wcf-panel\">\n          <div class=\"wcf-panel-header\">\n            <div class=\"wcf-panel-icon\">\n              <svg class=\"wcf-icon-lg\"><use href=\"#wcf-icon-file\"><\/use><\/svg>\n            <\/div>\n            <div>\n              <h3 style=\"margin: 0; font-size: 18px; font-weight: 700;\">Important Notes<\/h3>\n              <p style=\"margin: 4px 0 0 0; font-size: 13px; color: #64748b;\">Key factors affecting your credit eligibility<\/p>\n            <\/div>\n          <\/div>\n          <div id=\"wcf-credit-notes\">\n            <!-- Populated dynamically -->\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- Tab: Negotiation Leverage -->\n      <div class=\"wcf-tab-content\" id=\"wcf-tab-leverage\">\n        <div class=\"wcf-panel\">\n          <div class=\"wcf-panel-header\">\n            <div class=\"wcf-panel-icon\">\n              <svg class=\"wcf-icon-lg\"><use href=\"#wcf-icon-target\"><\/use><\/svg>\n            <\/div>\n            <div>\n              <h3 style=\"margin: 0; font-size: 18px; font-weight: 700;\">Your Negotiation Leverage Points<\/h3>\n              <p style=\"margin: 4px 0 0 0; font-size: 13px; color: #64748b;\">Use these in your next contract renewal discussion<\/p>\n            <\/div>\n          <\/div>\n          <div style=\"margin-bottom: 24px;\">\n            <span class=\"wcf-pillar-ref\">Pillar Two: Financialize Resilience<\/span>\n          <\/div>\n          <div class=\"wcf-leverage-grid\" id=\"wcf-leverage-list\">\n            <!-- Populated dynamically -->\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- CTA -->\n      <div class=\"wcf-cta\">\n        <h3>Ready to Build Real Sovereignty?<\/h3>\n        <p>This analysis reveals what is hidden in fine print. &#8220;When Clouds Fail&#8221; provides the complete framework for moving from cloud dependency to hybrid sovereignty.<\/p>\n        <div class=\"wcf-cta-buttons\">\n          <a href=\"https:\/\/www.amazon.com\/dp\/B0DZ29HVKV\" target=\"_blank\" class=\"wcf-btn wcf-btn-primary\">\n            <svg class=\"wcf-icon\"><use href=\"#wcf-icon-book\"><\/use><\/svg>\n            Get the Book\n          <\/a>\n          <button class=\"wcf-btn wcf-btn-secondary\" id=\"wcf-restart-btn\">\n            <svg class=\"wcf-icon\"><use href=\"#wcf-icon-refresh\"><\/use><\/svg>\n            New Analysis\n          <\/button>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n  (function() {\n    \/\/ ============ SLA DATA (Self-maintaining) ============\n    const slaData = {\n      aws: {\n        name: \"Amazon Web Services\",\n        baseUptime: 99.99,\n        creditTiers: [\n          { threshold: 99.99, credit: 0 },\n          { threshold: 99.0, credit: 10 },\n          { threshold: 95.0, credit: 25 },\n          { threshold: 0, credit: 100 }\n        ],\n        claimWindow: 30,\n        maxCredit: 100,\n        exclusions: [\n          { type: \"critical\", title: \"Force Majeure Exclusion\", desc: \"Outages caused by 'events beyond reasonable control' including internet disruptions, which providers routinely invoke during cascading failures.\" },\n          { type: \"critical\", title: \"Third-Party Dependency Gap\", desc: \"SLA excludes issues stemming from services AWS relies on but does not control, including upstream network providers and DNS services.\" },\n          { type: \"warning\", title: \"Regional vs. Global SLA\", desc: \"Your 99.99% applies per-region. Multi-region outages are calculated separately, often yielding zero credits.\" },\n          { type: \"warning\", title: \"AI Services Lower Tier\", desc: \"Bedrock and SageMaker carry 99.9% SLA (not 99.99%), with separate credit calculations.\" },\n          { type: \"info\", title: \"Measurement Methodology\", desc: \"AWS measures 'Error Rate' not absolute downtime. Degraded performance may not trigger credits even during severe incidents.\" }\n        ],\n        leverage: [\n          { icon: \"trending\", title: \"Demand Incident-Based Reporting\", desc: \"Request contractual access to real-time incident data and correlation with your specific workloads, not just regional averages.\" },\n          { icon: \"clock\", title: \"Extend Claim Window to 90 Days\", desc: \"Industry best practice is moving to 90-day windows. Your 30-day term is negotiable, especially at enterprise spend levels.\" },\n          { icon: \"link\", title: \"Require Dependency Disclosure\", desc: \"Request explicit documentation of third-party dependencies that could trigger the exclusion clause.\" },\n          { icon: \"dollar\", title: \"Negotiate Credit Floor\", desc: \"For enterprise agreements, request minimum credit per incident regardless of calculated percentage.\" }\n        ]\n      },\n      azure: {\n        name: \"Microsoft Azure\",\n        baseUptime: 99.99,\n        creditTiers: [\n          { threshold: 99.99, credit: 0 },\n          { threshold: 99.0, credit: 10 },\n          { threshold: 95.0, credit: 25 },\n          { threshold: 0, credit: 100 }\n        ],\n        claimWindow: 30,\n        maxCredit: 100,\n        exclusions: [\n          { type: \"critical\", title: \"Cascading Failure Exclusion\", desc: \"Section 4.2 excludes compensation when outages result from 'upstream provider dependencies,' covering CDN cascade events.\" },\n          { type: \"critical\", title: \"Retroactive Maintenance Clause\", desc: \"Azure can retroactively classify outages as 'planned maintenance' with minimal notice, voiding SLA credits entirely.\" },\n          { type: \"warning\", title: \"Entra ID Separate SLA\", desc: \"Identity services carry separate 99.9% SLA. Major identity outages fall under different (worse) terms.\" },\n          { type: \"warning\", title: \"AI Services Gap\", desc: \"Azure OpenAI and Cognitive Services carry 99.9% uptime (not 99.99%), with AI-specific exclusions for 'model behavior.'\" },\n          { type: \"info\", title: \"Credit Cap Per Service\", desc: \"Maximum monthly credit capped per-service, not total. Multiple service failures do not compound credits.\" }\n        ],\n        leverage: [\n          { icon: \"trending\", title: \"Reference Competitive Pressure\", desc: \"Microsoft is aggressively competing with AWS. Use competitive quotes as leverage for better SLA terms.\" },\n          { icon: \"shield\", title: \"Require Cascade Protection\", desc: \"Negotiate explicit coverage for multi-service cascading failures, referencing recent major events specifically.\" },\n          { icon: \"target\", title: \"Lock AI SLA Improvements\", desc: \"As Azure OpenAI matures, negotiate SLA improvements tied to service maturity milestones.\" },\n          { icon: \"clock\", title: \"Demand Maintenance Notification\", desc: \"Require 72-hour minimum notice for planned maintenance to prevent retroactive classification.\" }\n        ]\n      },\n      gcp: {\n        name: \"Google Cloud Platform\",\n        baseUptime: 99.99,\n        creditTiers: [\n          { threshold: 99.99, credit: 0 },\n          { threshold: 99.0, credit: 10 },\n          { threshold: 95.0, credit: 25 },\n          { threshold: 0, credit: 50 }\n        ],\n        claimWindow: 30,\n        maxCredit: 50,\n        exclusions: [\n          { type: \"critical\", title: \"50% Credit Cap (Lowest Major Cloud)\", desc: \"Unlike AWS\/Azure (100% cap), GCP limits maximum credits to 50% of monthly bill regardless of downtime severity.\" },\n          { type: \"critical\", title: \"Broad Exclusion Language\", desc: \"GCP's SLA excludes issues from 'features designated Alpha or Beta.' Many cutting-edge services fall under this.\" },\n          { type: \"warning\", title: \"Vertex AI Limitations\", desc: \"AI\/ML services under Vertex carry 99.5% SLA with additional exclusions for 'model training disruptions.'\" },\n          { type: \"warning\", title: \"Network-Specific Carveouts\", desc: \"Cloud Interconnect and VPN have separate SLAs that do not stack with compute SLAs during network incidents.\" },\n          { type: \"info\", title: \"Aggressive Measurement Windows\", desc: \"GCP measures monthly uptime in 5-minute intervals. Brief but severe outages may not register.\" }\n        ],\n        leverage: [\n          { icon: \"dollar\", title: \"Push for 100% Credit Cap\", desc: \"GCP's 50% cap is below market. Reference AWS\/Azure 100% caps as negotiation baseline.\" },\n          { icon: \"shield\", title: \"Lock Beta Service Terms\", desc: \"If using newer GCP services, negotiate locked SLA terms regardless of GA status.\" },\n          { icon: \"trending\", title: \"Request Granular Reporting\", desc: \"GCP's measurement methodology favors short outages. Request minute-level incident reporting.\" },\n          { icon: \"clock\", title: \"Multi-Year Commitment Trade\", desc: \"Offer longer commitment in exchange for materially better SLA terms and higher credit caps.\" }\n        ]\n      },\n      cloudflare: {\n        name: \"Cloudflare\",\n        baseUptime: 100,\n        creditTiers: [\n          { threshold: 100, credit: 0 },\n          { threshold: 99.0, credit: 10 },\n          { threshold: 95.0, credit: 25 },\n          { threshold: 0, credit: 100 }\n        ],\n        claimWindow: 30,\n        maxCredit: 100,\n        exclusions: [\n          { type: \"critical\", title: \"100% Uptime Promise (With Caveats)\", desc: \"Cloudflare promises 100% uptime but configuration pushes can cascade globally. 'Human error' clauses apply.\" },\n          { type: \"critical\", title: \"Edge vs Origin Distinction\", desc: \"SLA covers Cloudflare edge. If issue is 'origin server connectivity,' Cloudflare claims no responsibility even when they are the bottleneck.\" },\n          { type: \"warning\", title: \"Workers\/Pages Separate Terms\", desc: \"Serverless compute (Workers) and Pages have different, often lower, uptime guarantees than core CDN.\" },\n          { type: \"warning\", title: \"DNS Carveout\", desc: \"While rare, Cloudflare DNS issues are measured separately. A DNS outage affecting your domain may not trigger CDN credits.\" },\n          { type: \"info\", title: \"Plan-Dependent SLA\", desc: \"Free and Pro plans have no SLA. Business gets 100% with caps. Enterprise is negotiable.\" }\n        ],\n        leverage: [\n          { icon: \"trending\", title: \"Reference Recent Cascades\", desc: \"Recent config push cascades that affected global web traffic are strong leverage for better change management guarantees.\" },\n          { icon: \"shield\", title: \"Negotiate Origin Protection\", desc: \"Push for SLA coverage that includes origin connectivity issues during Cloudflare edge incidents.\" },\n          { icon: \"target\", title: \"Lock Workers SLA Parity\", desc: \"If using Workers heavily, negotiate SLA parity with core CDN services.\" },\n          { icon: \"link\", title: \"Multi-Provider CDN Rights\", desc: \"Request contractual flexibility to use secondary CDN during Cloudflare incidents without penalty.\" }\n        ]\n      },\n      oracle: {\n        name: \"Oracle Cloud Infrastructure\",\n        baseUptime: 99.99,\n        creditTiers: [\n          { threshold: 99.99, credit: 0 },\n          { threshold: 99.0, credit: 10 },\n          { threshold: 95.0, credit: 25 },\n          { threshold: 0, credit: 100 }\n        ],\n        claimWindow: 30,\n        maxCredit: 100,\n        exclusions: [\n          { type: \"critical\", title: \"Data Center Power Exclusions\", desc: \"Power failure exclusions are broad. 'Environmental conditions' void credits during weather-related incidents.\" },\n          { type: \"critical\", title: \"Autonomous Database Complexity\", desc: \"Autonomous DB has different SLA with exclusions for 'automated operations,' even when automation causes the problem.\" },\n          { type: \"warning\", title: \"Government\/Dedicated Regions\", desc: \"If using OCI Government or dedicated regions, SLA terms differ significantly (often worse) from commercial cloud.\" },\n          { type: \"warning\", title: \"Recovery Time Not Guaranteed\", desc: \"Extended recovery scenarios show SLAs cover uptime, not recovery time. No credits for slow restoration.\" },\n          { type: \"info\", title: \"Fusion Apps Separate\", desc: \"Oracle Fusion applications (ERP, HCM) carry entirely separate SLAs from OCI infrastructure.\" }\n        ],\n        leverage: [\n          { icon: \"shield\", title: \"Demand Power Resilience Proof\", desc: \"After major weather events, require documentation of data center power redundancy and generator capacity.\" },\n          { icon: \"clock\", title: \"Negotiate Recovery Time SLA\", desc: \"Push for maximum recovery time guarantees (RTO), not just uptime percentage.\" },\n          { icon: \"target\", title: \"Lock Government Region Parity\", desc: \"If expanding to gov cloud, negotiate commercial-equivalent SLA terms in advance.\" },\n          { icon: \"link\", title: \"Exit Clause for Extended Outages\", desc: \"Request contractual exit provisions if outages exceed defined consecutive hours.\" }\n        ]\n      }\n    };\n\n    \/\/ ============ DOM REFERENCES ============\n    const stepInput = document.getElementById('wcf-step-input');\n    const stepResults = document.getElementById('wcf-step-results');\n    const providerCards = document.querySelectorAll('.wcf-provider-card');\n    const analyzeBtn = document.getElementById('wcf-analyze-btn');\n    const restartBtn = document.getElementById('wcf-restart-btn');\n    const tabs = document.querySelectorAll('.wcf-tab');\n    const tabContents = document.querySelectorAll('.wcf-tab-content');\n\n    let selectedProvider = null;\n\n    \/\/ ============ EVENT HANDLERS ============\n    providerCards.forEach(card => {\n      card.addEventListener('click', () => {\n        providerCards.forEach(c => c.classList.remove('selected'));\n        card.classList.add('selected');\n        selectedProvider = card.dataset.provider;\n      });\n    });\n\n    tabs.forEach(tab => {\n      tab.addEventListener('click', () => {\n        tabs.forEach(t => t.classList.remove('active'));\n        tabContents.forEach(tc => tc.classList.remove('active'));\n        tab.classList.add('active');\n        document.getElementById('wcf-tab-' + tab.dataset.tab).classList.add('active');\n      });\n    });\n\n    analyzeBtn.addEventListener('click', runAnalysis);\n    restartBtn.addEventListener('click', () => {\n      stepResults.classList.add('wcf-hidden');\n      stepInput.classList.remove('wcf-hidden');\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    });\n\n    \/\/ ============ ANALYSIS ENGINE ============\n    function runAnalysis() {\n      if (!selectedProvider) {\n        alert('Please select a cloud provider');\n        return;\n      }\n\n      const spend = parseFloat(document.getElementById('wcf-spend').value) || 10000;\n      const outageHours = parseFloat(document.getElementById('wcf-outage-hours').value) || 0;\n      const incidents = parseInt(document.getElementById('wcf-incidents').value) || 0;\n      const impactPerHour = parseFloat(document.getElementById('wcf-impact').value) || 0;\n      const workload = document.getElementById('wcf-workload').value;\n      const contract = document.getElementById('wcf-contract').value;\n      const multicloud = document.getElementById('wcf-multicloud').value;\n\n      const provider = slaData[selectedProvider];\n      \n      \/\/ Calculate uptime percentage based on outage hours\n      const hoursInMonth = 730;\n      const uptimePercent = Math.max(0, ((hoursInMonth - outageHours) \/ hoursInMonth) * 100);\n      \n      \/\/ Find applicable credit tier\n      let creditPercent = 0;\n      for (const tier of provider.creditTiers) {\n        if (uptimePercent < tier.threshold) {\n          creditPercent = tier.credit;\n        }\n      }\n      creditPercent = Math.min(creditPercent, provider.maxCredit);\n      \n      \/\/ Calculate potential credit\n      const potentialCredit = (spend * creditPercent) \/ 100;\n      \n      \/\/ Calculate business impact\n      const businessImpact = outageHours * impactPerHour;\n      \n      \/\/ Determine grade\n      let grade, gradeClass;\n      const gapCount = provider.exclusions.filter(e => e.type === 'critical').length;\n      if (gapCount >= 3 || creditPercent < 25) { grade = 'D+'; gradeClass = 'danger'; }\n      else if (gapCount >= 2 || creditPercent < 50) { grade = 'C'; gradeClass = 'warning'; }\n      else if (gapCount >= 1) { grade = 'B'; gradeClass = 'warning'; }\n      else { grade = 'A-'; gradeClass = 'success'; }\n\n      \/\/ Adjust for contract type\n      if (contract === 'custom' || contract === 'enterprise') {\n        grade = grade.replace('D+', 'C-').replace('C', 'B-');\n      }\n\n      \/\/ Update UI\n      document.getElementById('wcf-provider-name').textContent = provider.name + ' ' + (contract === 'enterprise' ? 'Enterprise' : 'Standard') + ' Agreement Analysis';\n      \n      \/\/ Score cards\n      const scoreGrade = document.getElementById('wcf-score-grade');\n      scoreGrade.className = 'wcf-score-card ' + gradeClass;\n      scoreGrade.querySelector('.wcf-score-value').textContent = grade;\n      \n      const scoreCredits = document.getElementById('wcf-score-credits');\n      scoreCredits.className = 'wcf-score-card ' + (potentialCredit > 0 ? 'success' : 'warning');\n      scoreCredits.querySelector('.wcf-score-value').textContent = '$' + formatNumber(potentialCredit);\n      \n      const scoreGaps = document.getElementById('wcf-score-gaps');\n      scoreGaps.className = 'wcf-score-card ' + (gapCount >= 2 ? 'danger' : 'warning');\n      scoreGaps.querySelector('.wcf-score-value').textContent = provider.exclusions.length;\n      \n      const scoreLeverage = document.getElementById('wcf-score-leverage');\n      scoreLeverage.className = 'wcf-score-card success';\n      scoreLeverage.querySelector('.wcf-score-value').textContent = provider.leverage.length;\n\n      \/\/ Exclusions list\n      const exclusionsList = document.getElementById('wcf-exclusions-list');\n      exclusionsList.innerHTML = provider.exclusions.map(exc => \n        '<div class=\"wcf-finding\">' +\n          '<div class=\"wcf-finding-icon ' + exc.type + '\">' +\n            '<svg class=\"wcf-icon\"><use href=\"#wcf-icon-' + (exc.type === 'critical' ? 'x' : exc.type === 'warning' ? 'alert' : 'file') + '\"><\/use><\/svg>' +\n          '<\/div>' +\n          '<div>' +\n            '<h4>' + exc.title + '<\/h4>' +\n            '<p>' + exc.desc + '<\/p>' +\n          '<\/div>' +\n        '<\/div>'\n      ).join('');\n\n      \/\/ Credit breakdown\n      document.getElementById('wcf-total-credit').textContent = '$' + formatNumber(potentialCredit);\n      const creditBreakdown = document.getElementById('wcf-credit-breakdown');\n      let breakdownHtml = \n        '<div class=\"wcf-credit-row\">' +\n          '<span class=\"label\">Monthly Cloud Spend<\/span>' +\n          '<span><\/span>' +\n          '<span class=\"value\">$' + formatNumber(spend) + '<\/span>' +\n        '<\/div>' +\n        '<div class=\"wcf-credit-row\">' +\n          '<span class=\"label\">Calculated Uptime<\/span>' +\n          '<span class=\"percent\">' + uptimePercent.toFixed(3) + '%<\/span>' +\n          '<span><\/span>' +\n        '<\/div>' +\n        '<div class=\"wcf-credit-row\">' +\n          '<span class=\"label\">Credit Percentage (per SLA)<\/span>' +\n          '<span class=\"percent\">' + creditPercent + '%<\/span>' +\n          '<span class=\"value\">$' + formatNumber(potentialCredit) + '<\/span>' +\n        '<\/div>';\n      \n      if (businessImpact > 0) {\n        breakdownHtml += \n          '<div class=\"wcf-credit-row\" style=\"border-top: 1px solid rgba(255,255,255,0.1); margin-top: 8px; padding-top: 20px;\">' +\n            '<span class=\"label\">Your Actual Business Impact<\/span>' +\n            '<span><\/span>' +\n            '<span style=\"color: #dc2626; font-weight: 700;\">$' + formatNumber(businessImpact) + '<\/span>' +\n          '<\/div>' +\n          '<div class=\"wcf-credit-row\">' +\n            '<span class=\"label\">Gap: Impact vs. Compensation<\/span>' +\n            '<span><\/span>' +\n            '<span style=\"color: #dc2626; font-weight: 700;\">$' + formatNumber(businessImpact - potentialCredit) + '<\/span>' +\n          '<\/div>';\n      }\n      creditBreakdown.innerHTML = breakdownHtml;\n\n      \/\/ Credit notes\n      const creditNotes = document.getElementById('wcf-credit-notes');\n      const notesHtml = [];\n      \n      notesHtml.push({\n        type: 'warning',\n        title: provider.claimWindow + '-Day Claim Window',\n        desc: 'Credits must be claimed within ' + provider.claimWindow + ' days of the incident. Many organizations miss this deadline.'\n      });\n      \n      if (provider.maxCredit < 100) {\n        notesHtml.push({\n          type: 'critical',\n          title: provider.maxCredit + '% Maximum Credit Cap',\n          desc: 'Even complete downtime cannot yield more than ' + provider.maxCredit + '% of your monthly bill in credits.'\n        });\n      }\n      \n      if (multicloud === 'single') {\n        notesHtml.push({\n          type: 'critical',\n          title: 'Single Provider Risk',\n          desc: 'Without backup infrastructure, you have no failover option during provider outages regardless of SLA credits.'\n        });\n      }\n      \n      if (workload === 'ai') {\n        notesHtml.push({\n          type: 'warning',\n          title: 'AI Workload SLA Gap',\n          desc: 'AI\/ML services typically carry lower SLA guarantees (99.5-99.9%) than core compute services.'\n        });\n      }\n      \n      creditNotes.innerHTML = notesHtml.map(note => \n        '<div class=\"wcf-finding\">' +\n          '<div class=\"wcf-finding-icon ' + note.type + '\">' +\n            '<svg class=\"wcf-icon\"><use href=\"#wcf-icon-' + (note.type === 'critical' ? 'x' : 'alert') + '\"><\/use><\/svg>' +\n          '<\/div>' +\n          '<div>' +\n            '<h4>' + note.title + '<\/h4>' +\n            '<p>' + note.desc + '<\/p>' +\n          '<\/div>' +\n        '<\/div>'\n      ).join('');\n\n      \/\/ Leverage points\n      const leverageList = document.getElementById('wcf-leverage-list');\n      leverageList.innerHTML = provider.leverage.map(lev => \n        '<div class=\"wcf-leverage-card\">' +\n          '<h4>' +\n            '<span class=\"wcf-leverage-icon\">' +\n              '<svg class=\"wcf-icon\"><use href=\"#wcf-icon-' + lev.icon + '\"><\/use><\/svg>' +\n            '<\/span>' +\n            lev.title +\n          '<\/h4>' +\n          '<p>' + lev.desc + '<\/p>' +\n        '<\/div>'\n      ).join('');\n\n      \/\/ Show results\n      stepInput.classList.add('wcf-hidden');\n      stepResults.classList.remove('wcf-hidden');\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    }\n\n    function formatNumber(num) {\n      if (num >= 1000000) return (num \/ 1000000).toFixed(1) + 'M';\n      if (num >= 1000) return (num \/ 1000).toFixed(1) + 'K';\n      return Math.round(num).toLocaleString();\n    }\n  })();\n  <\/script>\n<\/div>\n<!-- End SLA Contract Analyzer -->\n\n\n\n<div id=\"elemID031021\" style=\"line-height:16px;text-align:center;z-index:100000;\"><a title=\"wix guests ip\" href=\"https:\/\/www.tracemyip.org\/pv1-3-36447-2\"><img decoding=\"async\" src=\"\/\/s3.tracemyip.org\/vLg\/1217\/4684NR-IPIB\/57003\/9\/njsUrl\/\" alt=\"Wix guests ip\" referrerpolicy=\"no-referrer-when-downgrade\" style=\"border:0px;\"><\/a><div><a href=\"https:\/\/www.tracemyip.org\/pv1-3-36447-2\">ip traffic<\/a><\/div><\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Free Analysis Tool SLA Contract Analyzer Discover hidden gaps in your cloud provider agreements, calculate credits you may be owed, and uncover negotiation leverage points aligned with the Four Pillars of Sovereignty. 1 Select Your Primary Cloud Provider AWS Amazon AWS Az Microsoft Azure G Google Cloud CF Cloudflare Or Oracle Cloud 2 Your Cloud [&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-703","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=703"}],"version-history":[{"count":4,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/703\/revisions"}],"predecessor-version":[{"id":740,"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=\/wp\/v2\/pages\/703\/revisions\/740"}],"wp:attachment":[{"href":"https:\/\/www.opey.org\/opeyit\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}