{"id":362,"date":"2026-05-29T18:31:28","date_gmt":"2026-05-29T18:31:28","guid":{"rendered":"https:\/\/www.dariba.co\/?page_id=362"},"modified":"2026-05-29T18:31:28","modified_gmt":"2026-05-29T18:31:28","slug":"vat-registration-assessment","status":"publish","type":"page","link":"https:\/\/www.dariba.co\/?page_id=362","title":{"rendered":"Saudi VATRegistration &amp; FilingChecker Tool"},"content":{"rendered":"\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Saudi VAT Registration &amp; Filing Checker | Dariba.co<\/title>\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@400;500;600&amp;family=DM+Sans:wght@300;400;500&amp;family=DM+Mono:wght@400;500&amp;display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --brand-dark: #1a4a7a;\n    --brand-navy: #1B2F45;\n    --brand-teal: #b8860b;\n    --brand-teal-light: #E0F5EF;\n    --brand-teal-mid: #009668;\n    --brand-gold: #C8973A;\n    --brand-gold-light: #FDF5E6;\n    --brand-red: #C0392B;\n    --brand-red-light: #FDEEEC;\n    --brand-amber: #D4881A;\n    --brand-amber-light: #FEF6E4;\n    --text-primary: #0D1B2A;\n    --text-secondary: #4A5568;\n    --text-muted: #718096;\n    --border: #E2E8F0;\n    --border-strong: #CBD5E0;\n    --bg-page: #F7F8FA;\n    --bg-white: #FFFFFF;\n    --bg-section: #F0F4F8;\n    --radius-sm: 6px;\n    --radius-md: 10px;\n    --radius-lg: 16px;\n    --radius-xl: 24px;\n    --shadow-card: 0 2px 12px rgba(13,27,42,0.08), 0 1px 3px rgba(13,27,42,0.06);\n    --shadow-elevated: 0 8px 32px rgba(13,27,42,0.12), 0 2px 8px rgba(13,27,42,0.08);\n    --transition: all 0.22s cubic-bezier(0.4, 0, 0.2, 1);\n  }\n\n  * { box-sizing: border-box; margin: 0; padding: 0; }\n\n  body {\n    font-family: 'DM Sans', sans-serif;\n    background: var(--bg-page);\n    color: var(--text-primary);\n    min-height: 100vh;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  \/* \u2500\u2500 HERO HEADER \u2500\u2500 *\/\n  .tool-header {\n    background: var(--brand-dark);\n    padding: 52px 40px 44px;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .tool-header::before {\n    content: '';\n    position: absolute;\n    top: -60px; right: -80px;\n    width: 340px; height: 340px;\n    border-radius: 50%;\n    background: radial-gradient(circle, rgba(0,168,120,0.18) 0%, transparent 70%);\n    pointer-events: none;\n  }\n\n  .tool-header::after {\n    content: '';\n    position: absolute;\n    bottom: -40px; left: 20%;\n    width: 200px; height: 200px;\n    border-radius: 50%;\n    background: radial-gradient(circle, rgba(200,151,58,0.10) 0%, transparent 70%);\n    pointer-events: none;\n  }\n\n  .header-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    background: rgba(0,168,120,0.15);\n    border: 1px solid rgba(0,168,120,0.35);\n    color: #4DD9A8;\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    padding: 5px 12px;\n    border-radius: 100px;\n    margin-bottom: 20px;\n  }\n\n  .header-badge::before {\n    content: '';\n    width: 6px; height: 6px;\n    border-radius: 50%;\n    background: #4DD9A8;\n    animation: pulse-dot 2s ease-in-out infinite;\n  }\n\n  @keyframes pulse-dot {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50% { opacity: 0.5; transform: scale(0.7); }\n  }\n\n  .tool-title {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(26px, 4vw, 38px);\n    font-weight: 500;\n    color: #FFFFFF;\n    line-height: 1.25;\n    margin-bottom: 12px;\n    max-width: 620px;\n  }\n\n  .tool-title span {\n    color: var(--brand-teal);\n  }\n\n  .tool-subtitle {\n    font-size: 15px;\n    color: rgba(255,255,255,0.55);\n    font-weight: 300;\n    line-height: 1.65;\n    max-width: 540px;\n    margin-bottom: 28px;\n  }\n\n  .regulation-tags {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n  }\n\n  .reg-tag {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    color: rgba(255,255,255,0.4);\n    background: rgba(255,255,255,0.06);\n    border: 1px solid rgba(255,255,255,0.1);\n    padding: 4px 10px;\n    border-radius: 4px;\n    letter-spacing: 0.03em;\n  }\n\n  \/* \u2500\u2500 PROGRESS TRACK \u2500\u2500 *\/\n  .progress-track {\n    background: var(--bg-white);\n    border-bottom: 1px solid var(--border);\n    padding: 0 40px;\n    display: flex;\n    align-items: stretch;\n    gap: 0;\n    position: sticky;\n    top: 0;\n    z-index: 100;\n    box-shadow: 0 1px 4px rgba(0,0,0,0.05);\n  }\n\n  .step-tab {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n    padding: 16px 20px 14px;\n    border-bottom: 2.5px solid transparent;\n    cursor: default;\n    transition: var(--transition);\n    position: relative;\n  }\n\n  .step-tab.active {\n    border-bottom-color: var(--brand-teal);\n  }\n\n  .step-tab.completed {\n    border-bottom-color: var(--brand-teal);\n    cursor: pointer;\n  }\n\n  .step-tab.completed:hover .step-num {\n    background: var(--brand-teal-mid);\n  }\n\n  .step-num {\n    width: 24px; height: 24px;\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 11px;\n    font-weight: 500;\n    transition: var(--transition);\n  }\n\n  .step-tab.pending .step-num {\n    background: var(--bg-section);\n    color: var(--text-muted);\n    border: 1.5px solid var(--border);\n  }\n\n  .step-tab.active .step-num {\n    background: var(--brand-teal);\n    color: white;\n  }\n\n  .step-tab.completed .step-num {\n    background: var(--brand-teal);\n    color: white;\n  }\n\n  .step-tab.completed .step-num::after {\n    content: '\u2713';\n  }\n\n  .step-tab.completed .step-num .step-n {\n    display: none;\n  }\n\n  .step-label {\n    font-size: 13px;\n    font-weight: 400;\n    color: var(--text-muted);\n    white-space: nowrap;\n  }\n\n  .step-tab.active .step-label,\n  .step-tab.completed .step-label {\n    color: var(--text-primary);\n    font-weight: 500;\n  }\n\n  .step-sep {\n    display: flex;\n    align-items: center;\n    padding: 0 4px;\n    color: var(--border-strong);\n    font-size: 16px;\n    flex-shrink: 0;\n  }\n\n  \/* \u2500\u2500 MAIN CONTENT \u2500\u2500 *\/\n  .tool-body {\n    max-width: 780px;\n    margin: 0 auto;\n    padding: 40px 24px 80px;\n  }\n\n  \/* \u2500\u2500 STEP PANELS \u2500\u2500 *\/\n  .step-panel {\n    display: none;\n    animation: fadeSlideUp 0.3s ease;\n  }\n\n  .step-panel.active {\n    display: block;\n  }\n\n  @keyframes fadeSlideUp {\n    from { opacity: 0; transform: translateY(12px); }\n    to { opacity: 1; transform: translateY(0); }\n  }\n\n  \/* \u2500\u2500 SECTION LABEL \u2500\u2500 *\/\n  .section-eyebrow {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    font-weight: 500;\n    letter-spacing: 0.12em;\n    text-transform: uppercase;\n    color: var(--brand-teal);\n    margin-bottom: 6px;\n  }\n\n  .section-heading {\n    font-family: 'Playfair Display', serif;\n    font-size: 22px;\n    font-weight: 500;\n    color: var(--text-primary);\n    margin-bottom: 6px;\n  }\n\n  .section-desc {\n    font-size: 14px;\n    color: var(--text-secondary);\n    line-height: 1.6;\n    margin-bottom: 28px;\n  }\n\n  \/* \u2500\u2500 QUESTION CARD \u2500\u2500 *\/\n  .question-card {\n    background: var(--bg-white);\n    border: 1px solid var(--border);\n    border-radius: var(--radius-lg);\n    padding: 28px 32px;\n    margin-bottom: 20px;\n    box-shadow: var(--shadow-card);\n    transition: var(--transition);\n  }\n\n  .question-card:hover {\n    border-color: var(--border-strong);\n    box-shadow: var(--shadow-elevated);\n  }\n\n  .q-number {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    letter-spacing: 0.08em;\n    color: var(--text-muted);\n    text-transform: uppercase;\n    margin-bottom: 8px;\n  }\n\n  .q-text {\n    font-size: 16px;\n    font-weight: 500;\n    color: var(--text-primary);\n    line-height: 1.5;\n    margin-bottom: 6px;\n  }\n\n  .q-hint {\n    font-size: 12.5px;\n    color: var(--text-muted);\n    line-height: 1.55;\n    margin-bottom: 20px;\n    padding-left: 12px;\n    border-left: 2px solid var(--border);\n  }\n\n  .q-ref {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    color: var(--brand-teal);\n    background: var(--brand-teal-light);\n    padding: 2px 8px;\n    border-radius: 4px;\n    display: inline-block;\n    margin-bottom: 18px;\n  }\n\n  \/* \u2500\u2500 RADIO OPTIONS \u2500\u2500 *\/\n  .radio-group {\n    display: flex;\n    flex-direction: column;\n    gap: 10px;\n  }\n\n  .radio-option {\n    display: flex;\n    align-items: center;\n    gap: 14px;\n    padding: 14px 18px;\n    border: 1.5px solid var(--border);\n    border-radius: var(--radius-md);\n    cursor: pointer;\n    transition: var(--transition);\n    background: var(--bg-page);\n    user-select: none;\n  }\n\n  .radio-option:hover {\n    border-color: var(--brand-teal);\n    background: var(--brand-teal-light);\n  }\n\n  .radio-option.selected {\n    border-color: var(--brand-teal);\n    background: var(--brand-teal-light);\n  }\n\n  .radio-option input[type=\"radio\"] {\n    appearance: none;\n    width: 18px; height: 18px;\n    border-radius: 50%;\n    border: 2px solid var(--border-strong);\n    transition: var(--transition);\n    flex-shrink: 0;\n    position: relative;\n  }\n\n  .radio-option.selected input[type=\"radio\"] {\n    border-color: var(--brand-teal);\n    background: var(--brand-teal);\n    box-shadow: 0 0 0 3px rgba(0,168,120,0.15);\n  }\n\n  .radio-option.selected input[type=\"radio\"]::after {\n    content: '';\n    position: absolute;\n    top: 50%; left: 50%;\n    transform: translate(-50%, -50%);\n    width: 6px; height: 6px;\n    border-radius: 50%;\n    background: white;\n  }\n\n  .radio-label {\n    font-size: 14.5px;\n    font-weight: 400;\n    color: var(--text-primary);\n    flex: 1;\n  }\n\n  .radio-option.selected .radio-label {\n    font-weight: 500;\n    color: var(--brand-teal-mid);\n  }\n\n  .radio-sublabel {\n    font-size: 12px;\n    color: var(--text-muted);\n    margin-top: 2px;\n  }\n\n  \/* \u2500\u2500 SAR INPUT \u2500\u2500 *\/\n  .sar-input-wrap {\n    position: relative;\n    display: flex;\n    align-items: center;\n  }\n\n  .sar-prefix {\n    position: absolute;\n    left: 16px;\n    font-family: 'DM Mono', monospace;\n    font-size: 13px;\n    font-weight: 500;\n    color: var(--text-muted);\n    pointer-events: none;\n    z-index: 2;\n  }\n\n  .sar-input {\n    width: 100%;\n    padding: 14px 16px 14px 60px;\n    font-family: 'DM Mono', monospace;\n    font-size: 18px;\n    font-weight: 500;\n    color: var(--text-primary);\n    background: var(--bg-page);\n    border: 1.5px solid var(--border);\n    border-radius: var(--radius-md);\n    outline: none;\n    transition: var(--transition);\n    appearance: textfield;\n    -moz-appearance: textfield;\n  }\n\n  .sar-input::-webkit-outer-spin-button,\n  .sar-input::-webkit-inner-spin-button { -webkit-appearance: none; }\n\n  .sar-input:focus {\n    border-color: var(--brand-teal);\n    background: var(--bg-white);\n    box-shadow: 0 0 0 3px rgba(0,168,120,0.12);\n  }\n\n  .sar-input.has-value {\n    border-color: var(--brand-teal);\n    background: var(--bg-white);\n  }\n\n  .sar-formatted {\n    margin-top: 6px;\n    font-size: 12px;\n    color: var(--text-muted);\n    min-height: 18px;\n    font-family: 'DM Mono', monospace;\n    letter-spacing: 0.02em;\n  }\n\n  .sar-formatted.active {\n    color: var(--brand-teal-mid);\n  }\n\n  \/* \u2500\u2500 THRESHOLD GAUGE \u2500\u2500 *\/\n  .threshold-gauge {\n    margin-top: 16px;\n    background: var(--bg-section);\n    border-radius: var(--radius-md);\n    padding: 14px 18px;\n    border: 1px solid var(--border);\n  }\n\n  .gauge-label {\n    display: flex;\n    justify-content: space-between;\n    font-size: 11px;\n    color: var(--text-muted);\n    margin-bottom: 8px;\n    font-family: 'DM Mono', monospace;\n  }\n\n  .gauge-track {\n    height: 6px;\n    background: var(--border);\n    border-radius: 3px;\n    overflow: visible;\n    position: relative;\n  }\n\n  .gauge-fill {\n    height: 100%;\n    border-radius: 3px;\n    transition: width 0.5s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s ease;\n    position: relative;\n  }\n\n  .gauge-markers {\n    position: relative;\n    height: 20px;\n    margin-top: 2px;\n  }\n\n  .gauge-marker {\n    position: absolute;\n    top: 0;\n    transform: translateX(-50%);\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 2px;\n  }\n\n  .gauge-marker-line {\n    width: 1px;\n    height: 8px;\n    background: var(--text-muted);\n  }\n\n  .gauge-marker-label {\n    font-family: 'DM Mono', monospace;\n    font-size: 9px;\n    color: var(--text-muted);\n    white-space: nowrap;\n    letter-spacing: 0.03em;\n  }\n\n  \/* \u2500\u2500 NAV BUTTONS \u2500\u2500 *\/\n  .nav-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    margin-top: 32px;\n    gap: 12px;\n  }\n\n  .btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    padding: 13px 24px;\n    border-radius: var(--radius-md);\n    font-family: 'DM Sans', sans-serif;\n    font-size: 14px;\n    font-weight: 500;\n    cursor: pointer;\n    transition: var(--transition);\n    border: none;\n    outline: none;\n    text-decoration: none;\n  }\n\n  .btn-primary {\n    background: var(--brand-teal);\n    color: white;\n  }\n\n  .btn-primary:hover {\n    background: var(--brand-teal-mid);\n    transform: translateY(-1px);\n    box-shadow: 0 4px 16px rgba(0,168,120,0.3);\n  }\n\n  .btn-primary:active { transform: translateY(0); }\n\n  .btn-primary:disabled {\n    background: var(--bg-section);\n    color: var(--text-muted);\n    cursor: not-allowed;\n    transform: none;\n    box-shadow: none;\n  }\n\n  .btn-ghost {\n    background: transparent;\n    color: var(--text-secondary);\n    border: 1.5px solid var(--border);\n  }\n\n  .btn-ghost:hover {\n    background: var(--bg-section);\n    border-color: var(--border-strong);\n  }\n\n  .btn-analyze {\n    background: var(--brand-dark);\n    color: white;\n    padding: 16px 32px;\n    font-size: 15px;\n    border-radius: var(--radius-md);\n    position: relative;\n    overflow: hidden;\n  }\n\n  .btn-analyze::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(135deg, transparent 0%, rgba(0,168,120,0.2) 100%);\n    opacity: 0;\n    transition: opacity 0.3s ease;\n  }\n\n  .btn-analyze:hover::before { opacity: 1; }\n  .btn-analyze:hover { transform: translateY(-2px); box-shadow: 0 6px 24px rgba(13,27,42,0.25); }\n\n  \/* \u2500\u2500 REGULATION PEEK PANEL \u2500\u2500 *\/\n  .reg-peek {\n    background: var(--brand-dark);\n    border-radius: var(--radius-md);\n    padding: 14px 18px;\n    margin-top: 14px;\n    border-left: 3px solid var(--brand-teal);\n  }\n\n  .reg-peek-title {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    color: rgba(255,255,255,0.4);\n    text-transform: uppercase;\n    letter-spacing: 0.08em;\n    margin-bottom: 6px;\n  }\n\n  .reg-peek-text {\n    font-size: 12.5px;\n    color: rgba(255,255,255,0.65);\n    line-height: 1.6;\n    font-style: italic;\n  }\n\n  .reg-peek-text strong {\n    color: #4DD9A8;\n    font-style: normal;\n    font-weight: 500;\n  }\n\n  \/* \u2500\u2500 ANALYSIS ANIMATION \u2500\u2500 *\/\n  .analyzing-overlay {\n    display: none;\n    position: fixed;\n    inset: 0;\n    background: rgba(13,27,42,0.92);\n    z-index: 9999;\n    align-items: center;\n    justify-content: center;\n    flex-direction: column;\n    gap: 24px;\n  }\n\n  .analyzing-overlay.show {\n    display: flex;\n    animation: fadeIn 0.3s ease;\n  }\n\n  @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\n\n  .analysis-spinner {\n    position: relative;\n    width: 72px; height: 72px;\n  }\n\n  .analysis-ring {\n    position: absolute;\n    inset: 0;\n    border-radius: 50%;\n    border: 2px solid transparent;\n  }\n\n  .analysis-ring-1 {\n    border-top-color: var(--brand-teal);\n    animation: spin 1s linear infinite;\n  }\n\n  .analysis-ring-2 {\n    inset: 8px;\n    border-right-color: var(--brand-gold);\n    animation: spin 1.5s linear infinite reverse;\n  }\n\n  .analysis-ring-3 {\n    inset: 16px;\n    border-bottom-color: rgba(0,168,120,0.4);\n    animation: spin 2s linear infinite;\n  }\n\n  @keyframes spin { to { transform: rotate(360deg); } }\n\n  .analysis-steps {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 8px;\n  }\n\n  .analysis-step {\n    font-size: 13px;\n    color: rgba(255,255,255,0.4);\n    font-family: 'DM Mono', monospace;\n    letter-spacing: 0.05em;\n    transition: all 0.3s ease;\n  }\n\n  .analysis-step.running {\n    color: #4DD9A8;\n    font-weight: 500;\n  }\n\n  .analysis-step.done {\n    color: rgba(77,217,168,0.5);\n  }\n\n  \/* \u2500\u2500 RESULTS PANEL \u2500\u2500 *\/\n  .result-hero {\n    background: var(--brand-dark);\n    border-radius: var(--radius-xl);\n    padding: 36px 40px;\n    margin-bottom: 24px;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .result-hero::before {\n    content: '';\n    position: absolute;\n    top: -80px; right: -60px;\n    width: 280px; height: 280px;\n    border-radius: 50%;\n    background: radial-gradient(circle, rgba(0,168,120,0.2) 0%, transparent 70%);\n    pointer-events: none;\n  }\n\n  .result-meta {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    letter-spacing: 0.1em;\n    color: rgba(255,255,255,0.35);\n    text-transform: uppercase;\n    margin-bottom: 12px;\n  }\n\n  .result-verdict {\n    font-family: 'Playfair Display', serif;\n    font-size: clamp(20px, 3.5vw, 30px);\n    font-weight: 500;\n    color: white;\n    line-height: 1.25;\n    margin-bottom: 16px;\n  }\n\n  .result-verdict .verdict-highlight {\n    color: #4DD9A8;\n  }\n\n  .result-verdict .verdict-warning {\n    color: #F6C354;\n  }\n\n  .result-verdict .verdict-danger {\n    color: #FF8A80;\n  }\n\n  .result-summary {\n    font-size: 14px;\n    color: rgba(255,255,255,0.6);\n    line-height: 1.7;\n    max-width: 560px;\n    margin-bottom: 24px;\n  }\n\n  .result-badges {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n  }\n\n  .result-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    padding: 8px 16px;\n    border-radius: 100px;\n    font-size: 12px;\n    font-weight: 500;\n  }\n\n  .badge-mandatory {\n    background: rgba(192,57,43,0.25);\n    border: 1px solid rgba(192,57,43,0.5);\n    color: #FF8A80;\n  }\n\n  .badge-voluntary {\n    background: rgba(200,151,58,0.2);\n    border: 1px solid rgba(200,151,58,0.4);\n    color: #F6C354;\n  }\n\n  .badge-clear {\n    background: rgba(0,168,120,0.15);\n    border: 1px solid rgba(0,168,120,0.35);\n    color: #4DD9A8;\n  }\n\n  .badge-filing {\n    background: rgba(255,255,255,0.08);\n    border: 1px solid rgba(255,255,255,0.15);\n    color: rgba(255,255,255,0.8);\n  }\n\n  \/* \u2500\u2500 DETAIL CARDS \u2500\u2500 *\/\n  .detail-grid {\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n    gap: 16px;\n    margin-bottom: 20px;\n  }\n\n  .detail-card {\n    background: var(--bg-white);\n    border: 1px solid var(--border);\n    border-radius: var(--radius-lg);\n    padding: 24px;\n    box-shadow: var(--shadow-card);\n  }\n\n  .detail-card-icon {\n    width: 40px; height: 40px;\n    border-radius: var(--radius-md);\n    display: flex; align-items: center; justify-content: center;\n    font-size: 20px;\n    margin-bottom: 14px;\n  }\n\n  .icon-teal { background: var(--brand-teal-light); }\n  .icon-gold { background: var(--brand-gold-light); }\n  .icon-red { background: var(--brand-red-light); }\n  .icon-amber { background: var(--brand-amber-light); }\n\n  .detail-card-title {\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    color: var(--text-muted);\n    margin-bottom: 6px;\n    font-family: 'DM Mono', monospace;\n  }\n\n  .detail-card-value {\n    font-family: 'Playfair Display', serif;\n    font-size: 20px;\n    color: var(--text-primary);\n    margin-bottom: 8px;\n    line-height: 1.3;\n  }\n\n  .detail-card-value.status-mandatory { color: var(--brand-red); }\n  .detail-card-value.status-voluntary { color: var(--brand-gold); }\n  .detail-card-value.status-exempt { color: var(--brand-teal-mid); }\n  .detail-card-value.status-not-required { color: var(--brand-teal-mid); }\n\n  .detail-card-desc {\n    font-size: 13px;\n    color: var(--text-secondary);\n    line-height: 1.6;\n  }\n\n  \/* \u2500\u2500 LOGIC TRAIL \u2500\u2500 *\/\n  .logic-trail {\n    background: var(--bg-white);\n    border: 1px solid var(--border);\n    border-radius: var(--radius-lg);\n    overflow: hidden;\n    margin-bottom: 20px;\n    box-shadow: var(--shadow-card);\n  }\n\n  .logic-trail-header {\n    padding: 18px 24px;\n    border-bottom: 1px solid var(--border);\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    cursor: pointer;\n    user-select: none;\n    transition: background 0.15s;\n  }\n\n  .logic-trail-header:hover { background: var(--bg-section); }\n\n  .logic-trail-title {\n    display: flex;\n    align-items: center;\n    gap: 10px;\n  }\n\n  .logic-trail-title-text {\n    font-size: 14px;\n    font-weight: 500;\n    color: var(--text-primary);\n  }\n\n  .logic-trail-subtitle {\n    font-size: 12px;\n    color: var(--text-muted);\n    margin-top: 2px;\n  }\n\n  .logic-expand-icon {\n    font-size: 20px;\n    color: var(--text-muted);\n    transition: transform 0.25s ease;\n  }\n\n  .logic-trail-body {\n    display: none;\n    padding: 20px 24px;\n  }\n\n  .logic-trail-body.open { display: block; }\n\n  .logic-trail-header.open .logic-expand-icon {\n    transform: rotate(180deg);\n  }\n\n  .logic-step {\n    display: flex;\n    gap: 16px;\n    margin-bottom: 16px;\n    position: relative;\n  }\n\n  .logic-step:not(:last-child)::before {\n    content: '';\n    position: absolute;\n    left: 15px; top: 32px;\n    width: 1px;\n    height: calc(100% + 4px);\n    background: var(--border);\n  }\n\n  .logic-step-dot {\n    width: 30px; height: 30px;\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 12px;\n    font-weight: 500;\n    flex-shrink: 0;\n    margin-top: 2px;\n  }\n\n  .logic-step-dot.pass {\n    background: var(--brand-teal-light);\n    color: var(--brand-teal-mid);\n  }\n\n  .logic-step-dot.fail {\n    background: var(--brand-red-light);\n    color: var(--brand-red);\n  }\n\n  .logic-step-dot.info {\n    background: var(--brand-gold-light);\n    color: var(--brand-gold);\n  }\n\n  .logic-step-dot.neutral {\n    background: var(--bg-section);\n    color: var(--text-muted);\n  }\n\n  .logic-step-content {}\n\n  .logic-step-article {\n    font-family: 'DM Mono', monospace;\n    font-size: 10px;\n    color: var(--brand-teal);\n    margin-bottom: 3px;\n    letter-spacing: 0.05em;\n  }\n\n  .logic-step-rule {\n    font-size: 13.5px;\n    font-weight: 500;\n    color: var(--text-primary);\n    margin-bottom: 3px;\n    line-height: 1.4;\n  }\n\n  .logic-step-outcome {\n    font-size: 12.5px;\n    color: var(--text-secondary);\n    line-height: 1.5;\n  }\n\n  \/* \u2500\u2500 THRESHOLDS TABLE \u2500\u2500 *\/\n  .thresholds-box {\n    background: var(--bg-section);\n    border: 1px solid var(--border);\n    border-radius: var(--radius-lg);\n    padding: 22px 26px;\n    margin-bottom: 20px;\n  }\n\n  .thresholds-title {\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 0.08em;\n    text-transform: uppercase;\n    color: var(--text-muted);\n    margin-bottom: 16px;\n    font-family: 'DM Mono', monospace;\n  }\n\n  .threshold-row {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 10px 0;\n    border-bottom: 1px dashed var(--border);\n  }\n\n  .threshold-row:last-child { border-bottom: none; }\n\n  .threshold-row-label {\n    font-size: 13px;\n    color: var(--text-secondary);\n  }\n\n  .threshold-row-value {\n    font-family: 'DM Mono', monospace;\n    font-size: 13px;\n    font-weight: 500;\n    color: var(--text-primary);\n  }\n\n  .threshold-row-value.user-val {\n    color: var(--brand-teal-mid);\n  }\n\n  .threshold-row-value.exceeds {\n    color: var(--brand-red);\n  }\n\n  \/* \u2500\u2500 CAVEAT \u2500\u2500 *\/\n  .caveat-box {\n    background: var(--bg-section);\n    border: 1px solid var(--border);\n    border-left: 4px solid var(--brand-gold);\n    border-radius: var(--radius-md);\n    padding: 20px 24px;\n    margin-bottom: 20px;\n    display: flex;\n    gap: 16px;\n    align-items: flex-start;\n  }\n\n  .caveat-icon {\n    font-size: 22px;\n    flex-shrink: 0;\n    margin-top: 1px;\n  }\n\n  .caveat-title {\n    font-size: 12px;\n    font-weight: 500;\n    text-transform: uppercase;\n    letter-spacing: 0.07em;\n    color: var(--brand-gold);\n    margin-bottom: 6px;\n    font-family: 'DM Mono', monospace;\n  }\n\n  .caveat-text {\n    font-size: 13px;\n    color: var(--text-secondary);\n    line-height: 1.65;\n  }\n\n  .caveat-text a {\n    color: var(--brand-teal);\n    text-decoration: none;\n  }\n\n  \/* \u2500\u2500 FOOTER ACTIONS \u2500\u2500 *\/\n  .result-actions {\n    display: flex;\n    gap: 12px;\n    flex-wrap: wrap;\n    margin-bottom: 40px;\n  }\n\n  .btn-outline {\n    background: transparent;\n    color: var(--text-secondary);\n    border: 1.5px solid var(--border);\n  }\n\n  .btn-outline:hover {\n    background: var(--bg-section);\n    border-color: var(--border-strong);\n  }\n\n  \/* \u2500\u2500 FOOTER \u2500\u2500 *\/\n  .tool-footer {\n    background: var(--brand-dark);\n    padding: 24px 40px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    flex-wrap: wrap;\n    gap: 12px;\n  }\n\n  .footer-brand {\n    font-family: 'Playfair Display', serif;\n    font-size: 16px;\n    color: white;\n    font-weight: 500;\n  }\n\n  .footer-brand span { color: var(--brand-teal); }\n\n  .footer-note {\n    font-size: 12px;\n    color: rgba(255,255,255,0.3);\n  }\n\n  \/* \u2500\u2500 RESPONSIVE \u2500\u2500 *\/\n  @media (max-width: 600px) {\n    .tool-header { padding: 36px 20px 32px; }\n    .progress-track { padding: 0 16px; overflow-x: auto; }\n    .tool-body { padding: 28px 16px 60px; }\n    .question-card { padding: 20px 20px; }\n    .result-hero { padding: 24px 22px; }\n    .step-label { display: none; }\n    .tool-footer { padding: 18px 20px; }\n  }\n\n  \/* \u2500\u2500 VALIDATION \u2500\u2500 *\/\n  .validation-msg {\n    font-size: 12.5px;\n    color: var(--brand-red);\n    margin-top: 8px;\n    display: none;\n  }\n\n  .validation-msg.show { display: block; }\n\n  .inline-chip {\n    display: inline-flex;\n    align-items: center;\n    gap: 4px;\n    background: var(--brand-teal-light);\n    color: var(--brand-teal-mid);\n    font-size: 11px;\n    font-weight: 500;\n    padding: 3px 9px;\n    border-radius: 100px;\n    font-family: 'DM Mono', monospace;\n  }\n\n  .inline-chip.red {\n    background: var(--brand-red-light);\n    color: var(--brand-red);\n  }\n\n  \/* \u2500\u2500 BACK TO TOP \u2500\u2500 *\/\n  #reset-btn {\n    display: none;\n  }\n<\/style>\n\n\n\n<!-- ANALYZING OVERLAY -->\n<div class=\"analyzing-overlay\" id=\"analyzingOverlay\">\n  <div class=\"analysis-spinner\">\n    <div class=\"analysis-ring analysis-ring-1\"><\/div>\n    <div class=\"analysis-ring analysis-ring-2\"><\/div>\n    <div class=\"analysis-ring analysis-ring-3\"><\/div>\n  <\/div>\n  <div class=\"analysis-steps\">\n    <div class=\"analysis-step\" id=\"astep1\">Checking residency classification&#8230;<\/div>\n    <div class=\"analysis-step\" id=\"astep2\">Applying Article 3 \u2014 Past Supplies Test&#8230;<\/div>\n    <div class=\"analysis-step\" id=\"astep3\">Applying Article 4 \u2014 Future Supplies Test&#8230;<\/div>\n    <div class=\"analysis-step\" id=\"astep4\">Article 9 Zero-Rated Exemption Check&#8230;<\/div>\n    <div class=\"analysis-step\" id=\"astep5\">Article 7 Voluntary Registration Test&#8230;<\/div>\n    <div class=\"analysis-step\" id=\"astep6\">Article 58 \u2014 Determining Filing Frequency&#8230;<\/div>\n  <\/div>\n<\/div>\n\n<!-- HEADER -->\n<header class=\"tool-header\">\n  <div class=\"header-badge\">Simplified self assessment<\/div>\n  <h1 class=\"tool-title\">Saudi VAT<br><span>Registration &amp; Filing<\/span><br>Checker<\/h1>\n  <p class=\"tool-subtitle\">Answer a few questions. The tool maps your answers against the ZATCA VAT Implementing Regulations \u2014 Articles 3, 4, 7, 9 and 58 \u2014 and returns your registration obligation and filing frequency.<\/p>\n  <div class=\"regulation-tags\">\n    <span class=\"reg-tag\">Art. 3 \u2014 Past Supplies<\/span>\n    <span class=\"reg-tag\">Art. 4 \u2014 Future Supplies<\/span>\n    <span class=\"reg-tag\">Art. 7 \u2014 Voluntary<\/span>\n    <span class=\"reg-tag\">Art. 9 \u2014 Zero-Rated Exception<\/span>\n    <span class=\"reg-tag\">Art. 58 \u2014 Tax Period<\/span>\n  <\/div>\n<\/header>\n\n<!-- PROGRESS -->\n<nav class=\"progress-track\" id=\"progressTrack\" aria-label=\"Tool steps\">\n  <div class=\"step-tab active\" id=\"tab1\">\n    <div class=\"step-num\"><span class=\"step-n\">1<\/span><\/div>\n    <span class=\"step-label\">Business Profile<\/span>\n  <\/div>\n  <div class=\"step-sep\">\u203a<\/div>\n  <div class=\"step-tab pending\" id=\"tab2\">\n    <div class=\"step-num\"><span class=\"step-n\">2<\/span><\/div>\n    <span class=\"step-label\">Supply Values<\/span>\n  <\/div>\n  <div class=\"step-sep\">\u203a<\/div>\n  <div class=\"step-tab pending\" id=\"tab3\">\n    <div class=\"step-num\"><span class=\"step-n\">3<\/span><\/div>\n    <span class=\"step-label\">Supply Nature<\/span>\n  <\/div>\n  <div class=\"step-sep\">\u203a<\/div>\n  <div class=\"step-tab pending\" id=\"tab4\">\n    <div class=\"step-num\"><span class=\"step-n\">4<\/span><\/div>\n    <span class=\"step-label\">Your Results<\/span>\n  <\/div>\n<\/nav>\n\n<!-- BODY -->\n<main class=\"tool-body\">\n\n  <!-- STEP 1: Business Profile -->\n  <section class=\"step-panel active\" id=\"step1\">\n    <div class=\"section-eyebrow\">Step 1 of 3<\/div>\n    <h2 class=\"section-heading\">Business Profile<\/h2>\n    <p class=\"section-desc\">Your registration pathway depends first on where your business is resident. This determines which articles of the ZATCA regulations apply.<\/p>\n\n    <div class=\"question-card\">\n      <div class=\"q-number\">Question 1 \/ 2<\/div>\n      <p class=\"q-text\">Where is your business established?<\/p>\n      <p class=\"q-hint\">Residency in the Kingdom means you have a permanent establishment, fixed place of business, or habitual place of management in Saudi Arabia.<\/p>\n      <div class=\"q-ref\">Art. 2 \u00b7 Art. 5 \u00b7 VAT Implementing Regulations<\/div>\n      <div class=\"radio-group\" id=\"residency-group\">\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'residency','resident')\">\n          <input type=\"radio\" name=\"residency\" value=\"resident\">\n          <div>\n            <div class=\"radio-label\">Resident in Saudi Arabia<\/div>\n            <div class=\"radio-sublabel\">Established or has a permanent place of business in the Kingdom<\/div>\n          <\/div>\n        <\/label>\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'residency','nonresident')\">\n          <input type=\"radio\" name=\"residency\" value=\"nonresident\">\n          <div>\n            <div class=\"radio-label\">Non-Resident<\/div>\n            <div class=\"radio-sublabel\">No establishment in KSA but makes or receives taxable supplies in the Kingdom<\/div>\n          <\/div>\n        <\/label>\n      <\/div>\n    <\/div>\n\n    <div class=\"question-card\" id=\"q-entity\" style=\"display:none;\">\n      <div class=\"q-number\">Question 2 \/ 2<\/div>\n      <p class=\"q-text\">What type of economic activity do you conduct?<\/p>\n      <p class=\"q-hint\">Government bodies acting as public authorities (meeting all three conditions in Art. 9 Para 5) fall outside the scope of VAT registration.<\/p>\n      <div class=\"q-ref\">Art. 9 Para 5 \u00b7 Art. 9 Para 6<\/div>\n      <div class=\"radio-group\" id=\"entity-group\">\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'entity','commercial')\">\n          <input type=\"radio\" name=\"entity\" value=\"commercial\">\n          <div>\n            <div class=\"radio-label\">Commercial \/ Business Entity<\/div>\n            <div class=\"radio-sublabel\">Company, sole proprietor, partnership, or individual conducting economic activity independently<\/div>\n          <\/div>\n        <\/label>\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'entity','govt_commercial')\">\n          <input type=\"radio\" name=\"entity\" value=\"govt_commercial\">\n          <div>\n            <div class=\"radio-label\">Government Entity \u2014 acting commercially<\/div>\n            <div class=\"radio-sublabel\">Government body operating on commercial\/economic standards or in competition with the private sector<\/div>\n          <\/div>\n        <\/label>\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'entity','govt_authority')\">\n          <input type=\"radio\" name=\"entity\" value=\"govt_authority\">\n          <div>\n            <div class=\"radio-label\">Government Entity \u2014 acting as public authority<\/div>\n            <div class=\"radio-sublabel\">Has legal instrument, does not act commercially, and exercises the activity exclusively without private sector competition<\/div>\n          <\/div>\n        <\/label>\n      <\/div>\n    <\/div>\n\n    <div class=\"nav-row\">\n      <span><\/span>\n      <button class=\"btn btn-primary\" id=\"step1-next\" onclick=\"goStep(2)\" disabled=\"\">Continue \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- STEP 2: Supply Values -->\n  <section class=\"step-panel\" id=\"step2\">\n    <div class=\"section-eyebrow\">Step 2 of 3<\/div>\n    <h2 class=\"section-heading\">Supply Values<\/h2>\n    <p class=\"section-desc\">Enter your taxable supplies \u2014 this includes standard-rated (15%) and zero-rated supplies. Exempt supplies and capital asset disposals are excluded from these figures.<\/p>\n\n    <div class=\"question-card\" id=\"q-past-supplies\">\n      <div class=\"q-number\">Question 3 \/ 5<\/div>\n      <p class=\"q-text\">Total value of taxable supplies made in the past 12 months<\/p>\n      <p class=\"q-hint\">Include all taxable supplies (standard-rated and zero-rated). Exclude: exempt supplies (e.g. bare land sales, residential leases, financial services with implicit margin), and any capital asset disposals used in your business.<\/p>\n      <div class=\"q-ref\">Art. 3 \u00b7 Art. 6 Para 5 \u2014 Capital assets excluded<\/div>\n      <div class=\"sar-input-wrap\">\n        <span class=\"sar-prefix\">SAR<\/span>\n        <input type=\"number\" class=\"sar-input\" id=\"past-supplies\" placeholder=\"0\" min=\"0\" oninput=\"updateGauge('past');checkStep2()\">\n      <\/div>\n      <p class=\"sar-formatted\" id=\"past-formatted\">Enter amount above<\/p>\n      <div class=\"threshold-gauge\">\n        <div class=\"gauge-label\">\n          <span>SAR 0<\/span>\n          <span id=\"past-gauge-val\">\u2014<\/span>\n          <span>SAR 500M+<\/span>\n        <\/div>\n        <div class=\"gauge-track\">\n          <div class=\"gauge-fill\" id=\"past-fill\" style=\"width:0%; background: var(--border);\"><\/div>\n        <\/div>\n        <div class=\"gauge-markers\">\n          <div class=\"gauge-marker\" style=\"left: 37.5%\">\n            <div class=\"gauge-marker-line\"><\/div>\n            <div class=\"gauge-marker-label\">Voluntary SAR 187.5K<\/div>\n          <\/div>\n          <div class=\"gauge-marker\" style=\"left: 75%\">\n            <div class=\"gauge-marker-line\"><\/div>\n            <div class=\"gauge-marker-label\">Mandatory SAR 375K<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n      <p class=\"validation-msg\" id=\"val-past\">Please enter a valid amount (0 or above).<\/p>\n    <\/div>\n\n    <div class=\"question-card\">\n      <div class=\"q-number\">Question 4 \/ 5<\/div>\n      <p class=\"q-text\">Expected value of taxable supplies in the next 12 months<\/p>\n      <p class=\"q-hint\">Based on your best estimate. This forward-looking test applies under Article 4 \u2014 if you reasonably expect to exceed the mandatory threshold, registration is triggered even before you actually exceed it.<\/p>\n      <div class=\"q-ref\">Art. 4 \u2014 Forward-looking mandatory registration test<\/div>\n      <div class=\"sar-input-wrap\">\n        <span class=\"sar-prefix\">SAR<\/span>\n        <input type=\"number\" class=\"sar-input\" id=\"future-supplies\" placeholder=\"0\" min=\"0\" oninput=\"updateGauge('future');checkStep2()\">\n      <\/div>\n      <p class=\"sar-formatted\" id=\"future-formatted\">Enter amount above<\/p>\n      <div class=\"threshold-gauge\">\n        <div class=\"gauge-label\">\n          <span>SAR 0<\/span>\n          <span id=\"future-gauge-val\">\u2014<\/span>\n          <span>SAR 500M+<\/span>\n        <\/div>\n        <div class=\"gauge-track\">\n          <div class=\"gauge-fill\" id=\"future-fill\" style=\"width:0%; background: var(--border);\"><\/div>\n        <\/div>\n        <div class=\"gauge-markers\">\n          <div class=\"gauge-marker\" style=\"left: 37.5%\">\n            <div class=\"gauge-marker-line\"><\/div>\n            <div class=\"gauge-marker-label\">Voluntary SAR 187.5K<\/div>\n          <\/div>\n          <div class=\"gauge-marker\" style=\"left: 75%\">\n            <div class=\"gauge-marker-line\"><\/div>\n            <div class=\"gauge-marker-label\">Mandatory SAR 375K<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"question-card\">\n      <div class=\"q-number\">Question 5 \/ 5<\/div>\n      <p class=\"q-text\">Annual taxable expenses (optional \u2014 for voluntary registration only)<\/p>\n      <p class=\"q-hint\">Under Article 7, voluntary registration can also be triggered by your annual expenses alone \u2014 even if your supplies are below the voluntary threshold. Enter if relevant; leave at 0 if not applicable.<\/p>\n      <div class=\"q-ref\">Art. 7 Para 1(a) &amp; (b) \u2014 Supplies or expenses trigger<\/div>\n      <div class=\"sar-input-wrap\">\n        <span class=\"sar-prefix\">SAR<\/span>\n        <input type=\"number\" class=\"sar-input\" id=\"expenses\" placeholder=\"0\" min=\"0\" oninput=\"checkStep2()\">\n      <\/div>\n      <p class=\"sar-formatted\" id=\"exp-formatted\">Optional<\/p>\n    <\/div>\n\n    <div class=\"nav-row\">\n      <button class=\"btn btn-ghost\" onclick=\"goStep(1)\">\u2190 Back<\/button>\n      <button class=\"btn btn-primary\" id=\"step2-next\" onclick=\"goStep(3)\" disabled=\"\">Continue \u2192<\/button>\n    <\/div>\n  <\/section>\n\n  <!-- STEP 3: Supply Nature -->\n  <section class=\"step-panel\" id=\"step3\">\n    <div class=\"section-eyebrow\">Step 3 of 3<\/div>\n    <h2 class=\"section-heading\">Nature of Supplies<\/h2>\n    <p class=\"section-desc\">One critical exception in Article 9 can change your registration obligation entirely \u2014 even if your supplies exceed the mandatory threshold.<\/p>\n\n    <div class=\"question-card\">\n      <div class=\"q-number\">Final Question<\/div>\n      <p class=\"q-text\">Are all of your taxable supplies exclusively zero-rated?<\/p>\n      <p class=\"q-hint\">Zero-rated supplies include exports of goods, international transport, qualifying medicines and medical equipment, investment metals (first supply), and services to non-GCC residents. If even one supply is standard-rated at 15%, answer No.<\/p>\n      <div class=\"q-ref\">Art. 9 Para 1 \u2014 Zero-rated exception to mandatory registration<\/div>\n      <div class=\"radio-group\" id=\"zerorated-group\">\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'zerorated','yes')\">\n          <input type=\"radio\" name=\"zerorated\" value=\"yes\">\n          <div>\n            <div class=\"radio-label\">Yes \u2014 all my taxable supplies are exclusively zero-rated<\/div>\n            <div class=\"radio-sublabel\">100% of supplies fall under Chapter 6 of the Regulations (exports, medical, metals, international transport, etc.)<\/div>\n          <\/div>\n        <\/label>\n        <label class=\"radio-option\" onclick=\"selectRadio(this,'zerorated','no')\">\n          <input type=\"radio\" name=\"zerorated\" value=\"no\">\n          <div>\n            <div class=\"radio-label\">No \u2014 I have standard-rated or mixed supplies<\/div>\n            <div class=\"radio-sublabel\">At least some of my supplies are charged at the standard 15% VAT rate, or I have a mix of standard and zero-rated<\/div>\n          <\/div>\n        <\/label>\n      <\/div>\n      <div class=\"reg-peek\" id=\"zerorate-peek\" style=\"display:none;\">\n        <div class=\"reg-peek-title\">Article 9, Paragraph 1 \u2014 Verbatim regulatory basis<\/div>\n        <p class=\"reg-peek-text\">&#8220;A Person who at any time has annual Supplies made in the Kingdom whose value exceeds the Mandatory Registration Threshold which are <strong>exclusively zero-rated Supplies<\/strong>, is excluded from the requirement to register. A Person who falls under this Paragraph may elect to apply to register voluntarily.&#8221;<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"nav-row\">\n      <button class=\"btn btn-ghost\" onclick=\"goStep(2)\">\u2190 Back<\/button>\n      <button class=\"btn btn-analyze\" id=\"step3-next\" onclick=\"runAnalysis()\" disabled=\"\">\n        <span>\u26a1<\/span> Analyse Against Regulations\n      <\/button>\n    <\/div>\n  <\/section>\n\n  <!-- STEP 4: Results -->\n  <section class=\"step-panel\" id=\"step4\">\n\n    <div class=\"result-hero\" id=\"resultHero\">\n      <div class=\"result-meta\" id=\"resultMeta\">VAT Analysis Complete \u00b7 ZATCA Implementing Regulations 2023<\/div>\n      <div class=\"result-verdict\" id=\"resultVerdict\"><\/div>\n      <p class=\"result-summary\" id=\"resultSummary\"><\/p>\n      <div class=\"result-badges\" id=\"resultBadges\"><\/div>\n    <\/div>\n\n    <div class=\"detail-grid\">\n      <div class=\"detail-card\">\n        <div class=\"detail-card-icon icon-teal\">\ud83d\udccb<\/div>\n        <div class=\"detail-card-title\">Registration Status<\/div>\n        <div class=\"detail-card-value\" id=\"dc-reg-status\">\u2014<\/div>\n        <p class=\"detail-card-desc\" id=\"dc-reg-desc\">\u2014<\/p>\n      <\/div>\n      <div class=\"detail-card\">\n        <div class=\"detail-card-icon icon-gold\">\ud83d\uddd3\ufe0f<\/div>\n        <div class=\"detail-card-title\">Filing Frequency<\/div>\n        <div class=\"detail-card-value\" id=\"dc-filing\">\u2014<\/div>\n        <p class=\"detail-card-desc\" id=\"dc-filing-desc\">\u2014<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"thresholds-box\">\n      <div class=\"thresholds-title\">Your figures vs. ZATCA thresholds<\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Mandatory Registration Threshold (Art. 3\/4)<\/span>\n        <span class=\"threshold-row-value\">SAR 375,000<\/span>\n      <\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Voluntary Registration Threshold (Art. 7)<\/span>\n        <span class=\"threshold-row-value\">SAR 187,500<\/span>\n      <\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Monthly Filing Threshold (Art. 58)<\/span>\n        <span class=\"threshold-row-value\">SAR 40,000,000<\/span>\n      <\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Your past 12-month taxable supplies<\/span>\n        <span class=\"threshold-row-value user-val\" id=\"tv-past\">\u2014<\/span>\n      <\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Your expected next 12-month supplies<\/span>\n        <span class=\"threshold-row-value user-val\" id=\"tv-future\">\u2014<\/span>\n      <\/div>\n      <div class=\"threshold-row\">\n        <span class=\"threshold-row-label\">Annual expenses (if entered)<\/span>\n        <span class=\"threshold-row-value user-val\" id=\"tv-expenses\">\u2014<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Logic Trail (Collapsible) -->\n    <div class=\"logic-trail\">\n      <div class=\"logic-trail-header\" id=\"logicTrailHeader\" onclick=\"toggleLogicTrail()\">\n        <div class=\"logic-trail-title\">\n          <span style=\"font-size:18px;\">\u2699\ufe0f<\/span>\n          <div>\n            <div class=\"logic-trail-title-text\">Regulatory Logic Applied<\/div>\n            <div class=\"logic-trail-subtitle\">See exactly which articles were tested and how your result was determined<\/div>\n          <\/div>\n        <\/div>\n        <span class=\"logic-expand-icon\">\u25be<\/span>\n      <\/div>\n      <div class=\"logic-trail-body\" id=\"logicTrailBody\">\n        <div id=\"logicSteps\"><\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Caveat -->\n    <div class=\"caveat-box\">\n      <div class=\"caveat-icon\">\u26a0\ufe0f<\/div>\n      <div>\n        <div class=\"caveat-title\">Important \u2014 Indicative Use Only<\/div>\n        <p class=\"caveat-text\">This tool provides a <strong>preliminary indication<\/strong> based on the information you have entered and the ZATCA VAT Implementing Regulations (June 2023 edition). It does not constitute professional tax advice, a formal ZATCA ruling, or a legal opinion. Individual circumstances, mixed supply structures, group registration scenarios, transitional provisions, and ZATCA&#8217;s specific administrative practices may affect your obligations in ways this tool cannot capture. <strong>You should seek qualified tax advisory before making any VAT registration or compliance decisions.<\/strong> For professional guidance, visit <a href=\"https:\/\/dariba.co\" target=\"_blank\">dariba.co<\/a>.<\/p>\n      <\/div>\n    <\/div>\n\n    <div class=\"result-actions\">\n      <button class=\"btn btn-primary\" onclick=\"window.print()\">\u2b07 Save as PDF<\/button>\n      <button class=\"btn btn-outline\" onclick=\"resetTool()\">\u2190 Run Another Check<\/button>\n    <\/div>\n\n  <\/section>\n\n<\/main>\n\n<!-- FOOTER -->\n<footer class=\"tool-footer\">\n  <div class=\"footer-brand\">dariba<span>.co<\/span><\/div>\n \n\n<script>\nconst MANDATORY = 375000;\nconst VOLUNTARY = 187500;\nconst MONTHLY_THRESHOLD = 40000000;\n\nlet answers = {\n  residency: null,\n  entity: null,\n  past: 0,\n  future: 0,\n  expenses: 0,\n  zerorated: null\n};\n\nfunction selectRadio(el, name, val) {\n  document.querySelectorAll(`[name=\"${name}\"]`).closest ? null : null;\n  document.querySelectorAll(`.radio-option input[name=\"${name}\"]`).forEach(r => {\n    r.closest('.radio-option').classList.remove('selected');\n  });\n  el.classList.add('selected');\n  el.querySelector('input').checked = true;\n  answers[name] = val;\n\n  if (name === 'residency') {\n    if (val === 'nonresident') {\n      document.getElementById('q-entity').style.display = 'none';\n      answers.entity = 'commercial';\n    } else {\n      document.getElementById('q-entity').style.display = 'block';\n      answers.entity = null;\n    }\n    checkStep1();\n  }\n  if (name === 'entity') checkStep1();\n  if (name === 'zerorated') {\n    document.getElementById('zerorate-peek').style.display = val === 'yes' ? 'block' : 'none';\n    checkStep3();\n  }\n}\n\nfunction checkStep1() {\n  const btn = document.getElementById('step1-next');\n  const ready = answers.residency === 'nonresident'\n    ? true\n    : (answers.residency === 'resident' && answers.entity !== null);\n  btn.disabled = !ready;\n}\n\nfunction checkStep2() {\n  const pastVal = parseFloat(document.getElementById('past-supplies').value) || 0;\n  const futureVal = parseFloat(document.getElementById('future-supplies').value) || 0;\n  answers.past = pastVal;\n  answers.future = futureVal;\n  answers.expenses = parseFloat(document.getElementById('expenses').value) || 0;\n\n  const pastInput = document.getElementById('past-supplies');\n  const futureInput = document.getElementById('future-supplies');\n\n  if (pastVal > 0) {\n    pastInput.classList.add('has-value');\n    document.getElementById('past-formatted').textContent = 'SAR ' + pastVal.toLocaleString('en-SA');\n    document.getElementById('past-formatted').classList.add('active');\n  } else {\n    pastInput.classList.remove('has-value');\n    document.getElementById('past-formatted').textContent = 'Enter amount above';\n    document.getElementById('past-formatted').classList.remove('active');\n  }\n\n  const btn = document.getElementById('step2-next');\n  btn.disabled = (pastVal < 0 || futureVal < 0);\n}\n\nfunction updateGauge(which) {\n  const val = parseFloat(document.getElementById(which === 'past' ? 'past-supplies' : 'future-supplies').value) || 0;\n  const MAX = 500000;\n  const pct = Math.min((val \/ MAX) * 100, 100);\n  const fill = document.getElementById(which + '-fill');\n  const gaugeVal = document.getElementById(which + '-gauge-val');\n\n  let color = 'var(--border-strong)';\n  if (val >= MANDATORY) color = '#C0392B';\n  else if (val >= VOLUNTARY) color = '#C8973A';\n  else if (val > 0) color = 'var(--brand-teal)';\n\n  fill.style.width = pct + '%';\n  fill.style.background = color;\n  gaugeVal.textContent = val > 0 ? 'SAR ' + val.toLocaleString('en-SA') : '\u2014';\n}\n\nfunction checkStep3() {\n  document.getElementById('step3-next').disabled = (answers.zerorated === null);\n}\n\nfunction goStep(n) {\n  document.querySelectorAll('.step-panel').forEach(p => p.classList.remove('active'));\n  document.getElementById('step' + n).classList.add('active');\n  updateTabs(n);\n  window.scrollTo({ top: 0, behavior: 'smooth' });\n}\n\nfunction updateTabs(activeStep) {\n  for (let i = 1; i <= 4; i++) {\n    const tab = document.getElementById('tab' + i);\n    tab.classList.remove('active', 'pending', 'completed');\n    if (i < activeStep) tab.classList.add('completed');\n    else if (i === activeStep) tab.classList.add('active');\n    else tab.classList.add('pending');\n  }\n}\n\nfunction runAnalysis() {\n  answers.past = parseFloat(document.getElementById('past-supplies').value) || 0;\n  answers.future = parseFloat(document.getElementById('future-supplies').value) || 0;\n  answers.expenses = parseFloat(document.getElementById('expenses').value) || 0;\n\n  const overlay = document.getElementById('analyzingOverlay');\n  overlay.classList.add('show');\n\n  const steps = ['astep1','astep2','astep3','astep4','astep5','astep6'];\n  let i = 0;\n\n  function runNextStep() {\n    if (i > 0) document.getElementById(steps[i-1]).classList.remove('running');\n    if (i > 0) document.getElementById(steps[i-1]).classList.add('done');\n    if (i < steps.length) {\n      document.getElementById(steps[i]).classList.add('running');\n      i++;\n      setTimeout(runNextStep, 480);\n    } else {\n      setTimeout(() => {\n        overlay.classList.remove('show');\n        buildResults();\n        goStep(4);\n      }, 400);\n    }\n  }\n  runNextStep();\n}\n\nfunction buildResults() {\n  const { residency, entity, past, future, expenses, zerorated } = answers;\n\n  let regStatus = '';\n  let regDesc = '';\n  let filingFreq = '';\n  let filingDesc = '';\n  let verdictHTML = '';\n  let summaryText = '';\n  let badges = [];\n  let logicSteps = [];\n\n  const higherSupply = Math.max(past, future);\n  const maxForFiling = Math.max(past, future);\n\n  \/\/ \u2500\u2500 LOGIC ENGINE \u2500\u2500\n\n  \/\/ Step 0: Non-resident\n  if (residency === 'nonresident') {\n    logicSteps.push({ article: 'Art. 5', rule: 'Non-Resident \u2014 No Threshold Applies', outcome: 'A non-resident person obligated to pay tax on supplies made or received in the Kingdom must register within 30 days of the first taxable supply. No minimum threshold applies.', type: 'info' });\n    regStatus = 'Mandatory Registration';\n    regDesc = 'As a non-resident, you are required to register for VAT with ZATCA within 30 days of your first taxable supply in the Kingdom, regardless of value.';\n    verdictHTML = 'VAT Registration is <span class=\"verdict-highlight\">Required (Non-Resident)<\/span>';\n    summaryText = 'Non-resident persons making or receiving taxable supplies in the Kingdom have no registration threshold. Article 5 of the Implementing Regulations mandates registration within 30 days of the first taxable supply on which you are obligated to pay tax. A tax representative resident in KSA is also required (Art. 77 Para 2).';\n    badges.push('<span class=\"result-badge badge-mandatory\">\u2691 Mandatory Registration<\/span>');\n    badges.push('<span class=\"result-badge badge-filing\">Tax Rep Required (Art. 77)<\/span>');\n  }\n\n  \/\/ Step 1: Government body as pure public authority\n  else if (entity === 'govt_authority') {\n    logicSteps.push({ article: 'Art. 9 Para 5', rule: 'Government Body \u2014 Public Authority Exception', outcome: 'Activities exercised by a government body acting as a public authority are not considered an Economic Activity under the Law, provided: (a) a legal instrument authorises the activity, (b) it is not carried out on commercial\/economic standards, and (c) the activity is exercised exclusively without private sector competition.', type: 'info' });\n    regStatus = 'Outside VAT Scope';\n    regDesc = 'Activities of a government body acting as a public authority (meeting all three conditions of Art. 9 Para 5) are outside the scope of VAT. Registration is not required.';\n    verdictHTML = 'Activity is <span class=\"verdict-highlight\">Outside VAT Scope<\/span>';\n    summaryText = 'Under Article 9 Paragraph 5, activities exercised by a government body in its capacity as a public authority \u2014 where all three cumulative conditions are met \u2014 are not considered an Economic Activity for VAT purposes. This means VAT registration is not applicable. However, if any part of your activity is conducted on commercial standards or in competition with the private sector, that portion re-enters scope.';\n    badges.push('<span class=\"result-badge badge-clear\">\u2713 Outside Scope (Art. 9 Para 5)<\/span>');\n  }\n\n  else {\n    \/\/ Step 2: Article 3 \u2014 Past supplies mandatory check\n    let art3Triggered = past > MANDATORY;\n    logicSteps.push({\n      article: 'Art. 3 \u2014 Past Supplies Test',\n      rule: `Past 12-month taxable supplies: SAR ${past.toLocaleString('en-SA')}`,\n      outcome: art3Triggered\n        ? `Threshold exceeded. SAR ${past.toLocaleString('en-SA')} > SAR 375,000. Mandatory registration triggered.`\n        : `Below mandatory threshold. SAR ${past.toLocaleString('en-SA')} \u2264 SAR 375,000. Article 3 does not trigger registration.`,\n      type: art3Triggered ? 'pass' : 'fail'\n    });\n\n    \/\/ Step 3: Article 4 \u2014 Future supplies mandatory check\n    let art4Triggered = future > MANDATORY;\n    logicSteps.push({\n      article: 'Art. 4 \u2014 Forward-Looking Test',\n      rule: `Expected next 12-month taxable supplies: SAR ${future.toLocaleString('en-SA')}`,\n      outcome: art4Triggered\n        ? `Future supplies expected to exceed SAR 375,000. Article 4 mandatory registration triggered.`\n        : `Future supplies do not exceed SAR 375,000. Article 4 does not trigger registration.`,\n      type: art4Triggered ? 'pass' : 'fail'\n    });\n\n    let mandatoryTriggered = art3Triggered || art4Triggered;\n\n    \/\/ Step 4: Article 9 Para 1 \u2014 Zero-rated exception\n    let zeroRatedExempt = false;\n    if (mandatoryTriggered && zerorated === 'yes') {\n      zeroRatedExempt = true;\n      logicSteps.push({\n        article: 'Art. 9 Para 1 \u2014 Zero-Rated Exception',\n        rule: 'All supplies are exclusively zero-rated',\n        outcome: 'Even though the mandatory threshold is exceeded, registration is NOT required because all supplies are exclusively zero-rated. The person may elect voluntary registration.',\n        type: 'info'\n      });\n    } else if (mandatoryTriggered) {\n      logicSteps.push({\n        article: 'Art. 9 Para 1 \u2014 Zero-Rated Exception',\n        rule: 'Supplies are not exclusively zero-rated',\n        outcome: 'The zero-rated exception does not apply. Mandatory registration obligation stands.',\n        type: 'fail'\n      });\n    } else {\n      logicSteps.push({\n        article: 'Art. 9 Para 1 \u2014 Zero-Rated Exception',\n        rule: 'Threshold not reached \u2014 exception check not required',\n        outcome: 'The mandatory threshold has not been exceeded, so the zero-rated exception is not material at this stage.',\n        type: 'neutral'\n      });\n    }\n\n    \/\/ Step 5: Article 7 \u2014 Voluntary registration\n    let art7SupplyTrigger = (past >= VOLUNTARY && past <= MANDATORY) || (future >= VOLUNTARY && future <= MANDATORY);\n    let art7ExpenseTrigger = expenses >= VOLUNTARY;\n    let voluntaryAvailable = !mandatoryTriggered || zeroRatedExempt;\n\n    if (voluntaryAvailable) {\n      let art7Desc = '';\n      if (art7SupplyTrigger || art7ExpenseTrigger) {\n        let triggers = [];\n        if (past >= VOLUNTARY) triggers.push(`past supplies SAR ${past.toLocaleString('en-SA')} \u2265 SAR 187,500`);\n        if (future >= VOLUNTARY) triggers.push(`expected supplies SAR ${future.toLocaleString('en-SA')} \u2265 SAR 187,500`);\n        if (art7ExpenseTrigger) triggers.push(`annual expenses SAR ${expenses.toLocaleString('en-SA')} \u2265 SAR 187,500`);\n        art7Desc = 'Voluntary registration threshold reached: ' + triggers.join('; ') + '. You are eligible to register voluntarily.';\n      } else {\n        art7Desc = `Neither supplies (SAR ${Math.max(past, future).toLocaleString('en-SA')}) nor expenses (SAR ${expenses.toLocaleString('en-SA')}) reach the voluntary threshold of SAR 187,500. Voluntary registration is not available at this time.`;\n      }\n      logicSteps.push({\n        article: 'Art. 7 \u2014 Voluntary Registration',\n        rule: 'Voluntary registration eligibility check',\n        outcome: art7Desc,\n        type: (art7SupplyTrigger || art7ExpenseTrigger) ? 'info' : 'neutral'\n      });\n    }\n\n    \/\/ Step 6: Article 58 \u2014 Filing frequency\n    let monthly = maxForFiling > MONTHLY_THRESHOLD;\n    logicSteps.push({\n      article: 'Art. 58 \u2014 Tax Period (Filing Frequency)',\n      rule: `Higher of past\/future supplies: SAR ${maxForFiling.toLocaleString('en-SA')}`,\n      outcome: monthly\n        ? `Annual taxable supplies exceed SAR 40,000,000. Monthly filing is mandatory.`\n        : `Annual taxable supplies do not exceed SAR 40,000,000. Standard quarterly filing applies. Monthly filing can be elected voluntarily (Art. 58 Para 3).`,\n      type: 'pass'\n    });\n\n    \/\/ \u2500\u2500 DETERMINE OUTPUT \u2500\u2500\n    if (mandatoryTriggered && !zeroRatedExempt) {\n      regStatus = 'Mandatory Registration Required';\n      regDesc = `Your supplies exceed the SAR 375,000 mandatory threshold. You must apply to register with ZATCA within 30 days of the end of the month in which the threshold was exceeded.`;\n      verdictHTML = 'VAT Registration is <span class=\"verdict-danger\">Mandatory<\/span>';\n      summaryText = `Your ${art3Triggered ? 'past 12-month' : ''}${art3Triggered && art4Triggered ? ' and ' : ''}${art4Triggered ? 'expected' : ''} taxable supplies exceed the mandatory registration threshold of SAR 375,000 set under the GCC VAT Agreement as applied in the Kingdom. You must apply to ZATCA for VAT registration within 30 days of the end of the month in which the threshold was exceeded (Article 3) or in which you formed the expectation of exceeding it (Article 4).`;\n      badges.push('<span class=\"result-badge badge-mandatory\">\u2691 Mandatory Registration<\/span>');\n      if (monthly) badges.push('<span class=\"result-badge badge-filing\">\ud83d\udcc6 Monthly Filing<\/span>');\n      else badges.push('<span class=\"result-badge badge-filing\">\ud83d\udcc6 Quarterly Filing (Default)<\/span>');\n    } else if (mandatoryTriggered && zeroRatedExempt) {\n      regStatus = 'Exempt from Mandatory Registration';\n      regDesc = 'Although your supplies exceed SAR 375,000, they are exclusively zero-rated. Article 9 Para 1 excludes you from mandatory registration. Voluntary registration is available.';\n      verdictHTML = 'Mandatory Registration <span class=\"verdict-warning\">Not Required<\/span> \u2014 Zero-Rated Exception Applies';\n      summaryText = 'Your supplies exceed the mandatory threshold, but since all of your taxable supplies are exclusively zero-rated (e.g. exports, qualifying medicines, international transport), Article 9 Paragraph 1 excludes you from the mandatory registration requirement. You may still elect to register voluntarily under Article 7 \u2014 which can be commercially advantageous to recover input tax on business expenses.';\n      badges.push('<span class=\"result-badge badge-voluntary\">\u2298 Zero-Rated Exemption (Art. 9)<\/span>');\n      badges.push('<span class=\"result-badge badge-clear\">\u2713 Voluntary Registration Available<\/span>');\n    } else if ((art7SupplyTrigger || art7ExpenseTrigger) && !mandatoryTriggered) {\n      regStatus = 'Voluntary Registration Available';\n      regDesc = 'Your supplies or expenses reach the voluntary registration threshold of SAR 187,500. You are eligible \u2014 but not required \u2014 to register for VAT.';\n      verdictHTML = 'Voluntary Registration <span class=\"verdict-warning\">Available<\/span>';\n      summaryText = 'Your taxable supplies or expenses meet the minimum threshold for voluntary VAT registration under Article 7. Registration is your choice, but it can be beneficial \u2014 it allows you to recover input tax on your business expenses and signals commercial credibility. Carefully assess your supply chain before registering voluntarily, particularly if your customers are end consumers who cannot recover VAT.';\n      badges.push('<span class=\"result-badge badge-voluntary\">\u25ce Voluntary Registration Available<\/span>');\n      if (monthly) badges.push('<span class=\"result-badge badge-filing\">\ud83d\udcc6 Monthly Filing<\/span>');\n      else badges.push('<span class=\"result-badge badge-filing\">\ud83d\udcc6 Quarterly (if registered)<\/span>');\n    } else {\n      regStatus = 'No Registration Required';\n      regDesc = 'Your supplies and expenses are below both the mandatory and voluntary registration thresholds. No VAT registration obligation exists at this time.';\n      verdictHTML = 'No VAT Registration <span class=\"verdict-highlight\">Required at This Time<\/span>';\n      summaryText = `Your taxable supplies (SAR ${Math.max(past, future).toLocaleString('en-SA')}) and expenses (SAR ${expenses.toLocaleString('en-SA')}) do not reach either the mandatory registration threshold (SAR 375,000) or the voluntary registration threshold (SAR 187,500). Under current figures, you have no VAT registration obligation. Monitor your supplies monthly \u2014 once you approach the thresholds, registration obligations can trigger quickly.`;\n      badges.push('<span class=\"result-badge badge-clear\">\u2713 No Registration Required<\/span>');\n    }\n\n    filingFreq = monthly ? 'Monthly' : 'Quarterly';\n    filingDesc = monthly\n      ? 'Your annual taxable supplies exceed SAR 40,000,000. Under Article 58 Para 1, you are required to file VAT returns on a monthly basis. Returns must be filed and payment made by the last day of the month following each tax period.'\n      : 'Your annual taxable supplies do not exceed SAR 40,000,000. Under Article 58 Para 2, the standard quarterly (3-month) tax period applies. You may elect to file monthly by application to ZATCA (Art. 58 Para 3). Returns are due by the last day of the month following the end of each quarter.';\n  }\n\n  \/\/ \u2500\u2500 RENDER \u2500\u2500\n  document.getElementById('resultVerdict').innerHTML = verdictHTML;\n  document.getElementById('resultSummary').textContent = summaryText;\n  document.getElementById('resultBadges').innerHTML = badges.join('');\n\n  document.getElementById('dc-reg-status').textContent = regStatus;\n  document.getElementById('dc-reg-status').className = 'detail-card-value ' + (\n    regStatus.includes('Mandatory') && !regStatus.includes('Exempt') ? 'status-mandatory' :\n    regStatus.includes('Voluntary') ? 'status-voluntary' :\n    regStatus.includes('Outside') ? 'status-exempt' : 'status-not-required'\n  );\n  document.getElementById('dc-reg-desc').textContent = regDesc;\n\n  if (filingFreq) {\n    document.getElementById('dc-filing').textContent = filingFreq + ' Returns';\n    document.getElementById('dc-filing-desc').textContent = filingDesc;\n  } else {\n    document.getElementById('dc-filing').textContent = 'N\/A';\n    document.getElementById('dc-filing-desc').textContent = 'Filing frequency applies once you are registered for VAT.';\n  }\n\n  document.getElementById('tv-past').textContent = 'SAR ' + answers.past.toLocaleString('en-SA');\n  document.getElementById('tv-future').textContent = 'SAR ' + answers.future.toLocaleString('en-SA');\n  document.getElementById('tv-expenses').textContent = answers.expenses > 0 ? 'SAR ' + answers.expenses.toLocaleString('en-SA') : 'Not entered';\n\n  const stepsHTML = logicSteps.map((s, idx) => `\n    <div class=\"logic-step\">\n      <div class=\"logic-step-dot ${s.type}\">${s.type === 'pass' ? '\u2713' : s.type === 'fail' ? '\u2717' : s.type === 'info' ? '!' : '\u00b7'}<\/div>\n      <div class=\"logic-step-content\">\n        <div class=\"logic-step-article\">${s.article}<\/div>\n        <div class=\"logic-step-rule\">${s.rule}<\/div>\n        <p class=\"logic-step-outcome\">${s.outcome}<\/p>\n      <\/div>\n    <\/div>\n  `).join('');\n  document.getElementById('logicSteps').innerHTML = stepsHTML;\n}\n\nfunction toggleLogicTrail() {\n  const header = document.getElementById('logicTrailHeader');\n  const body = document.getElementById('logicTrailBody');\n  header.classList.toggle('open');\n  body.classList.toggle('open');\n}\n\nfunction resetTool() {\n  answers = { residency: null, entity: null, past: 0, future: 0, expenses: 0, zerorated: null };\n  document.querySelectorAll('.radio-option').forEach(el => el.classList.remove('selected'));\n  document.querySelectorAll('input[type=\"radio\"]').forEach(el => el.checked = false);\n  document.querySelectorAll('.sar-input').forEach(el => { el.value = ''; el.classList.remove('has-value'); });\n  document.getElementById('past-fill').style.width = '0%';\n  document.getElementById('future-fill').style.width = '0%';\n  document.getElementById('q-entity').style.display = 'none';\n  document.getElementById('zerorate-peek').style.display = 'none';\n  document.getElementById('step1-next').disabled = true;\n  document.getElementById('step2-next').disabled = true;\n  document.getElementById('step3-next').disabled = true;\n  document.getElementById('logicTrailBody').classList.remove('open');\n  document.getElementById('logicTrailHeader').classList.remove('open');\n\n  const asteps = ['astep1','astep2','astep3','astep4','astep5','astep6'];\n  asteps.forEach(s => {\n    document.getElementById(s).classList.remove('running','done');\n  });\n\n  goStep(1);\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Saudi VAT Registration &amp; Filing Checker | Dariba.co Checking residency classification&#8230; Applying Article 3 \u2014 Past Supplies Test&#8230; Applying Article 4 \u2014 Future Supplies Test&#8230; Article 9 Zero-Rated Exemption Check&#8230; Article 7 Voluntary Registration Test&#8230; Article 58 \u2014 Determining Filing Frequency&#8230; Simplified self assessment Saudi VATRegistration &amp; FilingChecker Answer a few questions. The tool maps [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-362","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.dariba.co\/index.php?rest_route=\/wp\/v2\/pages\/362","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dariba.co\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.dariba.co\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.dariba.co\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dariba.co\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=362"}],"version-history":[{"count":0,"href":"https:\/\/www.dariba.co\/index.php?rest_route=\/wp\/v2\/pages\/362\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dariba.co\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=362"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}