<?php
use App\Core\Csrf;

$isAr = current_lang() === 'ar';
$tr = function (string $en, string $ar) use ($isAr): string { return $isAr ? $ar : $en; };
$dashboardData = is_array($dashboardData ?? null) ? $dashboardData : [];
$identity = is_array($dashboardData['identity'] ?? null) ? $dashboardData['identity'] : [];
$active = is_array($dashboardData['active'] ?? null) ? $dashboardData['active'] : [];
$selected = is_array($dashboardData['selected'] ?? null) ? $dashboardData['selected'] : [];
$params = is_array($dashboardData['params'] ?? null) ? $dashboardData['params'] : [];
$versions = is_array($dashboardData['versions'] ?? null) ? $dashboardData['versions'] : [];
$scopes = is_array($dashboardData['scopes'] ?? null) ? $dashboardData['scopes'] : [];
$branches = is_array($dashboardData['branches'] ?? null) ? $dashboardData['branches'] : [];
$dryRuns = is_array($dashboardData['dry_runs'] ?? null) ? $dashboardData['dry_runs'] : [];
$auditRows = is_array($dashboardData['audit'] ?? null) ? $dashboardData['audit'] : [];

$allowedHospitals = ['NJCH', 'MNH'];
$branches = array_values(array_filter($branches, static function ($branch) use ($allowedHospitals): bool {
    return is_array($branch) && in_array(strtoupper((string)($branch['hospital_code'] ?? '')), $allowedHospitals, true);
}));
$scopes = array_values(array_filter($scopes, static function ($scope) use ($allowedHospitals): bool {
    if (!is_array($scope)) { return false; }
    $type = strtoupper((string)($scope['scope_type'] ?? 'BRANCH'));
    return $type !== 'BRANCH' || in_array(strtoupper((string)($scope['scope_code'] ?? '')), $allowedHospitals, true);
}));

$groups = [];
$paramByCode = [];
foreach ($params as $param) {
    if (!is_array($param)) { continue; }
    $groupCode = strtoupper((string)($param['group_code'] ?? 'OTHER'));
    $paramCode = (string)($param['param_code'] ?? '');
    $groups[$groupCode][] = $param;
    if ($paramCode !== '') { $paramByCode[$paramCode] = $param; }
}

$statusClass = static function (string $status): string {
    return in_array($status, ['ACTIVE','PASS','APPROVED'], true) ? 'ok' : (in_array($status, ['FAIL'], true) ? 'bad' : 'wait');
};
$statusLabel = function (string $status) use ($tr): string {
    $labels = [
        'ACTIVE' => $tr('Active', 'نشط'),
        'DRAFT' => $tr('Draft', 'مسودة'),
        'APPROVED' => $tr('Approved', 'معتمد'),
        'RETIRED' => $tr('Retired', 'متقاعد'),
        'PASS' => $tr('Passed', 'ناجح'),
        'FAIL' => $tr('Failed', 'فشل'),
        'PENDING' => $tr('Pending', 'قيد الانتظار'),
    ];
    return $labels[$status] ?? str_replace('_', ' ', $status);
};
$calibrationLabel = function (string $status) use ($tr): string {
    $labels = [
        'PENDING_OPERATIONAL_FEEDBACK' => $tr('Operational calibration pending', 'المعايرة التشغيلية قيد الاستكمال'),
        'CALIBRATED' => $tr('Operationally calibrated', 'تمت المعايرة التشغيلية'),
        'VALIDATED' => $tr('Validated', 'تم التحقق'),
    ];
    return $labels[$status] ?? ($status !== '' ? str_replace('_', ' ', $status) : $tr('Not recorded', 'غير مسجل'));
};
$groupLabels = [
    'BASELINE' => [$tr('Statistical baseline', 'خط الأساس الإحصائي'), $tr('Core thresholds for established, limited and sparse profiles.', 'الحدود الأساسية للملفات المستقرة والمحدودة وقليلة البيانات.')],
    'BATCH_EVENT' => [$tr('Batch-event controls', 'ضوابط أحداث الجرد وتسوية الكمية'), $tr('Rules that retain or suppress grouped inventory and reconciliation events.', 'قواعد الاحتفاظ بأحداث الجرد وتسوية الكمية المجمعة أو استبعادها.')],
    'OPERATIONS' => [$tr('Operational limits', 'الحدود التشغيلية'), $tr('Analysis period and controlled export limits.', 'فترة التحليل وحدود التصدير المنضبطة.')],
    'SEVERITY' => [$tr('Review priority thresholds', 'حدود أولوية المراجعة'), $tr('Scores that route signals into review, high-priority and immediate attention.', 'الدرجات التي تنقل مؤشرات المراجعة إلى المراجعة والأولوية العالية والتنبيه الفوري.')],
    'SIGNAL_WEIGHT' => [$tr('Signal contribution weights', 'أوزان مساهمة مؤشرات المراجعة'), $tr('Relative contribution of each independent risk signal to the final score.', 'المساهمة النسبية لكل إشارة مخاطر مستقلة في الدرجة النهائية.')],
];
$groupLabel = function (string $code) use ($groupLabels): array {
    if (isset($groupLabels[$code])) { return $groupLabels[$code]; }
    return [ucwords(strtolower(str_replace('_', ' ', $code))), ''];
};

