// ============================================================
// i18n.js — 3 Languages + Dark/Light Mode (shared across all pages)
// ============================================================
const I18N = {
  ar: {
    dir:'rtl', lang:'ar',
    brand:'قضيتي', brand_sub:'نظام القضايا القضائية',
    nav_features:'الميزات', nav_roles:'الأدوار', nav_workflow:'آلية العمل',
    nav_login:'دخول', nav_register:'تسجيل محامي',
    hero_chip:'المنصة القضائية الرقمية — الجزائر',
    hero_h1a:'إدارة ', hero_h1b:'القضايا القضائية', hero_h1c:'بكفاءة واحترافية',
    hero_p:'منصة رقمية متكاملة تُمكّن المحاكم ومكاتب المحامين من إدارة الملفات القضائية، جدولة الجلسات، تسجيل المحاضر وإصدار الأحكام — كل ذلك في مكان واحد آمن.',
    hero_btn1:'تسجيل الدخول', hero_btn2:'تسجيل كمحامي',
    num1_lbl:'أدوار متخصصة', num2_lbl:'وحدة وظيفية', num3_lbl:'أمان وتشفير', num4_lbl:'عربي كامل',
    mock_title:'قضيتي — لوحة التحكم', mock_cases:'إجمالي القضايا', mock_sess:'جلسات اليوم', mock_judg:'أحكام صادرة', mock_pend:'طلبات معلقة',
    mock_open:'مفتوحة', mock_adj:'مؤجلة', mock_app:'استئناف',
    float1_t:'نظام RBAC', float1_s:'صلاحيات متعددة', float2_t:'إشعارات فورية', float2_s:'لجميع الأطراف',
    feat_chip:'الميزات الرئيسية', feat_h:'كل ما تحتاجه في منصة واحدة', feat_p:'مبني خصيصاً للمنظومة القضائية الجزائرية مع مراعاة كافة المتطلبات الإجرائية',
    f1_h:'إدارة القضايا', f1_p:'تسجيل وتتبع القضايا عبر جميع مراحلها القانونية بشكل منظم.', f1_1:'ترقيم تلقائي (QD-YYYY-XXXX)', f1_2:'تصنيف حسب النوع والأولوية', f1_3:'تتبع المراحل حتى القرار النهائي', f1_4:'ربط المحامين بالقضايا',
    f2_h:'إدارة الجلسات', f2_p:'جدولة الجلسات ومتابعتها مع إشعار تلقائي لجميع الأطراف.', f2_1:'جدولة بالتاريخ والقاعة والقاضي', f2_2:'إشعار فوري للمحامين', f2_3:'تأجيل تلقائي مع تاريخ جديد', f2_4:'متابعة حالة كل جلسة',
    f3_h:'المحاضر والأحكام', f3_p:'كتابة محاضر الجلسات وإصدار الأحكام مع منطوق كامل.', f3_1:'كتابة محاضر تفصيلية', f3_2:'تسجيل الحضور والغياب', f3_3:'إصدار الحكم ومنطوقه', f3_4:'اعتماد المحضر وقفله',
    f4_h:'الاستئناف والنقض', f4_p:'إدارة مراحل الطعن في الأحكام حتى الفصل النهائي.', f4_1:'تقديم طلبات مرتبطة بالحكم', f4_2:'إنشاء ملف جديد للاستئناف', f4_3:'متابعة حتى القرار النهائي',
    f5_h:'الأمان والصلاحيات', f5_p:'نظام RBAC يضمن وصول كل مستخدم لما يخصه فقط.', f5_1:'تشفير bcrypt لكلمات المرور', f5_2:'جلسات PHP آمنة مع timeout', f5_3:'سجل تدقيق لكل العمليات', f5_4:'منع الوصول غير المصرح',
    f6_h:'إدارة الوثائق', f6_p:'رفع ومراجعة وثائق المحامين مع نظام موافقة إداري.', f6_1:'رفع البطاقة المهنية والاعتماد', f6_2:'مراجعة من قِبَل الأدمن', f6_3:'قبول أو رفض مع السبب', f6_4:'إعادة الرفع عند الرفض',
    roles_chip:'أدوار المستخدمين', roles_h:'ثلاثة أدوار متخصصة', roles_p:'كل دور بصلاحيات محددة تناسب طبيعة عمله في المنظومة القضائية',
    r1_name:'أمين الضبط', r1_desc:'العمود الفقري للنظام — يدير القضايا والجلسات والمحاضر يومياً.', r1_p1:'تسجيل وإدارة القضايا', r1_p2:'جدولة الجلسات وإدارتها', r1_p3:'كتابة محاضر الجلسات', r1_p4:'إصدار الأحكام وتسجيلها', r1_p5:'إدارة ملفات الاستئناف',
    r2_name:'المحامي', r2_desc:'يتابع قضاياه وجلساته ويرفع وثائقه للحصول على الاعتماد.', r2_p1:'تسجيل الحساب ورفع الوثائق', r2_p2:'متابعة القضايا المسندة', r2_p3:'عرض مواعيد الجلسات', r2_p4:'استقبال الإشعارات الفورية',
    r3_name:'مدير النظام', r3_desc:'يشرف على المنصة ويراجع طلبات المحامين ويدير المستخدمين.', r3_p1:'مراجعة وقبول/رفض المحامين', r3_p2:'إدارة جميع المستخدمين', r3_p3:'مراقبة سجل التدقيق', r3_p4:'إعداد التقارير الإحصائية',
    wf_chip:'آلية العمل', wf_h1:'من فتح الملف', wf_h2:'إلى القرار النهائي', wf_p:'سير عمل واضح يتبع المسار القانوني الفعلي للقضايا في المحاكم الجزائرية.',
    wf_btn1:'ابدأ الآن', wf_btn2:'إنشاء حساب',
    wf1_h:'فتح الملف القضائي', wf1_p:'يُسجّل أمين الضبط القضية برقم تلقائي، يحدد نوعها وأطرافها والمحكمة المختصة.',
    wf2_h:'جدولة الجلسات', wf2_p:'تُحدَّد مواعيد الجلسات ويُشعَر المحامون المرتبطون بالقضية فوراً.',
    wf3_h:'تسجيل المحاضر والقرارات', wf3_p:'بعد كل جلسة يُكتب المحضر: تأجيل بتاريخ جديد أو حكم بمنطوق كامل.',
    wf4_h:'إصدار الحكم الابتدائي', wf4_p:'يُصدَر الحكم ويُسجَّل مع منطوقه، ويتاح تقديم الاستئناف عند الحاجة.',
    wf5_h:'الاستئناف والقرار النهائي', wf5_p:'تُتابَع مراحل الاستئناف والنقض حتى صدور القرار النهائي وأرشفة الملف.',
    cta_h:'جاهز للبدء؟', cta_p:'سجّل دخولك الآن أو أنشئ حساب محامي للوصول الكامل للمنصة',
    cta_btn1:'تسجيل الدخول', cta_btn2:'تسجيل كمحامي',
    ft_links:'روابط سريعة', ft_demo:'بيانات الدخول التجريبية', ft_desc:'نظام رقمي متكامل لإدارة القضايا القضائية — مبني خصيصاً للمنظومة القضائية في الجزائر.',
    ft_login:'تسجيل الدخول', ft_reg:'تسجيل محامي', ft_feat:'الميزات', ft_roles:'الأدوار',
    ft_admin:'مدير النظام', ft_clerk:'أمين الضبط',
    // index.php
    choose_title:'اختر مسارك', choose_sub:'سجّل دخولك أو أنشئ حساباً حسب دورك في المنظومة القضائية',
    clerk_name:'أمين الضبط', clerk_desc:'إدارة القضايا والجلسات والمحاضر والأحكام',
    lawyer_name:'المحامي', lawyer_desc:'متابعة القضايا ورفع الوثائق والاعتماد',
    btn_login:'دخول', btn_register:'تسجيل',
    choose_note:'يمكن للمحامين إنشاء حساب جديد. أمين الضبط يحتاج حساباً مُعداً مسبقاً من الإدارة.',
    login_welcome:'مرحباً بعودتك', back_choose:'العودة لاختيار المسار',
    desc_clerk:'سجّل دخولك لإدارة القضايا والجلسات', desc_admin:'ادخل بيانات حسابك الإداري المخصص', desc_lawyer:'سجّل دخولك لمتابعة ملفاتك القضائية',
    lbl_email:'البريد الإلكتروني', lbl_pass:'كلمة المرور', btn_submit_login:'تسجيل الدخول', btn_submit_admin:'دخول آمن',
    new_lawyer:'إنشاء حساب محامي جديد',
    reg_title:'إنشاء حساب محامي', reg_sub:'أدخل بياناتك المهنية للتسجيل في المنصة',
    sect_personal:'البيانات الشخصية', sect_pro:'البيانات المهنية', sect_account:'بيانات الحساب',
    lbl_name:'الاسم الكامل', lbl_phone:'الهاتف', lbl_bar:'رقم البطاقة المهنية', lbl_assoc:'هيئة المحامين', lbl_spec:'التخصص',
    lbl_pass2:'تأكيد كلمة المرور', btn_create:'إنشاء الحساب', have_account:'لديك حساب؟ سجّل الدخول',
    spec_civil:'مدني', spec_criminal:'جنائي', spec_commercial:'تجاري', spec_admin:'إداري', spec_family:'أسري', spec_real:'عقاري',
    change_path:'تغيير المسار', home:'الرئيسية',
  },
  fr: {
    dir:'rtl', lang:'fr',
    brand:'Kadiyati', brand_sub:'Gestion Judiciaire',
    nav_features:'Fonctionnalités', nav_roles:'Rôles', nav_workflow:'Processus',
    nav_login:'Connexion', nav_register:'Inscription (Avocat)',
    hero_chip:'Plateforme Judiciaire Numérique — Algérie',
    hero_h1a:'Gérez vos ', hero_h1b:'dossiers judiciaires', hero_h1c:'avec efficacité',
    hero_p:"Une plateforme numérique complète permettant aux tribunaux et cabinets d'avocats de gérer les dossiers, planifier les audiences, rédiger les PV et émettre les jugements.",
    hero_btn1:'Connexion', hero_btn2:"S'inscrire (Avocat)",
    num1_lbl:'Rôles spécialisés', num2_lbl:'Modules fonctionnels', num3_lbl:'Sécurité & Chiffrement', num4_lbl:'RTL complet',
    mock_title:'Kadiyati — Tableau de bord', mock_cases:'Total dossiers', mock_sess:"Audiences auj.", mock_judg:'Jugements émis', mock_pend:'Demandes en attente',
    mock_open:'Ouvert', mock_adj:'Ajourné', mock_app:'Appel',
    float1_t:'Système RBAC', float1_s:'Multi-niveaux', float2_t:'Notifications', float2_s:'Temps réel',
    feat_chip:'Fonctionnalités', feat_h:'Tout en une seule plateforme', feat_p:'Conçu pour le système judiciaire algérien',
    f1_h:'Gestion des dossiers', f1_p:'Enregistrement et suivi des affaires à travers toutes leurs étapes.', f1_1:'Numérotation auto (QD-YYYY-XXXX)', f1_2:'Classification par type et priorité', f1_3:"Suivi jusqu'au jugement final", f1_4:'Liaison avocats-dossiers',
    f2_h:'Gestion des audiences', f2_p:'Planification des audiences avec notification automatique.', f2_1:'Planning avec date, salle et juge', f2_2:'Notification immédiate aux avocats', f2_3:'Report avec nouvelle date', f2_4:'Suivi du statut de chaque audience',
    f3_h:'PV et Jugements', f3_p:'Rédaction des procès-verbaux et émission de jugements.', f3_1:'PV détaillés', f3_2:'Enregistrement des présences', f3_3:'Émission du jugement', f3_4:'Validation et verrouillage du PV',
    f4_h:'Appel et Cassation', f4_p:"Gestion des voies de recours jusqu'à la décision finale.", f4_1:'Demandes liées au jugement', f4_2:"Ouverture d'un nouveau dossier", f4_3:"Suivi jusqu'à la décision finale",
    f5_h:'Sécurité & Droits', f5_p:'RBAC garantissant un accès limité à chaque rôle.', f5_1:'Chiffrement bcrypt', f5_2:'Sessions sécurisées avec timeout', f5_3:"Journal d'audit complet", f5_4:'Blocage des accès non autorisés',
    f6_h:'Gestion des documents', f6_p:'Dépôt et validation des documents des avocats.', f6_1:'Carte pro & accréditation', f6_2:'Validation par admin', f6_3:'Approbation ou refus motivé', f6_4:'Re-dépôt après refus',
    roles_chip:'Rôles', roles_h:'Trois rôles spécialisés', roles_p:'Chaque rôle dispose de permissions adaptées',
    r1_name:'Greffier', r1_desc:'Pilier du système — gère les dossiers, audiences et PV.', r1_p1:'Enregistrer les dossiers', r1_p2:'Gérer les audiences', r1_p3:'Rédiger les PV', r1_p4:'Émettre les jugements', r1_p5:'Gérer les appels',
    r2_name:'Avocat', r2_desc:'Suit ses affaires, audiences et dépose ses documents.', r2_p1:'Créer un compte et déposer docs', r2_p2:'Suivre les affaires assignées', r2_p3:'Consulter le calendrier', r2_p4:'Recevoir des notifications',
    r3_name:'Administrateur', r3_desc:'Supervise la plateforme et valide les avocats.', r3_p1:'Valider/refuser les avocats', r3_p2:'Gérer tous les utilisateurs', r3_p3:"Surveiller le journal d'audit", r3_p4:'Générer des rapports',
    wf_chip:'Processus', wf_h1:"De l'ouverture", wf_h2:'à la décision finale', wf_p:'Un flux de travail clair suivant le parcours juridique réel en Algérie.',
    wf_btn1:'Commencer', wf_btn2:'Créer un compte',
    wf1_h:'Ouverture du dossier', wf1_p:"Le greffier enregistre l'affaire avec un numéro automatique.",
    wf2_h:'Planification des audiences', wf2_p:'Les dates sont fixées et les avocats notifiés immédiatement.',
    wf3_h:'Rédaction des PV', wf3_p:'Après chaque audience: report ou jugement avec dispositif complet.',
    wf4_h:'Émission du jugement', wf4_p:'Le jugement est émis et enregistré. Un appel peut être introduit.',
    wf5_h:'Décision finale', wf5_p:"Les étapes d'appel et cassation sont suivies jusqu'à l'archivage.",
    cta_h:'Prêt à commencer?', cta_p:'Connectez-vous ou créez un compte avocat pour accès complet',
    cta_btn1:'Se connecter', cta_btn2:"S'inscrire (Avocat)",
    ft_links:'Liens rapides', ft_demo:'Identifiants de test', ft_desc:'Système numérique de gestion judiciaire — Algérie.',
    ft_login:'Connexion', ft_reg:'Inscription avocat', ft_feat:'Fonctionnalités', ft_roles:'Rôles',
    ft_admin:'Administrateur', ft_clerk:'Greffier',
    choose_title:'Choisissez votre profil', choose_sub:'Connectez-vous ou créez un compte selon votre rôle',
    clerk_name:'Greffier', clerk_desc:'Gérer les dossiers, audiences et PV',
    lawyer_name:'Avocat', lawyer_desc:'Suivre vos affaires et déposer vos documents',
    btn_login:'Connexion', btn_register:'Inscription',
    choose_note:"Les avocats peuvent s'inscrire. Les greffiers ont besoin d'un compte créé par l'admin.",
    login_welcome:'Bon retour', back_choose:'Retour au choix du profil',
    desc_clerk:'Connectez-vous pour gérer les dossiers et audiences', desc_admin:'Entrez vos identifiants administrateur', desc_lawyer:'Connectez-vous pour suivre vos dossiers',
    lbl_email:'Adresse e-mail', lbl_pass:'Mot de passe', btn_submit_login:'Se connecter', btn_submit_admin:'Accès sécurisé',
    new_lawyer:"Créer un compte avocat",
    reg_title:'Inscription avocat', reg_sub:'Entrez vos informations professionnelles',
    sect_personal:'Informations personnelles', sect_pro:'Informations professionnelles', sect_account:'Informations du compte',
    lbl_name:'Nom complet', lbl_phone:'Téléphone', lbl_bar:'N° carte professionnelle', lbl_assoc:"Barreau", lbl_spec:'Spécialisation',
    lbl_pass2:'Confirmer le mot de passe', btn_create:'Créer le compte', have_account:'Déjà un compte? Se connecter',
    spec_civil:'Civil', spec_criminal:'Pénal', spec_commercial:'Commercial', spec_admin:'Administratif', spec_family:'Familial', spec_real:'Immobilier',
    change_path:'Changer de profil', home:'Accueil',
  },
  en: {
    dir:'rtl', lang:'en',
    brand:'Kadiyati', brand_sub:'Legal Case Management',
    nav_features:'Features', nav_roles:'Roles', nav_workflow:'Workflow',
    nav_login:'Login', nav_register:'Register (Lawyer)',
    hero_chip:'Digital Legal Platform — Algeria',
    hero_h1a:'Manage your ', hero_h1b:'Legal Cases', hero_h1c:'with Efficiency',
    hero_p:'A complete digital platform enabling courts and law offices to manage case files, schedule hearings, record minutes, and issue judgments — all in one secure place.',
    hero_btn1:'Login', hero_btn2:'Register as Lawyer',
    num1_lbl:'Specialized roles', num2_lbl:'Functional modules', num3_lbl:'Security & Encryption', num4_lbl:'Full RTL',
    mock_title:'Kadiyati — Dashboard', mock_cases:'Total Cases', mock_sess:"Today's Hearings", mock_judg:'Judgments Issued', mock_pend:'Pending Requests',
    mock_open:'Open', mock_adj:'Adjourned', mock_app:'Appeal',
    float1_t:'RBAC System', float1_s:'Multi-level access', float2_t:'Real-time Alerts', float2_s:'All parties',
    feat_chip:'Key Features', feat_h:'Everything you need in one platform', feat_p:'Built specifically for the Algerian judicial system',
    f1_h:'Case Management', f1_p:'Register and track cases through all their legal stages.', f1_1:'Auto-numbering (QD-YYYY-XXXX)', f1_2:'Classification by type & priority', f1_3:'Stage tracking to final judgment', f1_4:'Link lawyers to cases',
    f2_h:'Hearing Management', f2_p:'Schedule hearings with automatic notifications.', f2_1:'Schedule with date, room & judge', f2_2:'Instant notification to lawyers', f2_3:'Auto-adjournment with new date', f2_4:'Status tracking per hearing',
    f3_h:'Minutes & Judgments', f3_p:'Write hearing minutes and issue judgments.', f3_1:'Detailed minute writing', f3_2:'Attendance recording', f3_3:'Judgment issuance', f3_4:'Minutes approval & locking',
    f4_h:'Appeals & Cassation', f4_p:'Manage appeal stages until final decision.', f4_1:'Requests linked to judgment', f4_2:'Open new appeal case', f4_3:'Track to final decision',
    f5_h:'Security & Permissions', f5_p:'RBAC system ensuring restricted access per role.', f5_1:'bcrypt password encryption', f5_2:'Secure sessions with timeout', f5_3:'Full audit log', f5_4:'Unauthorized access blocked',
    f6_h:'Document Management', f6_p:'Upload and review lawyer documents with admin approval.', f6_1:'Professional card & accreditation', f6_2:'Admin review', f6_3:'Approve or reject with reason', f6_4:'Re-upload after rejection',
    roles_chip:'User Roles', roles_h:'Three Specialized Roles', roles_p:'Each role has defined permissions suited to its function',
    r1_name:'Court Clerk', r1_desc:'The backbone — manages cases, hearings and minutes daily.', r1_p1:'Register and manage cases', r1_p2:'Schedule and manage hearings', r1_p3:'Write hearing minutes', r1_p4:'Issue judgments', r1_p5:'Manage appeal files',
    r2_name:'Lawyer', r2_desc:'Tracks cases and hearings, uploads documents for accreditation.', r2_p1:'Register account & upload docs', r2_p2:'Track assigned cases', r2_p3:'View hearing schedules', r2_p4:'Receive real-time notifications',
    r3_name:'Administrator', r3_desc:'Oversees the platform, reviews lawyers and manages users.', r3_p1:'Review and approve/reject lawyers', r3_p2:'Manage all users', r3_p3:'Monitor audit log', r3_p4:'Generate statistical reports',
    wf_chip:'Workflow', wf_h1:'From case opening', wf_h2:'to final decision', wf_p:'A clear workflow following the actual legal path of cases in Algerian courts.',
    wf_btn1:'Get Started', wf_btn2:'Create Account',
    wf1_h:'Open the Case File', wf1_p:'The clerk registers the case with an auto-number, type, parties and court.',
    wf2_h:'Schedule Hearings', wf2_p:'Hearing dates are set and connected lawyers are immediately notified.',
    wf3_h:'Record Minutes', wf3_p:'After each hearing: adjournment with new date or judgment with full operative part.',
    wf4_h:'Issue Judgment', wf4_p:'The judgment is issued and recorded. Appeals can be filed if needed.',
    wf5_h:'Final Decision', wf5_p:'Appeal and cassation stages are tracked until the final decision and archiving.',
    cta_h:'Ready to get started?', cta_p:'Log in now or create a lawyer account for full platform access',
    cta_btn1:'Login', cta_btn2:'Register as Lawyer',
    ft_links:'Quick Links', ft_demo:'Test Credentials', ft_desc:'Digital legal case management system — Algeria.',
    ft_login:'Login', ft_reg:'Register (Lawyer)', ft_feat:'Features', ft_roles:'Roles',
    ft_admin:'Administrator', ft_clerk:'Court Clerk',
    choose_title:'Choose Your Path', choose_sub:'Login or create an account based on your role',
    clerk_name:'Court Clerk', clerk_desc:'Manage cases, hearings, minutes and judgments',
    lawyer_name:'Lawyer', lawyer_desc:'Track your cases and upload your documents',
    btn_login:'Login', btn_register:'Register',
    choose_note:'Lawyers can self-register. Court clerks need an account created by the admin.',
    login_welcome:'Welcome Back', back_choose:'Back to path selection',
    desc_clerk:'Login to manage cases and hearings', desc_admin:'Enter your admin credentials', desc_lawyer:'Login to track your legal files',
    lbl_email:'Email Address', lbl_pass:'Password', btn_submit_login:'Login', btn_submit_admin:'Secure Access',
    new_lawyer:'Create a lawyer account',
    reg_title:'Lawyer Registration', reg_sub:'Enter your professional information to register',
    sect_personal:'Personal Information', sect_pro:'Professional Information', sect_account:'Account Credentials',
    lbl_name:'Full Name', lbl_phone:'Phone Number', lbl_bar:'Bar Card Number', lbl_assoc:'Bar Association', lbl_spec:'Specialization',
    lbl_pass2:'Confirm Password', btn_create:'Create Account', have_account:'Already have an account? Login',
    spec_civil:'Civil', spec_criminal:'Criminal', spec_commercial:'Commercial', spec_admin:'Administrative', spec_family:'Family', spec_real:'Real Estate',
    change_path:'Change Path', home:'Home',
  }
};

