{"id":1361,"date":"2025-08-10T08:13:45","date_gmt":"2025-08-10T08:13:45","guid":{"rendered":"https:\/\/safebrowsing.cmc.iq\/?page_id=1361"},"modified":"2025-08-25T08:01:09","modified_gmt":"2025-08-25T08:01:09","slug":"password-strength-lab","status":"publish","type":"page","link":"https:\/\/safebrowsing.cmc.iq\/index.php\/password-strength-lab\/","title":{"rendered":"Cyber Escape Room"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1361\" class=\"elementor elementor-1361\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f95ce67 ekit-sticky--top e-flex e-con-boxed e-con e-child\" data-id=\"f95ce67\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;ekit_sticky&quot;:&quot;top&quot;,&quot;ekit_sticky_offset&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;ekit_sticky_offset_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_offset_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_on_desktop&quot;:&quot;desktop&quot;,&quot;ekit_sticky_on_tablet&quot;:&quot;tablet&quot;,&quot;ekit_sticky_on_mobile&quot;:&quot;mobile&quot;,&quot;ekit_sticky_effect_offset&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;ekit_sticky_effect_offset_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;ekit_sticky_effect_offset_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ccffe10 elementor-widget__width-initial elementor-widget elementor-widget-image\" data-id=\"ccffe10\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/safebrowsing.cmc.iq\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/safebrowsing.cmc.iq\/wp-content\/uploads\/2025\/04\/logo-aman0net.png\" title=\"\" alt=\"\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1aa69a5 elementor-widget elementor-widget-ekit-nav-menu\" data-id=\"1aa69a5\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"ekit-nav-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<nav class=\"ekit-wid-con ekit_menu_responsive_tablet\" \n\t\t\tdata-hamburger-icon=\"\" \n\t\t\tdata-hamburger-icon-type=\"icon\" \n\t\t\tdata-responsive-breakpoint=\"1024\">\n\t\t\t            <button class=\"elementskit-menu-hamburger elementskit-menu-toggler\"  type=\"button\" aria-label=\"hamburger-icon\">\n                                    <span class=\"elementskit-menu-hamburger-icon\"><\/span><span class=\"elementskit-menu-hamburger-icon\"><\/span><span class=\"elementskit-menu-hamburger-icon\"><\/span>\n                            <\/button>\n            <div id=\"ekit-megamenu-%d8%a7%d9%84%d9%82%d8%a7%d8%a6%d9%85%d8%a9-%d8%a7%d9%84%d8%b1%d8%a6%d9%8a%d8%b3%d9%8a%d8%a9\" class=\"elementskit-menu-container elementskit-menu-offcanvas-elements elementskit-navbar-nav-default ekit-nav-menu-one-page-yes ekit-nav-dropdown-hover\"><ul id=\"menu-%d8%a7%d9%84%d9%82%d8%a7%d8%a6%d9%85%d8%a9-%d8%a7%d9%84%d8%b1%d8%a6%d9%8a%d8%b3%d9%8a%d8%a9\" class=\"elementskit-navbar-nav elementskit-menu-po-right submenu-click-on-icon\"><li id=\"menu-item-665\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-home menu-item-665 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/\" class=\"ekit-menu-nav-link\">\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629<\/a><\/li>\n<li id=\"menu-item-1252\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1252 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/games\/\" class=\"ekit-menu-nav-link\">\u0623\u0644\u0639\u0627\u0628 \u062a\u0639\u0644\u064a\u0645\u064a\u0629<\/a><\/li>\n<li id=\"menu-item-1615\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1615 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/faq\/\" class=\"ekit-menu-nav-link\">\u0627\u0633\u0626\u0644\u0629 \u0634\u0627\u0626\u0639\u0629<\/a><\/li>\n<li id=\"menu-item-1595\" class=\"menu-item menu-item-type-post_type menu-item-object-page menu-item-1595 nav-item elementskit-mobile-builder-content\" data-vertical-menu=750px><a href=\"https:\/\/safebrowsing.cmc.iq\/index.php\/story\/\" class=\"ekit-menu-nav-link\">\u0627\u0644\u0642\u0635\u0635 \u0627\u0644\u062a\u0648\u0639\u0648\u064a\u0629<\/a><\/li>\n<\/ul><div class=\"elementskit-nav-identity-panel\"><button class=\"elementskit-menu-close elementskit-menu-toggler\" type=\"button\">X<\/button><\/div><\/div>\t\t\t\n\t\t\t<div class=\"elementskit-menu-overlay elementskit-menu-offcanvas-elements elementskit-menu-toggler ekit-nav-menu--overlay\"><\/div>        <\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1017898 e-con-full elementor-hidden-tablet elementor-hidden-mobile e-flex e-con e-child\" data-id=\"1017898\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0fee1a0 elementor-widget__width-auto elementor-hidden-tablet elementor-hidden-mobile elementor-align-center elementor-widget elementor-widget-elementskit-button\" data-id=\"0fee1a0\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"elementskit-button.default\">\n\t\t\t\t\t<div class=\"ekit-wid-con\" >\t\t<div class=\"ekit-btn-wraper\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/safebrowsing.cmc.iq\/wp-admin\/post.php?post=1567&#038;action=elementor\" class=\"elementskit-btn  whitespace--normal\" id=\"\">\n\t\t\t\t\t\u0634\u0627\u0647\u062f \u0627\u0644\u0642\u0635\u0635 \t\t\t\t<\/a>\n\t\t\t\t\t<\/div>\n        <\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-26f4298 e-flex e-con-boxed e-con e-parent\" data-id=\"26f4298\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d7d0a9a elementor-widget elementor-widget-html\" data-id=\"d7d0a9a\" data-element_type=\"widget\" data-settings=\"{&quot;ekit_we_effect_on&quot;:&quot;none&quot;}\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"ar\" dir=\"rtl\">\r\n<head>\r\n<meta charset=\"utf-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\r\n<title>\ud83d\udddd\ufe0f Cyber Escape Room<\/title>\r\n<style>\r\n:root{\r\n  --bg:#0a1528; --bg2:#0e1e3a; --panel:#0f2344; --card:#0f1f3f;\r\n  --stroke:#17345a; --accent:#22d3ee; --accent2:#38bdf8;\r\n  --ok:#10b981; --warn:#f59e0b; --danger:#ef4444; --text:#e8f4ff; --muted:#a9c9ff;\r\n}\r\n*{box-sizing:border-box}\r\nhtml,body{height:100%;margin:0;background:linear-gradient(180deg,var(--bg),var(--bg2));color:var(--text);font-family:system-ui,-apple-system,\"Segoe UI\",Roboto,Arial}\r\n.wrap{min-height:100%;display:grid;grid-template-rows:auto 1fr auto}\r\nheader{position:sticky;top:0;z-index:3;background:rgba(8,20,44,.75);backdrop-filter:blur(8px);border-bottom:1px solid var(--stroke)}\r\n.bar{max-width:1200px;margin:auto;display:flex;gap:10px;align-items:center;justify-content:space-between;padding:10px 14px;flex-wrap:wrap}\r\n.title{display:flex;gap:10px;align-items:center;font-weight:800}\r\n.chip{font-size:12px;border:1px solid var(--stroke);background:rgba(2,6,23,.55);padding:4px 10px;border-radius:999px}\r\n.input, select{padding:10px 12px;border-radius:12px;border:1px solid var(--stroke);background:#0f1e47;color:var(--text)}\r\n.btn{border:0;border-radius:12px;padding:10px 14px;background:#16306d;color:var(--text);cursor:pointer;transition:transform .12s ease,filter .2s}\r\n.btn:hover{filter:brightness(1.08)}\r\n.btn:active{transform:scale(.98)}\r\n.btn.primary{background:linear-gradient(90deg,var(--accent),var(--accent2))}\r\nmain{max-width:1200px;margin:18px auto;padding:10px}\r\n.card{background:linear-gradient(180deg,rgba(31,41,55,.28),rgba(17,24,39,.28));border:1px solid var(--stroke);border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.25);overflow:hidden}\r\n.head{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--stroke)}\r\n.stats{display:flex;gap:10px;flex-wrap:wrap}\r\n.stat{display:flex;gap:6px;align-items:center;font-size:13px;background:#0d1a3a;border:1px solid var(--stroke);padding:6px 10px;border-radius:10px}\r\n.body{padding:18px}\r\n.meta{font-size:13px;color:var(--muted);margin-bottom:10px}\r\n.hidden{display:none}\r\nfooter{opacity:.8;text-align:center;padding:10px;border-top:1px solid var(--stroke)}\r\n\r\n\/* room look *\/\r\n.room{display:grid;gap:16px}\r\n.block{padding:14px;border:1px solid var(--stroke);border-radius:14px;background:#0f1e47}\r\n.block h3{margin:0 0 8px}\r\n\r\n\/* puzzle pieces *\/\r\n.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}\r\n.input.full{width:100%}\r\n.badge{font-size:12px;border:1px solid var(--stroke);background:#0b2037;padding:4px 8px;border-radius:8px}\r\n.hint{padding:8px;border-right:4px solid var(--accent);border-radius:8px;background:rgba(2,6,23,.45);margin-top:8px}\r\n.ok{color:#10b981} .warn{color:#f59e0b} .danger{color:#ef4444}\r\n.result{margin-top:8px;padding:8px;border-radius:10px;border:1px solid var(--stroke);background:#0c1a36}\r\n.grid2{display:grid;grid-template-columns:1fr;gap:12px}\r\n@media(min-width:900px){ .grid2{grid-template-columns:1fr 1fr} }\r\n.switch{display:flex;align-items:center;gap:8px}\r\n.switch input{width:42px;height:24px}\r\n.list{display:grid;gap:8px}\r\n.option{padding:10px;border:1px solid var(--stroke);border-radius:10px;background:#0b1c3e;cursor:pointer}\r\n.option.correct{border-color:var(--ok);background:rgba(16,185,129,.1)}\r\n.option.wrong{border-color:var(--danger);background:rgba(239,68,68,.1)}\r\n.kbd{font-family:ui-monospace,monospace;background:#0b2037;border:1px solid var(--stroke);padding:2px 6px;border-radius:6px}\r\n\r\n\/* certificate *\/\r\n.end{text-align:center;padding:20px}\r\n.end .big{font-size:22px;font-weight:800;margin-bottom:6px}\r\n.end .score{font-size:18px;margin:6px 0}\r\ncanvas{max-width:100%;border:1px solid var(--stroke);border-radius:12px;margin-top:12px}\r\n\r\n\/* subtle backdrop grid *\/\r\n.bgfx{position:fixed;inset:0;pointer-events:none;z-index:0;background:\r\n  radial-gradient(700px 300px at 50% -10%, rgba(56,189,248,.14), transparent 60%),\r\n  linear-gradient(0deg, transparent 96%, rgba(34,211,238,.06) 100%),\r\n  linear-gradient(90deg, transparent 96%, rgba(34,211,238,.06) 100%)\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"bgfx\"><\/div>\r\n<div class=\"wrap\">\r\n<header>\r\n  <div class=\"bar\">\r\n    <div class=\"title\">\ud83d\udddd\ufe0f Cyber Escape Room <span class=\"chip\" id=\"modeChip\">\u0648\u0636\u0639: \u0627\u062e\u062a\u0628\u0627\u0631<\/span><\/div>\r\n    <div class=\"row\" style=\"display:flex;gap:10px;align-items:center;flex-wrap:wrap\">\r\n      <input id=\"playerName\" class=\"input\" placeholder=\"\u0627\u0633\u0645 \u0627\u0644\u0644\u0627\u0639\u0628\" \/>\r\n      <select id=\"difficulty\">\r\n        <option value=\"easy\" selected>\u0633\u0647\u0644 (10 \u062f\u0642\u0627\u0626\u0642)<\/option>\r\n        <option value=\"med\">\u0645\u062a\u0648\u0633\u0637 (7 \u062f\u0642\u0627\u0626\u0642)<\/option>\r\n        <option value=\"hard\">\u0635\u0639\u0628 (5 \u062f\u0642\u0627\u0626\u0642)<\/option>\r\n      <\/select>\r\n      <label class=\"chip\" style=\"display:flex;align-items:center;gap:6px;cursor:pointer\">\r\n        <input id=\"hints\" type=\"checkbox\" checked> \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u062a\u0644\u0645\u064a\u062d\u0627\u062a\r\n      <\/label>\r\n      <button class=\"btn primary\" id=\"btnStart\">\u0627\u0628\u062f\u0623 \u0627\u0644\u0647\u0631\u0648\u0628<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/header>\r\n\r\n<main>\r\n  <section class=\"card\" id=\"gameCard\">\r\n    <div class=\"head\">\r\n      <div class=\"stats\">\r\n        <div class=\"stat\">\u0627\u0644\u0645\u0631\u062d\u0627\u062a: <b id=\"stageIdx\">0<\/b>\/<span id=\"stageTotal\">4<\/span><\/div>\r\n        <div class=\"stat\">\u0627\u0644\u0646\u0642\u0627\u0637: <b id=\"score\">0<\/b><\/div>\r\n        <div class=\"stat\">\u0642\u0644\u0648\u0628 \u2764: <b id=\"lives\">3<\/b><\/div>\r\n        <div class=\"stat\">\u0627\u0644\u0648\u0642\u062a \u23f3: <b id=\"timer\">600<\/b><span> s<\/span><\/div>\r\n      <\/div>\r\n      <span class=\"chip\" id=\"diffChip\">\u0627\u0644\u0635\u0639\u0648\u0628\u0629: \u2014<\/span>\r\n    <\/div>\r\n\r\n    <div class=\"body\">\r\n      <div class=\"meta\" id=\"meta\">\u062d\u0644\u0651 \u0627\u0644\u0623\u0644\u063a\u0627\u0632 \u0627\u0644\u0623\u0631\u0628\u0639\u0629 \u0644\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0627\u0644\u063a\u0631\u0641\u0629. \u0627\u0644\u0623\u062e\u0637\u0627\u0621 \u062a\u062e\u0635\u0645 \u0642\u0644\u0648\u0628\u064b\u0627. \u0627\u0644\u062a\u0644\u0645\u064a\u062d\u0627\u062a \u062a\u0633\u0627\u0639\u062f\u0643 \u0625\u0646 \u0623\u0631\u062f\u062a.<\/div>\r\n\r\n      <div id=\"room\" class=\"room hidden\">\r\n        <!-- Stage 1: Password lock -->\r\n        <div id=\"stage1\" class=\"block hidden\">\r\n          <h3>\ud83d\udd10 \u0642\u0641\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631<\/h3>\r\n          <div class=\"grid2\">\r\n            <div>\r\n              <div class=\"row\">\r\n                <input id=\"pwInput\" class=\"input full\" type=\"text\" placeholder=\"\u0623\u062f\u062e\u0644 \u0627\u0644\u0643\u0644\u0645\u0629 \u0644\u0641\u062a\u062d \u0627\u0644\u0642\u0641\u0644\">\r\n                <button class=\"btn\" id=\"pwCheck\">\u062a\u062d\u0642\u0642<\/button>\r\n              <\/div>\r\n              <div class=\"hint\" id=\"pwHint\" hidden>\r\n                \u2705 \u0627\u0644\u0634\u0631\u0648\u0637: 8+ \u0623\u062d\u0631\u0641\u060c \u062d\u0631\u0641 \u0643\u0628\u064a\u0631 \u0648\u0627\u062d\u062f \u0639\u0644\u0649 \u0627\u0644\u0623\u0642\u0644\u060c \u0631\u0642\u0645\u060c \u0631\u0645\u0632 \u062e\u0627\u0635<br>\r\n                \ud83d\udeab \u0644\u0627 \u062a\u0633\u062a\u062e\u062f\u0645 \u0643\u0644\u0645\u0629 <span class=\"kbd\">admin<\/span> \u0623\u0648 \u062c\u0632\u0621\u064b\u0627 \u0645\u0646\u0647\u0627.\r\n              <\/div>\r\n              <div class=\"result\" id=\"pwResult\"><\/div>\r\n            <\/div>\r\n            <div>\r\n              <div class=\"badge\">\u0645\u0627\u0633\u062d \u0627\u0644\u0642\u0648\u0629<\/div>\r\n              <div id=\"pwBars\" style=\"display:grid;gap:6px;margin-top:6px\"><\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"row\" style=\"margin-top:10px;justify-content:flex-end\">\r\n            <button class=\"btn\" id=\"pwNext\" disabled>\u0627\u0644\u062a\u0627\u0644\u064a \u2b9e<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Stage 2: Links -->\r\n        <div id=\"stage2\" class=\"block hidden\">\r\n          <h3>\ud83e\udded \u0623\u064a \u0631\u0627\u0628\u0637 \u0622\u0645\u0646\u061f<\/h3>\r\n          <div class=\"meta\">\u0627\u062e\u062a\u0631 \u0627\u0644\u0631\u0627\u0628\u0637 \u0627\u0644\u0648\u062d\u064a\u062f \u0627\u0644\u0622\u0645\u0646 \u0645\u0646 \u0627\u0644\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u062a\u0627\u0644\u064a\u0629:<\/div>\r\n          <div id=\"linksList\" class=\"list\"><\/div>\r\n          <div class=\"hint\" id=\"linksHint\" hidden>\r\n            \u0627\u0628\u062d\u062b \u0639\u0646 <b>https<\/b>\u060c \u0646\u0637\u0627\u0642 \u0635\u062d\u064a\u062d \u063a\u064a\u0631 \u0645\u0645\u0648\u0647 (\u0628\u062f\u0648\u0646 \u0623\u062d\u0631\u0641 \u0645\u0633\u062a\u0628\u062f\u0644\u0629 \u0645\u062b\u0644 \u0261 \u0623\u0648 \u0131)\u060c \u0648\u0644\u0627 \u0627\u062e\u062a\u0635\u0627\u0631\u0627\u062a \u0645\u062c\u0647\u0648\u0644\u0629.\r\n          <\/div>\r\n          <div class=\"result\" id=\"linksResult\"><\/div>\r\n          <div class=\"row\" style=\"margin-top:10px;justify-content:flex-end\">\r\n            <button class=\"btn\" id=\"linksNext\" disabled>\u0627\u0644\u062a\u0627\u0644\u064a \u2b9e<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Stage 3: Settings -->\r\n        <div id=\"stage3\" class=\"block hidden\">\r\n          <h3>\u2699\ufe0f \u0644\u0648\u062d\u0629 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a<\/h3>\r\n          <div class=\"meta\">\u0641\u0639\u0651\u0644\/\u0639\u0637\u0651\u0644 \u0627\u0644\u062e\u064a\u0627\u0631\u0627\u062a \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0625\u0639\u062f\u0627\u062f \u0622\u0645\u0646.<\/div>\r\n          <div class=\"grid2\">\r\n            <div class=\"list\">\r\n              <label class=\"switch\"><input type=\"checkbox\" id=\"s_2fa\"> \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u0645\u0635\u0627\u062f\u0642\u0629 \u0627\u0644\u062b\u0646\u0627\u0626\u064a\u0629 (2FA)<\/label>\r\n              <label class=\"switch\"><input type=\"checkbox\" id=\"s_autoupdate\"> \u0627\u0644\u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u062a\u0644\u0642\u0627\u0626\u064a\u0629<\/label>\r\n              <label class=\"switch\"><input type=\"checkbox\" id=\"s_unknownapps\"> \u0627\u0644\u0633\u0645\u0627\u062d \u0628\u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0645\u0646 \u0645\u0635\u0627\u062f\u0631 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641\u0629<\/label>\r\n              <label class=\"switch\"><input type=\"checkbox\" id=\"s_loc\"> \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0645\u0648\u0642\u0639 \u0645\u0639 \u0627\u0644\u062c\u0645\u064a\u0639<\/label>\r\n              <label class=\"switch\"><input type=\"checkbox\" id=\"s_lock\"> \u0642\u0641\u0644 \u0627\u0644\u0634\u0627\u0634\u0629 \u0628\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631<\/label>\r\n            <\/div>\r\n            <div>\r\n              <div class=\"hint\" id=\"settingsHint\" hidden>\r\n                \u0627\u0644\u0647\u062f\u0641: \u2705 2FA \u0648 \u2705 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0648 \u2705 \u0642\u0641\u0644 \u0627\u0644\u0634\u0627\u0634\u0629\u060c \u0648 \u274c \u0645\u0635\u0627\u062f\u0631 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641\u0629\u060c \u0648 \u274c \u0645\u0634\u0627\u0631\u0643\u0629 \u0627\u0644\u0645\u0648\u0642\u0639 \u0627\u0644\u0639\u0627\u0645\u0629.\r\n              <\/div>\r\n              <div class=\"result\" id=\"settingsResult\"><\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"row\" style=\"margin-top:10px;justify-content:space-between\">\r\n            <button class=\"btn\" id=\"settingsCheck\">\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0625\u0639\u062f\u0627\u062f<\/button>\r\n            <button class=\"btn\" id=\"settingsNext\" disabled>\u0627\u0644\u062a\u0627\u0644\u064a \u2b9e<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Stage 4: Final cipher -->\r\n        <div id=\"stage4\" class=\"block hidden\">\r\n          <h3>\ud83d\udd0e \u0627\u0644\u0634\u0641\u0631\u0629 \u0627\u0644\u0646\u0647\u0627\u0626\u064a\u0629<\/h3>\r\n          <div class=\"meta\">\u0627\u0641\u0643 \u0627\u0644\u0634\u0641\u0631\u0629 \u0644\u0641\u062a\u062d \u0627\u0644\u0628\u0627\u0628 \u0627\u0644\u0623\u062e\u064a\u0631.<\/div>\r\n          <div class=\"badge\">\u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0634\u0641\u0631 (\u0625\u0632\u0627\u062d\u0629 \u0642\u064a\u0635\u0631 5):<\/div>\r\n          <div class=\"result\">UJST-SJTTXBZ<\/div>\r\n          <div class=\"hint\" id=\"cipherHint\" hidden>\r\n            \u0643\u0644 \u062d\u0631\u0641 \u0645\u064f\u0632\u0627\u062d +5. \u0645\u062b\u0627\u0644: <span class=\"kbd\">A\u2192F<\/span>\u060c <span class=\"kbd\">B\u2192G<\/span>. \u0627\u0644\u0645\u0637\u0644\u0648\u0628 \u0643\u0644\u0645\u0629 \u0625\u0646\u062c\u0644\u064a\u0632\u064a\u0629 \u0645\u0646 \u0645\u0642\u0637\u0639\u064a\u0646 \u062a\u0641\u064a\u062f \"\u0627\u0641\u062a\u062d \u0627\u0644\u0628\u0648\u0627\u0628\u0629\".\r\n          <\/div>\r\n          <div class=\"row\" style=\"margin-top:8px\">\r\n            <input id=\"cipherInput\" class=\"input\" placeholder=\"\u0627\u0643\u062a\u0628 \u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u0641\u0643\u0648\u0643\" \/>\r\n            <button class=\"btn\" id=\"cipherCheck\">\u062a\u062d\u0642\u0642<\/button>\r\n          <\/div>\r\n          <div class=\"result\" id=\"cipherResult\"><\/div>\r\n          <div class=\"row\" style=\"margin-top:10px;justify-content:flex-end\">\r\n            <button class=\"btn primary\" id=\"finishBtn\" disabled>\u0625\u0646\u0647\u0627\u0621 \u0648\u0627\u0644\u0647\u0631\u0648\u0628 \ud83c\udf89<\/button>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section id=\"endCard\" class=\"card hidden\">\r\n    <div class=\"end\">\r\n      <div class=\"big\">\u062a\u0647\u0627\u0646\u064a\u0646\u0627! \u062e\u0631\u062c\u062a \u0645\u0646 \u0627\u0644\u063a\u0631\u0641\u0629 \u2705<\/div>\r\n      <div class=\"score\">\u0627\u0644\u0644\u0627\u0639\u0628: <b id=\"playerOut\">\u0644\u0627\u0639\u0628<\/b><\/div>\r\n      <div class=\"score\">\u0627\u0644\u0646\u062a\u064a\u062c\u0629: <b id=\"finalScore\">0<\/b> \u0646\u0642\u0637\u0629<\/div>\r\n      <div class=\"score\">\u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0645\u062a\u0628\u0642\u064a: <b id=\"timeLeftOut\">0<\/b> \u062b\u0627\u0646\u064a\u0629<\/div>\r\n      <div class=\"row\" style=\"display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:8px\">\r\n        <button class=\"btn primary\" id=\"btnDownload\">\u062a\u062d\u0645\u064a\u0644 \u0634\u0647\u0627\u062f\u0629 PNG<\/button>\r\n        <button class=\"btn\" id=\"btnAgain\">\u0627\u0644\u0644\u0639\u0628 \u0645\u062c\u062f\u062f\u064b\u0627<\/button>\r\n      <\/div>\r\n      <canvas id=\"cert\" width=\"1000\" height=\"600\"><\/canvas>\r\n    <\/div>\r\n  <\/section>\r\n<\/main>\r\n\r\n<footer>\u062a\u0630\u0643\u064a\u0631: \u0644\u0627 \u062a\u0634\u0627\u0631\u0643 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0623\u0648 \u0631\u0645\u0632 OTP \u0623\u0628\u062f\u064b\u0627\u060c \u0648\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0631\u0648\u0627\u0628\u0637 \u0642\u0628\u0644 \u0627\u0644\u0636\u063a\u0637.<\/footer>\r\n<\/div>\r\n\r\n<script>\r\n\/* ===== Short helpers ===== *\/\r\nfunction $(id){return document.getElementById(id)}\r\nfunction el(tag,cls,html){const n=document.createElement(tag); if(cls) n.className=cls; if(html!=null) n.innerHTML=html; return n;}\r\nfunction show(n){n.classList.remove('hidden')}\r\nfunction hide(n){n.classList.add('hidden')}\r\nfunction beep(freq=880,dur=0.07,type='sine',gain=0.06){try{ac||(ac=new (window.AudioContext||window.webkitAudioContext)());const o=ac.createOscillator(),g=ac.createGain();o.type=type;o.frequency.value=freq;g.gain.value=gain;o.connect(g);g.connect(ac.destination);o.start();setTimeout(()=>o.stop(),dur*1000)}catch(e){}}\r\n\r\n\/* ===== State ===== *\/\r\nlet ac=null;\r\nconst stages=4;\r\nlet stage=0, score=0, lives=3, total=600, timer=600, ticker=null, player='\u0644\u0627\u0639\u0628', diff='easy', hints=true;\r\n\r\n\/* ===== Difficulty total time ===== *\/\r\nconst TIME_BY_DIFF = { easy:600, med:420, hard:300 };\r\n\r\n\/* ===== DOM refs ===== *\/\r\nconst gameCard=$('gameCard'), endCard=$('endCard'), room=$('room');\r\nconst stageIdx=$('stageIdx'), stageTotal=$('stageTotal'), scoreEl=$('score'), livesEl=$('lives'), timerEl=$('timer'), diffChip=$('diffChip');\r\nconst modeChip=$('modeChip'), meta=$('meta');\r\nconst playerOut=$('playerOut'), finalScore=$('finalScore'), timeLeftOut=$('timeLeftOut'), cert=$('cert');\r\n\r\n\/* ===== Init ===== *\/\r\nstageTotal.textContent=stages;\r\n\r\n\/* ===== Start \/ Timer ===== *\/\r\n$('btnStart').onclick=()=>{\r\n  player = $('playerName').value.trim() || '\u0644\u0627\u0639\u0628';\r\n  diff = $('difficulty').value;\r\n  hints = $('hints').checked;\r\n  total = TIME_BY_DIFF[diff] || 600;\r\n  timer = total;\r\n  lives = 3; score = 0; stage = 0;\r\n  modeChip.textContent = '\u0648\u0636\u0639: ' + (hints?'\u062a\u062f\u0631\u064a\u0628':'\u062a\u062d\u062f\u064a');\r\n  diffChip.textContent = '\u0627\u0644\u0635\u0639\u0648\u0628\u0629: ' + (diff==='easy'?'\u0633\u0647\u0644':diff==='med'?'\u0645\u062a\u0648\u0633\u0637':'\u0635\u0639\u0628');\r\n  scoreEl.textContent=score; livesEl.textContent=lives; timerEl.textContent=timer;\r\n  hide(endCard); show(gameCard); show(room);\r\n  \/\/ hints toggles\r\n  $('pwHint').hidden = !hints;\r\n  $('linksHint').hidden = !hints;\r\n  $('settingsHint').hidden = !hints;\r\n  $('cipherHint').hidden = !hints;\r\n  \/\/ prepare stages\r\n  setupStage1(); setupStage2(); setupStage3(); setupStage4();\r\n  nextStage();\r\n  clearInterval(ticker);\r\n  ticker=setInterval(()=>{\r\n    timer--; timerEl.textContent=timer;\r\n    if(timer<=0){ clearInterval(ticker); gameOver(); }\r\n  },1000);\r\n};\r\n$('btnAgain').onclick=()=>{ $('btnStart').click(); };\r\n\r\n\/* ===== Stage routing ===== *\/\r\nfunction nextStage(){\r\n  if(lives<=0){ return gameOver(); }\r\n  stage++;\r\n  stageIdx.textContent=stage;\r\n  \/\/ hide all\r\n  ['stage1','stage2','stage3','stage4'].forEach(id=>hide($(id)));\r\n  if(stage===1) show($('stage1'));\r\n  else if(stage===2) show($('stage2'));\r\n  else if(stage===3) show($('stage3'));\r\n  else if(stage===4) show($('stage4'));\r\n  else return finish();\r\n}\r\nfunction penalize(msgEl, msg){\r\n  lives--; livesEl.textContent=lives;\r\n  msgEl.innerHTML = '\u274c ' + msg + ' \u2014 <span class=\"danger\">-1 \u0642\u0644\u0628<\/span>';\r\n  beep(220,.08,'sawtooth',.08);\r\n  if(lives<=0){ setTimeout(gameOver, 300); }\r\n}\r\n\r\n\/* ===== Stage 1: Password lock ===== *\/\r\nfunction setupStage1(){\r\n  const bars=$('pwBars'); bars.innerHTML='';\r\n  for(let i=0;i<4;i++){ const b=el('div',null,null); b.style.height='10px'; b.style.border='1px solid var(--stroke)'; b.style.borderRadius='8px'; b.style.background='#0b1c3e'; const fill=el('div',null,null); fill.style.height='100%'; fill.style.width='0%'; fill.style.background='linear-gradient(90deg,#ef4444,#f59e0b,#10b981)'; fill.style.borderRadius='8px'; b.appendChild(fill); bars.appendChild(b); }\r\n  $('pwResult').innerHTML='';\r\n  $('pwInput').value='';\r\n  $('pwNext').disabled=true;\r\n}\r\nfunction pwScore(p){\r\n  const okLen=p.length>=8, okU=\/[A-Z]\/.test(p), okN=\/[0-9]\/.test(p), okS=\/[^A-Za-z0-9]\/.test(p);\r\n  const bad=\/admin\/i.test(p);\r\n  let sc=0; sc += okLen?25:0; sc += okU?25:0; sc += okN?20:0; sc += okS?20:0; if(bad) sc-=30; sc=Math.max(0,Math.min(100,sc));\r\n  return {sc, okLen, okU, okN, okS, bad};\r\n}\r\n$('pwInput').addEventListener('input', ()=>{\r\n  const p=$('pwInput').value; const m=pwScore(p);\r\n  const fills=[...$('pwBars').children].map(x=>x.firstChild);\r\n  fills[0].style.width=(m.okLen?100:20)+'%';\r\n  fills[1].style.width=(m.okU?100:20)+'%';\r\n  fills[2].style.width=(m.okN?100:20)+'%';\r\n  fills[3].style.width=(m.okS?100:20)+'%';\r\n});\r\n$('pwCheck').onclick=()=>{\r\n  const p=$('pwInput').value.trim(); const r=$('pwResult'); const m=pwScore(p);\r\n  if(m.okLen && m.okU && m.okN && m.okS && !m.bad){\r\n    r.innerHTML='\u2714 \u062a\u0645 \u0641\u062a\u062d \u0627\u0644\u0642\u0641\u0644. \u0627\u0644\u062a\u0642\u064a\u064a\u0645: '+m.sc+'%'; r.className='result'; $('pwNext').disabled=false; score+=120; scoreEl.textContent=score; beep(960,.07,'square',.08);\r\n  }else{\r\n    r.innerHTML='\u0634\u0631\u0648\u0637 \u063a\u064a\u0631 \u0645\u0643\u062a\u0645\u0644\u0629. '+(m.bad?'\ud83d\udeab \u0644\u0627 \u062a\u0633\u062a\u062e\u062f\u0645 \"admin\". ':''); r.className='result'; penalize(r,'\u0645\u062d\u0627\u0648\u0644\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629 \u0644\u0642\u0641\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631');\r\n  }\r\n};\r\n$('pwNext').onclick=nextStage;\r\n\r\n\/* ===== Stage 2: Links ===== *\/\r\nconst LINK_OPTIONS = [\r\n  {t:'http:\/\/bank-secure.example.com.verify-login.co', safe:false, why:'\u0646\u0637\u0627\u0642 \u0645\u0645\u0648\u0651\u0647 (verify-login.co) \u0648\u0644\u064a\u0633 \u0645\u0648\u0642\u0639 \u0627\u0644\u0628\u0646\u0643.'},\r\n  {t:'https:\/\/xn--pple-43d.com\/login', safe:false, why:'\u062d\u0631\u0648\u0641 \u0645\u062a\u0634\u0627\u0628\u0647\u0629 (\u062a\u0628\u062f\u064a\u0644 p \u0628\u0640 \u03c1 \u0623\u0648 \u0645\u0627 \u0634\u0627\u0628\u0647).'},\r\n  {t:'https:\/\/bank.example.com\/support', safe:true,  why:'https \u0648\u0646\u0637\u0627\u0642 \u0641\u0631\u0639\u064a \u0634\u0631\u0639\u064a \u0645\u0646 \u0627\u0644\u0646\u0637\u0627\u0642 \u0627\u0644\u0631\u0626\u064a\u0633\u064a.'},\r\n  {t:'https:\/\/bit.ly\/secure-claim', safe:false, why:'\u0631\u0627\u0628\u0637 \u0645\u062e\u062a\u0635\u0631 \u0645\u062c\u0647\u0648\u0644 \u0627\u0644\u0645\u0635\u062f\u0631.'}\r\n];\r\nfunction setupStage2(){\r\n  const list=$('linksList'); list.innerHTML='';\r\n  $('linksResult').innerHTML=''; $('linksNext').disabled=true;\r\n  shuffle(LINK_OPTIONS).forEach((o,i)=>{\r\n    const d=el('div','option',`<b>${o.t}<\/b>`);\r\n    d.onclick=()=>{\r\n      [...list.children].forEach(c=>c.className='option'); \/\/ reset\r\n      if(o.safe){\r\n        d.classList.add('correct');\r\n        $('linksResult').innerHTML='\u2714 \u0627\u062e\u062a\u064a\u0627\u0631 \u0635\u062d\u064a\u062d: '+o.why; score+=120; scoreEl.textContent=score; $('linksNext').disabled=false; beep(920,.07,'square',.08);\r\n      }else{\r\n        d.classList.add('wrong');\r\n        $('linksResult').innerHTML='\u2716 \u0647\u0630\u0627 \u063a\u064a\u0631 \u0622\u0645\u0646: '+o.why;\r\n        penalize($('linksResult'),'\u0627\u062e\u062a\u064a\u0627\u0631 \u0631\u0627\u0628\u0637 \u0645\u0631\u064a\u0628');\r\n      }\r\n    };\r\n    list.appendChild(d);\r\n  });\r\n}\r\n$('linksNext').onclick=nextStage;\r\n\r\n\/* ===== Stage 3: Settings ===== *\/\r\nfunction setupStage3(){\r\n  \/\/ reset toggles\r\n  $('s_2fa').checked=false;\r\n  $('s_autoupdate').checked=false;\r\n  $('s_unknownapps').checked=false;\r\n  $('s_loc').checked=false;\r\n  $('s_lock').checked=false;\r\n  $('settingsResult').innerHTML=''; $('settingsNext').disabled=true;\r\n}\r\n$('settingsCheck').onclick=()=>{\r\n  const ok = $('s_2fa').checked && $('s_autoupdate').checked && $('s_lock').checked\r\n            && !$('s_unknownapps').checked && !$('s_loc').checked;\r\n  if(ok){\r\n    $('settingsResult').innerHTML='\u2714 \u0625\u0639\u062f\u0627\u062f \u0622\u0645\u0646 \u062a\u0645 \u0627\u0639\u062a\u0645\u0627\u062f\u0647.'; $('settingsNext').disabled=false; score+=120; scoreEl.textContent=score; beep(900,.07,'square',.08);\r\n  }else{\r\n    $('settingsResult').innerHTML='\u2716 \u0645\u0627 \u0632\u0627\u0644\u062a \u0647\u0646\u0627\u0643 \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u063a\u064a\u0631 \u0622\u0645\u0646\u0629.';\r\n    penalize($('settingsResult'),'\u0625\u0639\u062f\u0627\u062f \u063a\u064a\u0631 \u0622\u0645\u0646');\r\n  }\r\n};\r\n$('settingsNext').onclick=nextStage;\r\n\r\n\/* ===== Stage 4: Cipher ===== *\/\r\nfunction setupStage4(){\r\n  $('cipherInput').value=''; $('cipherResult').innerHTML=''; $('finishBtn').disabled=true;\r\n}\r\nfunction caesarDecode(s,shift){\r\n  const A='ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n  s=s.toUpperCase();\r\n  let out='';\r\n  for(const ch of s){\r\n    const i=A.indexOf(ch);\r\n    if(i===-1){ out+= (ch==='-'?'-':ch); continue; }\r\n    let j=(i-shift)%26; if(j<0) j+=26; out+=A[j];\r\n  }\r\n  return out;\r\n}\r\n$('cipherCheck').onclick=()=>{\r\n  const guess = $('cipherInput').value.trim().toUpperCase();\r\n  const target = caesarDecode('UJST-SJTTXBZ',5); \/\/ OPEN-DOOR\r\n  if(guess===target){\r\n    $('cipherResult').innerHTML='\u2714 \u0635\u062d\u064a\u062d! \u0627\u0644\u0628\u0627\u0628 \u0645\u0641\u062a\u0648\u062d.'; $('finishBtn').disabled=false; score+=140; scoreEl.textContent=score; beep(980,.08,'triangle',.09);\r\n  }else{\r\n    $('cipherResult').innerHTML='\u2716 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d. \u062a\u0630\u0643\u0651\u0631: \u0625\u0632\u0627\u062d\u0629 5 \u0644\u0644\u062e\u0644\u0641.'; penalize($('cipherResult'),'\u062d\u0644 \u0634\u0641\u0631\u0629 \u062e\u0627\u0637\u0626');\r\n  }\r\n};\r\n$('finishBtn').onclick=finish;\r\n\r\n\/* ===== Finish \/ Game over ===== *\/\r\nfunction finish(){\r\n  clearInterval(ticker);\r\n  hide(gameCard); show(endCard);\r\n  playerOut.textContent = player;\r\n  finalScore.textContent = score;\r\n  timeLeftOut.textContent = Math.max(0,timer);\r\n  drawCert(player, score, timer, diff, hints);\r\n}\r\nfunction gameOver(){\r\n  hide(gameCard); show(endCard);\r\n  playerOut.textContent = player + ' (\u0627\u0646\u062a\u0647\u0649 \u0627\u0644\u0648\u0642\u062a\/\u0627\u0644\u0642\u0644\u0648\u0628)';\r\n  finalScore.textContent = score;\r\n  timeLeftOut.textContent = 0;\r\n  drawCert(player, score, 0, diff, hints);\r\n}\r\n\r\n\/* ===== Certificate ===== *\/\r\nfunction drawCert(name, score, timeLeft, diff, hintsOn){\r\n  const c=$('cert'), ctx=c.getContext('2d'), w=c.width, h=c.height;\r\n  ctx.clearRect(0,0,w,h);\r\n  const g=ctx.createLinearGradient(0,0,w,h); g.addColorStop(0,'#0b1229'); g.addColorStop(1,'#0e1a36');\r\n  ctx.fillStyle=g; ctx.fillRect(0,0,w,h);\r\n  \/\/ grid\r\n  ctx.strokeStyle='rgba(56,189,248,.25)'; ctx.lineWidth=1;\r\n  for(let x=60;x<w;x+=40){ ctx.beginPath(); ctx.moveTo(x,40); ctx.lineTo(x,h-40); ctx.stroke(); }\r\n  for(let y=60;y<h;y+=40){ ctx.beginPath(); ctx.moveTo(40,y); ctx.lineTo(w-40,y); ctx.stroke(); }\r\n  \/\/ frame\r\n  ctx.strokeStyle='#38bdf8'; ctx.lineWidth=8; ctx.strokeRect(20,20,w-40,h-40);\r\n\r\n  ctx.fillStyle='#e8f4ff'; ctx.textAlign='center';\r\n  ctx.font='bold 40px Segoe UI, Arial'; ctx.fillText('\u0634\u0647\u0627\u062f\u0629 \u0625\u0646\u062c\u0627\u0632 \u2013 Cyber Escape Room', w\/2, 110);\r\n  ctx.font='22px Segoe UI, Arial'; ctx.fillStyle='#a9c9ff'; ctx.fillText('\u0645\u064f\u0646\u062d\u062a \u0625\u0644\u0649', w\/2, 155);\r\n  ctx.font='bold 54px Segoe UI, Arial'; ctx.fillStyle='#e8f4ff'; ctx.fillText(name||'\u0644\u0627\u0639\u0628', w\/2, 205);\r\n\r\n  ctx.font='24px Segoe UI, Arial'; ctx.fillStyle='#a9c9ff'; ctx.fillText('\u0627\u0644\u0645\u062d\u0635\u0644\u0629', w\/2, 255);\r\n  ctx.font='bold 70px Segoe UI, Arial'; ctx.fillStyle='#e8f4ff'; ctx.fillText(`${score} \u0646\u0642\u0637\u0629`, w\/2, 315);\r\n\r\n  const chips=[\r\n    `\u0627\u0644\u0648\u0642\u062a \u0627\u0644\u0645\u062a\u0628\u0642\u064a: ${timeLeft} \u062b\u0627\u0646\u064a\u0629`,\r\n    `\u0627\u0644\u0635\u0639\u0648\u0628\u0629: ${diff==='easy'?'\u0633\u0647\u0644':diff==='med'?'\u0645\u062a\u0648\u0633\u0637':'\u0635\u0639\u0628'}`,\r\n    `\u0627\u0644\u062a\u0644\u0645\u064a\u062d\u0627\u062a: ${hintsOn?'\u0645\u0641\u0639\u0651\u0644\u0629':'\u0645\u062a\u0648\u0642\u0641\u0629'}`,\r\n    `\u0627\u0644\u062a\u0627\u0631\u064a\u062e: ${new Date().toLocaleDateString('ar-IQ')}`\r\n  ];\r\n  ctx.textAlign='left'; ctx.font='20px Segoe UI, Arial'; ctx.fillStyle='#cde7ff';\r\n  const cx=120, cy=360;\r\n  chips.forEach((t,i)=> chip(ctx, cx, cy+i*46, t));\r\n\r\n  ctx.textAlign='center'; ctx.font='18px Segoe UI, Arial'; ctx.fillStyle='#9fc5ff';\r\n  ctx.fillText('\u062a\u0630\u0643\u064a\u0631: \u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0631\u0648\u0627\u0628\u0637\u060c \u0641\u0639\u0651\u0644 2FA\u060c \u0648\u0644\u0627 \u062a\u0634\u0627\u0631\u0643 OTP.', w\/2, h-50);\r\n\r\n  function chip(ctx,x,y,text){\r\n    const padX=16; ctx.font='20px Segoe UI, Arial';\r\n    const mw=ctx.measureText(text).width; const W=mw+padX*2, H=36, r=16;\r\n    ctx.fillStyle='rgba(11,32,55,.9)'; ctx.strokeStyle='#17345a'; ctx.lineWidth=2;\r\n    roundRect(ctx,x,y,W,H,r,true,true);\r\n    ctx.fillStyle='#cde7ff'; ctx.fillText(text, x+padX, y+24);\r\n  }\r\n  function roundRect(ctx,x,y,w,h,r,fill,stroke){\r\n    ctx.beginPath();\r\n    ctx.moveTo(x+r,y); ctx.arcTo(x+w,y,x+w,y+h,r);\r\n    ctx.arcTo(x+w,y+h,x,y+h,r); ctx.arcTo(x,y+h,x,y,r);\r\n    ctx.arcTo(x,y,x+w,y,r); ctx.closePath();\r\n    if(fill) ctx.fill(); if(stroke) ctx.stroke();\r\n  }\r\n}\r\n$('btnDownload').onclick=()=>{ const url=$('cert').toDataURL('image\/png'); const a=document.createElement('a'); a.href=url; a.download='cyber_escape_room_certificate.png'; a.click(); };\r\n\r\n\/* ===== Utils ===== *\/\r\nfunction shuffle(a){ for(let i=a.length-1;i>0;i--){ const j=Math.floor(Math.random()*(i+1)); [a[i],a[j]]=[a[j],a[i]]; } return a; }\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0623\u0644\u0639\u0627\u0628 \u062a\u0639\u0644\u064a\u0645\u064a\u0629 \u0627\u0633\u0626\u0644\u0629 \u0634\u0627\u0626\u0639\u0629 \u0627\u0644\u0642\u0635\u0635 \u0627\u0644\u062a\u0648\u0639\u0648\u064a\u0629 X \u0634\u0627\u0647\u062f \u0627\u0644\u0642\u0635\u0635 \ud83d\udddd\ufe0f Cyber Escape Room \ud83d\udddd\ufe0f Cyber Escape Room \u0648\u0636\u0639: \u0627\u062e\u062a\u0628\u0627\u0631 \u0633\u0647\u0644 (10 \u062f\u0642\u0627\u0626\u0642)\u0645\u062a\u0648\u0633\u0637 (7 \u062f\u0642\u0627\u0626\u0642)\u0635\u0639\u0628 (5 \u062f\u0642\u0627\u0626\u0642) \u062a\u0641\u0639\u064a\u0644 \u0627\u0644\u062a\u0644\u0645\u064a\u062d\u0627\u062a \u0627\u0628\u062f\u0623 \u0627\u0644\u0647\u0631\u0648\u0628 \u0627\u0644\u0645\u0631\u062d\u0627\u062a: 0\/4 \u0627\u0644\u0646\u0642\u0627\u0637: 0 \u0642\u0644\u0648\u0628 \u2764: 3 \u0627\u0644\u0648\u0642\u062a \u23f3: 600 s \u0627\u0644\u0635\u0639\u0648\u0628\u0629: \u2014 \u062d\u0644\u0651 \u0627\u0644\u0623\u0644\u063a\u0627\u0632 \u0627\u0644\u0623\u0631\u0628\u0639\u0629 \u0644\u0644\u062e\u0631\u0648\u062c \u0645\u0646 \u0627\u0644\u063a\u0631\u0641\u0629. \u0627\u0644\u0623\u062e\u0637\u0627\u0621 \u062a\u062e\u0635\u0645 \u0642\u0644\u0648\u0628\u064b\u0627. \u0627\u0644\u062a\u0644\u0645\u064a\u062d\u0627\u062a \u062a\u0633\u0627\u0639\u062f\u0643 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1361","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1361","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/comments?post=1361"}],"version-history":[{"count":8,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1361\/revisions"}],"predecessor-version":[{"id":1699,"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/pages\/1361\/revisions\/1699"}],"wp:attachment":[{"href":"https:\/\/safebrowsing.cmc.iq\/index.php\/wp-json\/wp\/v2\/media?parent=1361"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}