$selectedStatus = strtoupper((string)($selected['status_code'] ?? ''));
$isDraft = $selectedStatus === 'DRAFT';
$isEditableVersion = $isDraft && $canManage;
$activeVersionId = (int)($active['version_id'] ?? 0);
$selectedVersionId = (int)($selected['version_id'] ?? 0);
$includedCount = count(array_filter($scopes, static function ($scope): bool {
    return strtoupper((string)($scope['effect_code'] ?? '')) === 'INCLUDE';
}));
$latestDryRun = $dryRuns[0] ?? [];
$configHash = trim((string)($selected['config_hash'] ?? ''));
$configHashShort = $configHash !== '' ? substr($configHash, 0, 12) . '…' : '—';
$activeUrl = $activeVersionId > 0 ? url_to('diar-rules', ['version_id' => $activeVersionId]) : url_to('diar-rules');
$capabilities = [
    'command' => \App\Core\AccessControl::allows('diar.command.view'),
    'profiles' => \App\Core\AccessControl::allows('diar.command.view'),
    'candidates' => \App\Core\AccessControl::allows('diar.command.view'),
    'investigations' => \App\Core\AccessControl::allows('diar.investigation.view'),
    'rules' => \App\Core\AccessControl::allows('diar.rules.view'),
];
?>
<?php require dirname(__DIR__) . '/diar_command_center/_tabs.php'; ?> <!-- DIAR_6B_2_R2_RULES_NAV -->
<section class="diar4a-page diar-functional-page" data-diar4a data-diar-ui3-r1="workspace" data-selected-state="<?= e($selectedStatus) ?>">
    <?php include dirname(__DIR__) . '/diar_command_center/_tabs.php'; ?>
    <div class="diar4a-hero">
        <div class="diar4a-hero-copy">
            <span class="diar4a-kicker"><?= e($tr('STATISTICAL DETECTION GOVERNANCE', 'حوكمة الاكتشاف الإحصائي')) ?></span>
            <h2><?= e($tr('Review policy and thresholds', 'سياسة وحدود الاكتشاف')) ?></h2>
            <p><?= e($tr(
                'Govern how statistically unusual movements are interpreted and prioritized. These settings do not define a normal quantity for an item; the normal baseline is learned separately for every exact movement grain.',
                'إدارة طريقة تفسير الانحرافات الإحصائية وترتيب أولويتها. لا تحدد هذه الإعدادات كمية طبيعية للصنف، بل يُتعلم الخط الطبيعي بصورة مستقلة لكل حبة حركة دقيقة.'
            )) ?></p>
        </div>
        <div class="diar4a-governance-badge">
            <span><?= e($tr('Selected version', 'الإصدار المحدد')) ?></span>
            <strong>v<?= e((string)($selected['version_no'] ?? '—')) ?></strong>
            <em class="status <?= e($statusClass($selectedStatus)) ?>"><?= e($statusLabel($selectedStatus)) ?></em>
            <small><?= e($isDraft ? $tr('Editable governed draft', 'مسودة محكومة قابلة للتعديل') : $tr('Protected read-only configuration', 'إعداد محمي للقراءة فقط')) ?></small>
        </div>
    </div>

    <section class="policy-explainer" aria-label="<?= e($tr('Role of the detection policy', 'دور سياسة المراجعة')) ?>">
        <div class="policy-principle">
            <span class="section-kicker"><?= e($tr('WHAT THIS PAGE CONTROLS', 'ما الذي تتحكم فيه هذه الصفحة')) ?></span>
            <h3><?= e($tr('The policy interprets deviation; it does not invent the normal baseline', 'السياسة تفسر الانحراف ولا تنشئ الخط الطبيعي')) ?></h3>
            <p><?= e($tr('Normal behaviour comes from the statistical profile of the same item, store, raw unit and movement type. This page controls only how strong deviations are prioritized and governed.', 'يأتي السلوك الطبيعي من الملف الإحصائي لنفس الصنف والمخزن والوحدة المسجلة ونوع الحركة. وتتحكم هذه الصفحة فقط في طريقة ترتيب الانحرافات القوية وحوكمتها.')) ?></p>
        </div>
        <div class="policy-do-dont">
            <article class="policy-do"><strong><?= e($tr('This policy does', 'ما تفعله السياسة')) ?></strong><span><?= e($tr('Set profile readiness requirements, deviation thresholds, signal contributions and review-priority cutoffs.', 'تحدد متطلبات جاهزية المقارنة وحدود الانحراف ومساهمات مؤشرات المراجعة ومستويات أولوية المراجعة.')) ?></span></article>
            <article class="policy-dont"><strong><?= e($tr('This policy does not', 'ما لا تفعله السياسة')) ?></strong><span><?= e($tr('Set one fixed quantity as normal for all medicines, compare different stores together, or prove wrongdoing.', 'لا تضع كمية طبيعية واحدة لكل الأدوية، ولا تخلط المخازن المختلفة، ولا تثبت وجود مخالفة.')) ?></span></article>
        </div>
        <div class="policy-example"><b><?= e($tr('Example', 'مثال')) ?></b><span><?= e($tr('A quantity of 50 may be normal for one item and highly unusual for another. The statistical profile decides what is usual; the policy decides how strongly the difference should be reviewed.', 'قد تكون كمية 50 طبيعية لصنف وغير معتادة بشدة لصنف آخر. يحدد الملف الإحصائي ما هو معتاد، بينما تحدد السياسة قوة أولوية مراجعة الفارق.')) ?></span></div>
    </section>

    <?php if ($successMessage): ?><div class="diar4a-alert success" role="status"><?= e($successMessage) ?></div><?php endif; ?>
    <?php if ($errorMessage): ?><div class="diar4a-alert error" role="alert"><?= e($errorMessage) ?></div><?php endif; ?>

    <?php if (!$schemaReady): ?>
        <div class="diar4a-empty">
            <h3><?= e($tr('Review policy configuration is not available', 'إعدادات سياسة المراجعة غير متاحة')) ?></h3>
            <p><?= e($tr('The governed DIAR policy tables must be available before this workspace can be used.', 'يجب إتاحة جداول سياسة DIAR المحكومة قبل استخدام مساحة العمل.')) ?></p>
        </div>
    <?php else: ?>
        <div class="diar4a-kpis" aria-label="<?= e($tr('Review policy summary', 'ملخص سياسة المراجعة')) ?>">
            <article>
                <span><?= e($tr('Active version', 'الإصدار النشط')) ?></span>
                <strong>v<?= e((string)($active['version_no'] ?? '—')) ?></strong>
                <small><?= e($calibrationLabel((string)($active['calibration_status'] ?? ''))) ?></small>
            </article>
            <article>
                <span><?= e($tr('Review threshold', 'حد المراجعة')) ?></span>
                <strong><?= e((string)($paramByCode['REVIEW_THRESHOLD']['num_value'] ?? 35)) ?></strong>
                <small><?= e($tr('Minimum score entering review', 'أقل درجة للانتقال إلى المراجعة')) ?></small>
            </article>
            <article>
                <span><?= e($tr('Hospitals in scope', 'المستشفيات المشمولة')) ?></span>
                <strong><?= e((string)$includedCount) ?></strong>
                <small><?= e($tr('NJCH and MNH only', 'مستشفى جدة الجديد والمدينة فقط')) ?></small>
            </article>
            <article>
                <span><?= e($tr('Configuration mode', 'وضع الإعداد')) ?></span>
                <strong class="mode-value"><?= e($isDraft ? $tr('EDIT', 'تعديل') : $tr('READ', 'قراءة')) ?></strong>
                <small><?= e($isDraft ? $tr('Changes require dry-run approval', 'التغييرات تتطلب اختبارًا واعتمادًا') : $tr('Create a draft to propose changes', 'أنشئ مسودة لاقتراح التغييرات')) ?></small>
            </article>
        </div>

        <section class="diar4a-workspace-head" aria-label="<?= e($tr('Workspace tools', 'أدوات مساحة العمل')) ?>">
            <div>
                <span class="diar4a-eyebrow"><?= e($tr('DETECTION POLICY WORKSPACE', 'مساحة سياسة المراجعة')) ?></span>
                <h3><?= e($tr('Review how statistical deviations are interpreted', 'راجع طريقة تفسير الانحرافات الإحصائية')) ?></h3>
            </div>
            <div class="diar4a-toolbar">
                <label class="diar4a-search">
                    <span class="sr-only"><?= e($tr('Search policy settings', 'البحث في إعدادات السياسة')) ?></span>
                    <input type="search" data-rule-search placeholder="<?= e($tr('Search threshold, signal or setting…', 'ابحث عن حد أو إشارة أو إعداد…')) ?>" autocomplete="off">
                    <button type="button" data-rule-search-clear aria-label="<?= e($tr('Clear search', 'مسح البحث')) ?>">×</button>
                </label>
                <button type="button" class="diar4a-tool-button" data-groups-expand><?= e($tr('Expand all', 'فتح الكل')) ?></button>
                <button type="button" class="diar4a-tool-button" data-groups-collapse><?= e($tr('Collapse all', 'إغلاق الكل')) ?></button>
            </div>
        </section>

        <div class="diar4a-grid">
            <aside class="diar4a-panel versions-panel">
                <div class="panel-head compact">
                    <div>
                        <h3><?= e($tr('Version history', 'سجل الإصدارات')) ?></h3>
                        <p><?= e($tr('Select an immutable version to review.', 'اختر إصدارًا محفوظًا للمراجعة.')) ?></p>
                    </div>
                </div>
                <div class="version-list">
                    <?php foreach ($versions as $version): ?>
                        <?php $versionStatus = strtoupper((string)($version['status_code'] ?? '')); ?>
                        <a class="version-row <?= (int)($version['version_id'] ?? 0) === $selectedVersionId ? 'selected' : '' ?>" href="<?= e(url_to('diar-rules', ['version_id' => (int)$version['version_id']])) ?>">
                            <span>
                                <b>v<?= e((string)$version['version_no']) ?></b>
                                <small><?= e((string)$version['created_at']) ?></small>
                            </span>
                            <em class="status <?= e($statusClass($versionStatus)) ?>"><?= e($statusLabel($versionStatus)) ?></em>
                        </a>
                    <?php endforeach; ?>
                </div>

                <?php if (!$isDraft): ?>
                    <div class="readonly-note">
                        <strong><?= e($tr('Active and historical versions are protected', 'الإصدارات النشطة والتاريخية محمية')) ?></strong>
                        <span><?= e($tr('Create a governed draft before changing any value.', 'أنشئ مسودة محكومة قبل تغيير أي قيمة.')) ?></span>
                    </div>
                <?php endif; ?>

                <?php if ($canManage): ?>
                    <details class="create-draft-disclosure" <?= $isDraft ? '' : 'open' ?>>
                        <summary><?= e($tr('Create a new governed draft', 'إنشاء مسودة محكومة جديدة')) ?></summary>
                        <form method="post" class="create-draft-form">
                            <input type="hidden" name="_csrf" value="<?= e(Csrf::token()) ?>">
                            <input type="hidden" name="action" value="create_draft">
                            <label>
                                <span><?= e($tr('Reason for the proposed change', 'سبب التغيير المقترح')) ?></span>
                                <textarea name="change_reason" required maxlength="1000" placeholder="<?= e($tr('Describe the business reason and expected outcome.', 'وضّح سبب التغيير والنتيجة المتوقعة.')) ?>"></textarea>
                            </label>
                            <button class="diar4a-button primary" type="submit" <?= $isDraft ? 'disabled' : '' ?>><?= e($tr('Create draft from active version', 'إنشاء مسودة من الإصدار النشط')) ?></button>
                            <?php if ($isDraft): ?><small><?= e($tr('A draft already exists and must be completed first.', 'توجد مسودة حالية ويجب استكمالها أولًا.')) ?></small><?php endif; ?>
                        </form>
                    </details>
                <?php endif; ?>
            </aside>

            <main class="diar4a-panel editor-panel">
                <div class="editor-context">
                    <div>
                        <span class="diar4a-eyebrow"><?= e($isDraft ? $tr('DRAFT WORKSPACE', 'مساحة عمل المسودة') : $tr('READ-ONLY REVIEW', 'مراجعة للقراءة فقط')) ?></span>
                        <h3><?= e($tr('Configuration version', 'إصدار الإعداد')) ?> v<?= e((string)($selected['version_no'] ?? '—')) ?></h3>
                        <p><?= e(trim((string)($selected['change_reason'] ?? '')) !== '' ? (string)$selected['change_reason'] : $tr('No change narrative was recorded for this version.', 'لم يسجل وصف للتغيير في هذا الإصدار.')) ?></p>
                    </div>
                    <div class="editor-context-meta">
                        <span class="status <?= e($statusClass($selectedStatus)) ?>"><?= e($statusLabel($selectedStatus)) ?></span>
                        <span class="edit-state <?= $isDraft ? 'editable' : 'readonly' ?>"><?= e($isDraft ? $tr('Editable draft', 'مسودة قابلة للتعديل') : $tr('Read only', 'للقراءة فقط')) ?></span>
                    </div>
                </div>

                <div class="governance-strip">
                    <div><span><?= e($tr('Latest dry run', 'آخر اختبار تجريبي')) ?></span><strong><?= e($latestDryRun ? $statusLabel(strtoupper((string)($latestDryRun['status_code'] ?? 'PENDING'))) : $tr('Not requested', 'لم يطلب')) ?></strong></div>
                    <div><span><?= e($tr('Configuration fingerprint', 'بصمة الإعداد')) ?></span><strong class="mono"><?= e($configHashShort) ?></strong></div>
                    <div><span><?= e($tr('Allowed hospitals', 'المستشفيات المسموحة')) ?></span><strong>NJCH · MNH</strong></div>
                    <?php if (!$isDraft && $selectedVersionId !== $activeVersionId && $activeVersionId > 0): ?><a href="<?= e($activeUrl) ?>"><?= e($tr('Return to active version', 'العودة إلى الإصدار النشط')) ?></a><?php endif; ?>
                </div>

                <details class="technical-details">
                    <summary><?= e($tr('Technical and audit details', 'التفاصيل التقنية وتفاصيل التدقيق')) ?></summary>
                    <div class="technical-grid">
                        <div><span><?= e($tr('Control environment', 'بيئة التحكم')) ?></span><strong><?= e(strtoupper((string)($identity['db_name'] ?? 'ORANJC'))) ?> / <?= e(strtoupper((string)($identity['current_schema'] ?? 'WATANY'))) ?></strong></div>
                        <div><span><?= e($tr('Configuration hash', 'بصمة الإعداد')) ?></span><strong class="mono full-hash"><?= e($configHash !== '' ? $configHash : '—') ?></strong></div>
                        <div><span><?= e($tr('Created by', 'أنشئ بواسطة')) ?></span><strong><?= e((string)($selected['created_by'] ?? '—')) ?></strong></div>
                        <div><span><?= e($tr('Created at', 'تاريخ الإنشاء')) ?></span><strong><?= e((string)($selected['created_at'] ?? '—')) ?></strong></div>
                    </div>
                </details>

                <div class="search-summary" data-rule-search-summary hidden></div>
                <div class="rule-search-empty" data-rule-search-empty hidden>
                    <strong><?= e($tr('No matching policy settings found', 'لا توجد إعدادات سياسة مطابقة')) ?></strong>
                    <span><?= e($tr('Try a broader term or clear the search.', 'جرّب عبارة أوسع أو امسح البحث.')) ?></span>
                </div>

                <form method="post" class="rules-form" data-rules-form>
                    <input type="hidden" name="_csrf" value="<?= e(Csrf::token()) ?>">
                    <input type="hidden" name="version_id" value="<?= e((string)$selectedVersionId) ?>">

                    <?php $groupIndex = 0; ?>
                    <?php foreach ($groups as $groupCode => $rows): ?>
                        <?php [$groupTitle, $groupDescription] = $groupLabel($groupCode); $groupIndex++; ?>
                        <details class="rule-group" data-rule-group data-group-code="<?= e($groupCode) ?>" <?= $groupIndex <= 2 ? 'open' : '' ?>>
                            <summary>
                                <span class="rule-group-title"><b><?= e($groupTitle) ?></b><small><?= e($groupDescription) ?></small></span>
                                <span class="rule-group-count"><?= e((string)count($rows)) ?></span>
                                <span class="rule-group-chevron" aria-hidden="true">⌄</span>
                            </summary>
                            <div class="rule-fields">
                                <?php foreach ($rows as $param): ?>
                                    <?php
                                    $editable = $isEditableVersion && (int)($param['is_editable'] ?? 0) === 1;
                                    $name = $isAr && !empty($param['name_ar']) ? (string)$param['name_ar'] : (string)$param['name_en'];
                                    $description = $isAr && !empty($param['description_ar']) ? (string)$param['description_ar'] : (string)$param['description_en'];
                                    $searchText = strtolower($name . ' ' . $description . ' ' . (string)$param['param_code'] . ' ' . $groupCode);
                                    ?>
                                    <label class="rule-field <?= $editable ? 'is-editable' : 'is-readonly' ?>" data-rule-field data-search-text="<?= e($searchText) ?>">
                                        <span class="rule-field-name"><?= e($name) ?></span>
                                        <small><?= e($description) ?></small>
                                        <span class="rule-field-control">
                                            <?php if ((string)$param['value_type'] === 'BOOLEAN'): ?>
                                                <select name="params[<?= e((string)$param['param_code']) ?>]" <?= $editable ? '' : 'disabled aria-disabled="true"' ?>>
                                                    <option value="1" <?= (int)$param['bool_value'] === 1 ? 'selected' : '' ?>><?= e($tr('Enabled', 'مفعّل')) ?></option>
                                                    <option value="0" <?= (int)$param['bool_value'] !== 1 ? 'selected' : '' ?>><?= e($tr('Disabled', 'غير مفعّل')) ?></option>
                                                </select>
                                            <?php elseif ((string)$param['value_type'] === 'NUMBER'): ?>
                                                <input type="number" step="any" name="params[<?= e((string)$param['param_code']) ?>]" value="<?= e((string)$param['num_value']) ?>" min="<?= e((string)$param['min_num']) ?>" max="<?= e((string)$param['max_num']) ?>" <?= $editable ? '' : 'readonly aria-readonly="true"' ?>>
                                            <?php else: ?>
                                                <input type="text" name="params[<?= e((string)$param['param_code']) ?>]" value="<?= e((string)$param['text_value']) ?>" <?= $editable ? '' : 'readonly aria-readonly="true"' ?>>
                                            <?php endif; ?>
                                            <?php if (!$editable && (string)$param['value_type'] === 'BOOLEAN'): ?><input type="hidden" name="params[<?= e((string)$param['param_code']) ?>]" value="<?= e((string)$param['bool_value']) ?>"><?php endif; ?>
                                            <?php if (!empty($param['unit_code'])): ?><em><?= e((string)$param['unit_code']) ?></em><?php endif; ?>
                                        </span>
                                        <code><?= e((string)$param['param_code']) ?></code>
                                    </label>
                                <?php endforeach; ?>
                            </div>
                        </details>
                    <?php endforeach; ?>

                    <details class="rule-group branch-rule-group" data-rule-group data-group-code="BRANCH_SCOPE" open>
                        <summary>
                            <span class="rule-group-title"><b><?= e($tr('Hospital scope', 'نطاق المستشفيات')) ?></b><small><?= e($tr('DIAR is limited to the two approved local database engines.', 'تقتصر منظومة DIAR على محركي قاعدة البيانات المحليين المعتمدين.')) ?></small></span>
                            <span class="rule-group-count"><?= e((string)count($branches)) ?></span>
                            <span class="rule-group-chevron" aria-hidden="true">⌄</span>
                        </summary>
                        <div class="branch-scope-grid">
                            <?php $scopeMap = []; foreach ($scopes as $scope) { $scopeMap[strtoupper((string)$scope['scope_code'])] = strtoupper((string)$scope['effect_code']); } ?>
                            <?php foreach ($branches as $branch): ?>
                                <?php $code = strtoupper((string)$branch['hospital_code']); $included = ($scopeMap[$code] ?? 'EXCLUDE') === 'INCLUDE'; ?>
                                <label class="branch-scope-card" data-rule-field data-search-text="<?= e(strtolower($code . ' ' . (string)$branch['name_en'] . ' ' . (string)$branch['name_ar'])) ?>">
                                    <span><b><?= e($code) ?></b><small><?= e($isAr && !empty($branch['name_ar']) ? (string)$branch['name_ar'] : (string)$branch['name_en']) ?></small></span>
                                    <select name="scopes[<?= e($code) ?>]" <?= $isEditableVersion ? '' : 'disabled aria-disabled="true"' ?>>
                                        <option value="INCLUDE" <?= $included ? 'selected' : '' ?>><?= e($tr('Included', 'مشمول')) ?></option>
                                        <option value="EXCLUDE" <?= !$included ? 'selected' : '' ?>><?= e($tr('Excluded', 'مستبعد')) ?></option>
                                    </select>
                                    <?php if (!$isEditableVersion): ?><input type="hidden" name="scopes[<?= e($code) ?>]" value="<?= $included ? 'INCLUDE' : 'EXCLUDE' ?>"><?php endif; ?>
                                </label>
                            <?php endforeach; ?>
                        </div>
                    </details>

                    <?php if ($isDraft): ?>
                        <?php if ($canManage): ?>
                            <label class="change-reason">
                                <span><?= e($tr('Governance reason for this revision', 'سبب الحوكمة لهذا التعديل')) ?></span>
                                <textarea name="change_reason" maxlength="1000" required><?= e((string)($selected['change_reason'] ?? '')) ?></textarea>
                            </label>
                        <?php else: ?>
                            <input type="hidden" name="change_reason" value="<?= e((string)($selected['change_reason'] ?? 'Governed update')) ?>">
                        <?php endif; ?>
                        <div class="action-row sticky-actions" data-sticky-actions>
                            <div class="action-row-copy"><strong><?= e($tr('Draft workflow', 'مسار عمل المسودة')) ?></strong><span><?= e($tr('Save changes, run the controlled test, then request approval.', 'احفظ التغييرات ثم نفّذ الاختبار المحكوم واطلب الاعتماد.')) ?></span></div>
                            <div class="action-buttons">
                                <?php if ($canManage): ?><button class="diar4a-button primary" name="action" value="save_draft"><?= e($tr('Save draft', 'حفظ المسودة')) ?></button><?php endif; ?>
                                <?php if ($canDryRun): ?><button class="diar4a-button" name="action" value="request_dry_run"><?= e($tr('Run controlled test', 'تشغيل الاختبار المحكوم')) ?></button><?php endif; ?>
                                <?php if ($canApprove): ?><button class="diar4a-button" name="action" value="approve"><?= e($tr('Approve after PASS', 'اعتماد بعد النجاح')) ?></button><?php endif; ?>
                                <a class="diar4a-button ghost" href="<?= e($activeUrl) ?>"><?= e($tr('Review active version', 'مراجعة الإصدار النشط')) ?></a>
                            </div>
                        </div>
                    <?php elseif ($canActivate && $selectedStatus === 'APPROVED'): ?>
                        <div class="action-row sticky-actions activation-actions">
                            <div class="action-row-copy"><strong><?= e($tr('Approved version ready for activation', 'إصدار معتمد جاهز للتفعيل')) ?></strong><span><?= e($tr('Activation retires the current active version and preserves full audit history.', 'يؤدي التفعيل إلى إحالة الإصدار النشط الحالي للتقاعد مع حفظ سجل التدقيق كاملًا.')) ?></span></div>
                            <button class="diar4a-button danger" name="action" value="activate"><?= e($tr('Activate this version', 'تفعيل هذا الإصدار')) ?></button>
                        </div>
                    <?php else: ?>
                        <div class="readonly-footer">
                            <strong><?= e($tr('This version is protected and read only.', 'هذا الإصدار محمي ومتاح للقراءة فقط.')) ?></strong>
                            <span><?= e($tr('Use the version panel to create a governed draft when a change is required.', 'استخدم لوحة الإصدارات لإنشاء مسودة محكومة عند الحاجة إلى تعديل.')) ?></span>
                        </div>
                    <?php endif; ?>
                </form>
            </main>
        </div>

        <div class="diar4a-lower-grid">
            <section class="diar4a-panel history-panel">
                <div class="panel-head"><div><h3><?= e($tr('Controlled-test history', 'سجل الاختبارات المحكومة')) ?></h3><p><?= e($tr('A draft cannot be approved without a successful controlled test.', 'لا يمكن اعتماد المسودة دون نجاح الاختبار المحكوم.')) ?></p></div></div>
                <?php if ($dryRuns === []): ?>
                    <div class="panel-empty-state"><span>◎</span><strong><?= e($tr('No controlled tests yet', 'لا توجد اختبارات محكومة بعد')) ?></strong><p><?= e($tr('Create and save a draft, then run the controlled test to compare its impact.', 'أنشئ مسودة واحفظها ثم شغّل الاختبار المحكوم لمقارنة أثرها.')) ?></p></div>
                <?php else: ?>
                    <div class="simple-table"><table><thead><tr><th>ID</th><th><?= e($tr('Status', 'الحالة')) ?></th><th><?= e($tr('Requested', 'وقت الطلب')) ?></th><th><?= e($tr('Before', 'قبل')) ?></th><th><?= e($tr('After', 'بعد')) ?></th><th><?= e($tr('Change', 'التغير')) ?></th></tr></thead><tbody><?php foreach ($dryRuns as $run): ?><tr><td><?= e((string)$run['dry_run_id']) ?></td><td><span class="status <?= e($statusClass(strtoupper((string)$run['status_code']))) ?>"><?= e($statusLabel(strtoupper((string)$run['status_code']))) ?></span></td><td><?= e((string)$run['requested_at']) ?></td><td><?= e((string)$run['before_cases']) ?></td><td><?= e((string)$run['after_cases']) ?></td><td><?= e((string)$run['delta_cases']) ?></td></tr><?php endforeach; ?></tbody></table></div>
                <?php endif; ?>
            </section>
            <section class="diar4a-panel history-panel">
                <div class="panel-head"><div><h3><?= e($tr('Governance history', 'سجل الحوكمة')) ?></h3><p><?= e($tr('Traceable record of configuration actions.', 'سجل قابل للتتبع لإجراءات الإعدادات.')) ?></p></div></div>
                <?php if ($auditRows === []): ?>
                    <div class="panel-empty-state"><span>⌁</span><strong><?= e($tr('No governance actions recorded', 'لا توجد إجراءات حوكمة مسجلة')) ?></strong><p><?= e($tr('Actions will appear here after a draft is created, tested or approved.', 'ستظهر الإجراءات هنا بعد إنشاء مسودة أو اختبارها أو اعتمادها.')) ?></p></div>
                <?php else: ?>
                    <div class="audit-list"><?php foreach ($auditRows as $row): ?><article><span><?= e(ucwords(strtolower(str_replace('_', ' ', (string)$row['action_code'])))) ?></span><strong><?= e((string)$row['target_key']) ?></strong><small><?= e((string)$row['actor_username']) ?> · <?= e((string)$row['created_at']) ?></small></article><?php endforeach; ?></div>
                <?php endif; ?>
            </section>
        </div>
    <?php endif; ?>
</section>