// ── Logo SVG (Scales of Justice) ──
const LOGO_SVG = `<svg width="26" height="26" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
  <rect width="32" height="32" rx="8" fill="url(#lg)"/>
  <defs><linearGradient id="lg" x1="0" y1="0" x2="32" y2="32" gradientUnits="userSpaceOnUse">
    <stop stop-color="#C9A84C"/><stop offset="1" stop-color="#E8C97A"/>
  </linearGradient></defs>
  <line x1="16" y1="6" x2="16" y2="26" stroke="#0A1628" stroke-width="2" stroke-linecap="round"/>
  <line x1="8" y1="8" x2="24" y2="8" stroke="#0A1628" stroke-width="2" stroke-linecap="round"/>
  <line x1="8" y1="8" x2="5" y2="15" stroke="#0A1628" stroke-width="1.5" stroke-linecap="round"/>
  <line x1="8" y1="8" x2="11" y2="15" stroke="#0A1628" stroke-width="1.5" stroke-linecap="round"/>
  <path d="M4.5 15 Q8 17.5 11.5 15" stroke="#0A1628" stroke-width="1.5" fill="none" stroke-linecap="round"/>
  <line x1="24" y1="8" x2="21" y2="15" stroke="#0A1628" stroke-width="1.5" stroke-linecap="round"/>
  <line x1="24" y1="8" x2="27" y2="15" stroke="#0A1628" stroke-width="1.5" stroke-linecap="round"/>
  <path d="M20.5 15 Q24 17.5 27.5 15" stroke="#0A1628" stroke-width="1.5" fill="none" stroke-linecap="round"/>
  <line x1="11" y1="26" x2="21" y2="26" stroke="#0A1628" stroke-width="2" stroke-linecap="round"/>
</svg>`;

// ── State ──
let _lang = localStorage.getItem('kadiyati_lang') || 'ar';
let _dark = localStorage.getItem('kadiyati_dark') === '1';

function t(k){ return (I18N[_lang]||I18N.ar)[k] || k; }

function applyLang(l){
  _lang = l;
  localStorage.setItem('kadiyati_lang', l);
  document.documentElement.lang = I18N[l].lang;
  // update all [data-i18n] elements
  document.querySelectorAll('[data-i18n]').forEach(el=>{
    const k = el.getAttribute('data-i18n');
    const v = t(k);
    if(v !== k) el.textContent = v;
  });
  // active lang btn
  document.querySelectorAll('.lang-btn').forEach(b=>{
    b.classList.toggle('active', b.dataset.lang === l);
  });
  // inject logos
  document.querySelectorAll('.logo-svg-wrap').forEach(w=>{ w.innerHTML=LOGO_SVG; });
}

function toggleDark(){
  _dark = !_dark;
  localStorage.setItem('kadiyati_dark', _dark ? '1' : '0');
  applyDark();
}

function applyDark(){
  document.documentElement.setAttribute('data-theme', _dark ? 'dark' : 'light');
  document.querySelectorAll('.dark-ico').forEach(i=>{
    i.className = _dark ? 'bi bi-sun dark-ico' : 'bi bi-moon dark-ico';
  });
}

function initI18n(){
  applyLang(_lang);
  applyDark();
}

document.addEventListener('DOMContentLoaded', initI18n);