{"id":1222,"date":"2026-05-18T04:30:19","date_gmt":"2026-05-18T04:30:19","guid":{"rendered":"https:\/\/yasuishopjp.com\/getcid\/"},"modified":"2026-05-18T04:30:19","modified_gmt":"2026-05-18T04:30:19","slug":"getcid","status":"publish","type":"page","link":"https:\/\/yasuishopjp.com\/en\/getcid\/","title":{"rendered":"GetCID Tool"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap\" rel=\"stylesheet\">\n<style>\n:root{--bg:#07080f;--s1:#111320;--s2:#171929;--b1:#1f2235;--b2:#252840;--ac:#3d7fff;--acg:rgba(61,127,255,0.2);--ac2:#7c5cfc;--gr:#00e5a0;--grd:rgba(0,229,160,0.12);--rd:#ff4d6a;--tx:#eef0ff;--t2:#a0a4c0;--t3:#5a5f80;--mono:'JetBrains Mono',monospace;--sans:'Outfit',sans-serif}\n\/* Fondo oscuro + quitar blancos solo del content (NO toca el header) *\/\nbody.ys-getcid-page{background:#07080f!important;overflow-x:hidden}\nbody.ys-getcid-page .entry-title,body.ys-getcid-page .page-title,body.ys-getcid-page h1.page-title{display:none!important}\nbody.ys-getcid-page .site-content .ct-container,body.ys-getcid-page .site-content .ct-inner-content{padding:0!important;margin-left:0!important;margin-right:0!important;max-width:100%!important;width:100%!important}\nbody.ys-getcid-page .site-main,body.ys-getcid-page main,body.ys-getcid-page .entry-content,body.ys-getcid-page article,body.ys-getcid-page .hentry{padding:0!important;margin:0!important;max-width:100%!important;width:100%!important;box-shadow:none!important;border:none!important}\n#ys-getcid-wrap{background:var(--bg);color:var(--tx);font-family:var(--sans);overflow:hidden;position:relative;width:100%;min-height:100vh}\n#ys-getcid-wrap *,#ys-getcid-wrap *::before,#ys-getcid-wrap *::after{box-sizing:border-box;margin:0;padding:0}\n#ys-getcid-wrap::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(61,127,255,0.03) 1px,transparent 1px),linear-gradient(90deg,rgba(61,127,255,0.03) 1px,transparent 1px);background-size:44px 44px;pointer-events:none;z-index:0}\n#ys-getcid-wrap::after{content:'';position:absolute;top:-25vh;left:50%;transform:translateX(-50%);width:80%;height:55vh;background:radial-gradient(ellipse,rgba(61,127,255,0.09) 0%,rgba(124,92,252,0.05) 45%,transparent 70%);pointer-events:none;z-index:0}\n#ys-getcid-wrap .ys-app{position:relative;z-index:1;max-width:780px;margin:0 auto;padding:28px 18px 80px}\n#ys-getcid-wrap .ys-hdr{text-align:center;padding:36px 0 28px}\n#ys-getcid-wrap .badge{display:inline-flex;align-items:center;gap:8px;background:rgba(61,127,255,0.1);border:1px solid rgba(61,127,255,0.25);border-radius:999px;padding:6px 16px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ac);margin-bottom:20px}\n#ys-getcid-wrap .live-dot{width:7px;height:7px;border-radius:50%;background:var(--gr);box-shadow:0 0 10px var(--gr);animation:ysg-pulse 2s infinite;display:inline-block}\n@keyframes ysg-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}\n@keyframes ysg-popin{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}\n@keyframes ysg-glow{0%{box-shadow:0 0 0 0 rgba(0,229,160,.6)}70%{box-shadow:0 0 0 14px rgba(0,229,160,0)}100%{box-shadow:0 0 0 0 rgba(0,229,160,0)}}\n@keyframes ysg-spin{to{transform:rotate(360deg)}}\n@keyframes ysg-cardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}\n#ys-getcid-wrap h1{font-size:clamp(2rem,5vw,3.2rem);font-weight:900;line-height:1.05;letter-spacing:-.02em;margin-bottom:10px}\n#ys-getcid-wrap h1 span{background:linear-gradient(135deg,#fff 0%,var(--ac) 50%,var(--ac2) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}\n#ys-getcid-wrap .tagline{color:var(--t2);font-size:.95rem}\n#ys-getcid-wrap .code-card{background:var(--s1);border:1px solid var(--b1);border-radius:20px;padding:26px;margin-bottom:16px;position:relative;overflow:hidden}\n#ys-getcid-wrap .code-card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--ac),var(--ac2),transparent);opacity:.4}\n#ys-getcid-wrap .code-label{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ac);margin-bottom:10px;display:flex;align-items:center;gap:6px}\n#ys-getcid-wrap .code-label::before{content:'';width:3px;height:11px;background:var(--ac);border-radius:2px;display:inline-block}\n#ys-getcid-wrap .code-row{display:flex !important;gap:10px}\n#ys-getcid-wrap .code-input{flex:1;background:var(--s2);border:1px solid var(--b2) !important;border-radius:12px;color:var(--tx) !important;font-family:var(--mono);font-size:16px;font-weight:600;padding:14px 18px;outline:none;letter-spacing:3px;transition:all .2s;text-transform:uppercase;width:auto !important}\n#ys-getcid-wrap .code-input:focus{border-color:var(--ac) !important;box-shadow:0 0 0 3px var(--acg)}\n#ys-getcid-wrap .code-input::placeholder{color:var(--t3);letter-spacing:0;font-size:13px;font-weight:400}\n#ys-getcid-wrap .btn-verify{background:linear-gradient(135deg,var(--ac),var(--ac2));border:none;border-radius:12px;color:#fff;cursor:pointer;font-family:var(--sans);font-size:14px;font-weight:700;padding:14px 22px;white-space:nowrap;transition:opacity .2s;width:auto !important}\n#ys-getcid-wrap .btn-verify:hover{opacity:.88}\n#ys-getcid-wrap .btn-verify:disabled{opacity:.5;cursor:not-allowed}\n#ys-getcid-wrap .user-card{background:var(--s1);border:1px solid var(--b1);border-radius:20px;padding:20px 24px;margin-bottom:16px;display:none;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}\n#ys-getcid-wrap .user-card.show{display:flex !important}\n#ys-getcid-wrap .code-badge{font-family:var(--mono);font-size:15px;font-weight:700;color:var(--ac);letter-spacing:2px}\n#ys-getcid-wrap .code-sublabel{font-size:12px;color:var(--t2);margin-top:2px}\n#ys-getcid-wrap .credits-pill{display:flex;align-items:center;gap:8px;background:var(--grd);border:1px solid rgba(0,229,160,.3);border-radius:999px;padding:8px 18px}\n#ys-getcid-wrap .credits-num{font-size:22px;font-weight:800;color:var(--gr);font-family:var(--mono)}\n#ys-getcid-wrap .credits-lbl{font-size:11px;color:var(--gr);opacity:.8}\n#ys-getcid-wrap .no-credits-pill{background:rgba(255,77,106,.08);border:1px solid rgba(255,77,106,.25);border-radius:999px;padding:8px 16px;color:var(--rd);font-size:13px;font-weight:600}\n#ys-getcid-wrap .card{background:var(--s1);border:1px solid var(--b1);border-radius:20px;padding:26px;margin-bottom:16px;position:relative;overflow:hidden}\n#ys-getcid-wrap .card::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--ac),var(--ac2),transparent);opacity:.4}\n#ys-getcid-wrap .tabs{display:flex;gap:4px;background:var(--s2);border:1px solid var(--b1);border-radius:12px;padding:4px;margin-bottom:20px}\n#ys-getcid-wrap .tab{flex:1;background:transparent;border:none !important;border-radius:9px;color:var(--t2);cursor:pointer;font-family:var(--sans);font-size:11px;font-weight:600;padding:9px 4px;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:4px;width:auto !important}\n#ys-getcid-wrap .tab:hover{color:var(--tx)}\n#ys-getcid-wrap .tab.active{background:var(--s1);color:var(--tx);box-shadow:0 2px 8px rgba(0,0,0,.3)}\n#ys-getcid-wrap .panel{display:none}\n#ys-getcid-wrap .panel.active{display:block}\n#ys-getcid-wrap .slabel{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ac);margin-bottom:10px;display:flex;align-items:center;gap:6px}\n#ys-getcid-wrap .slabel::before{content:'';width:3px;height:11px;background:var(--ac);border-radius:2px;display:inline-block}\n#ys-getcid-wrap .groups{display:flex !important;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:14px}\n#ys-getcid-wrap .grp{background:var(--s2) !important;border:1px solid var(--b2) !important;border-radius:10px;color:var(--tx) !important;font-family:var(--mono);font-size:14px;font-weight:600;padding:12px 8px;text-align:center;width:88px !important;max-width:88px !important;min-width:unset !important;letter-spacing:2px;outline:none;transition:all .2s;display:inline-block !important;flex:none !important}\n#ys-getcid-wrap .grp:focus{border-color:var(--ac) !important;box-shadow:0 0 0 3px var(--acg)}\n#ys-getcid-wrap .grp.ok{border-color:rgba(0,229,160,.35) !important}\n#ys-getcid-wrap .grp::placeholder{color:var(--t3);letter-spacing:0}\n#ys-getcid-wrap .gsep{color:var(--t3);font-size:13px;user-select:none}\n#ys-getcid-wrap .err{display:none;margin-top:12px;padding:11px 15px;border-radius:10px;background:rgba(255,77,106,.08);border:1px solid rgba(255,77,106,.25);color:var(--rd);font-size:13px}\n#ys-getcid-wrap .err.show{display:block}\n#ys-getcid-wrap .polling{display:none;margin-top:12px;padding:13px;border-radius:10px;background:rgba(61,127,255,.08);border:1px solid rgba(61,127,255,.2);font-size:13px;color:var(--ac);align-items:center;gap:10px}\n#ys-getcid-wrap .polling.show{display:flex !important}\n#ys-getcid-wrap .pspin{width:14px;height:14px;border:2px solid var(--ac);border-top-color:transparent;border-radius:50%;animation:ysg-spin .7s linear infinite;flex-shrink:0}\n#ys-getcid-wrap .btn-gen{width:100% !important;background:linear-gradient(135deg,var(--ac) 0%,var(--ac2) 100%);border:none !important;border-radius:13px;color:#fff !important;cursor:pointer;font-family:var(--sans);font-size:15px;font-weight:700;padding:15px;margin-top:16px;transition:transform .15s,box-shadow .15s;display:flex !important;align-items:center;justify-content:center;gap:8px}\n#ys-getcid-wrap .btn-gen:hover{transform:translateY(-2px);box-shadow:0 10px 32px rgba(61,127,255,.3)}\n#ys-getcid-wrap .btn-gen:disabled{opacity:.5;cursor:not-allowed;transform:none}\n#ys-getcid-wrap .bspin{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:ysg-spin .7s linear infinite;display:none}\n#ys-getcid-wrap .result{display:none;background:var(--s1);border:1px solid rgba(0,229,160,.3);border-radius:20px;padding:26px;margin-bottom:16px;position:relative;overflow:hidden}\n#ys-getcid-wrap .result.show{display:block;animation:ysg-popin .4s ease,ysg-glow 1.2s ease 0.3s}\n#ys-getcid-wrap .result::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--gr),transparent)}\n#ys-getcid-wrap .res-lbl{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gr);margin-bottom:14px;display:flex;align-items:center;gap:8px}\n#ys-getcid-wrap .chk{width:20px;height:20px;background:var(--grd);border:1px solid rgba(0,229,160,.4);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px}\n#ys-getcid-wrap .cid-cards-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}\n#ys-getcid-wrap .cid-card-ah{background:rgba(0,229,160,.06);border:1px solid rgba(0,229,160,.2);border-radius:14px;padding:14px;text-align:center;position:relative;overflow:hidden;animation:ysg-cardIn .35s ease both;cursor:pointer}\n#ys-getcid-wrap .cid-card-ah::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--gr),transparent)}\n#ys-getcid-wrap .cid-card-letter{font-size:11px;font-weight:700;color:var(--t2);letter-spacing:.08em;margin-bottom:8px;text-transform:uppercase}\n#ys-getcid-wrap .cid-card-value{font-family:var(--mono);font-size:18px;font-weight:700;color:var(--gr);letter-spacing:2px;text-shadow:0 0 16px rgba(0,229,160,.3)}\n#ys-getcid-wrap .cid-hint{margin-top:12px;margin-bottom:14px;background:rgba(61,127,255,.07);border:1px solid rgba(61,127,255,.2);border-radius:12px;padding:14px 16px;font-size:12.5px;color:var(--t2);line-height:1.7}\n#ys-getcid-wrap .cid-hint strong{color:var(--tx);display:block;margin-bottom:4px;font-size:13px}\n#ys-getcid-wrap .cid-hint .step-letters{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}\n#ys-getcid-wrap .cid-hint .sl{background:var(--s2);border:1px solid var(--b2);border-radius:7px;padding:3px 10px;font-family:var(--mono);font-size:12px;color:var(--ac);font-weight:700}\n#ys-getcid-wrap .btn-row{display:flex;gap:10px}\n#ys-getcid-wrap .btn-copy{flex:1;background:var(--grd);border:1px solid rgba(0,229,160,.3) !important;border-radius:10px;color:var(--gr) !important;cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:600;padding:12px;transition:all .2s;width:auto !important}\n#ys-getcid-wrap .btn-copy:hover{background:rgba(0,229,160,.2)}\n#ys-getcid-wrap .btn-copy.done{background:var(--gr);color:#000 !important}\n#ys-getcid-wrap .btn-new{flex:1;background:var(--s2);border:1px solid var(--b2) !important;border-radius:10px;color:var(--t2) !important;cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:600;padding:12px;transition:all .2s;width:auto !important}\n#ys-getcid-wrap .btn-new:hover{color:var(--tx) !important}\n#ys-getcid-wrap .btn-dl{flex:1;background:rgba(61,127,255,.08);border:1px solid rgba(61,127,255,.25) !important;border-radius:10px;color:var(--ac) !important;cursor:pointer;font-family:var(--sans);font-size:13px;font-weight:600;padding:12px;transition:all .2s;width:auto !important}\n#ys-getcid-wrap .btn-dl:hover{background:rgba(61,127,255,.18)}\n#ys-getcid-wrap .ocr-drop{background:var(--s2);border:2px dashed var(--b2) !important;border-radius:14px;padding:28px 16px;text-align:center;cursor:pointer;transition:all .2s;margin-bottom:12px}\n#ys-getcid-wrap .ocr-drop:hover{border-color:var(--ac) !important;background:rgba(79,140,255,.05)}\n#ys-getcid-wrap .ocr-drop-icon{font-size:32px;margin-bottom:8px}\n#ys-getcid-wrap .ocr-drop-title{font-size:14px;font-weight:600;margin-bottom:4px}\n#ys-getcid-wrap .ocr-drop-sub{font-size:12px;color:var(--t2)}\n#ys-getcid-wrap .ocr-hint{background:rgba(61,127,255,.06);border:1px solid rgba(61,127,255,.18);border-radius:10px;padding:10px 14px;margin-bottom:12px}\n#ys-getcid-wrap .ocr-hint summary{cursor:pointer;color:var(--ac);font-size:12px;font-weight:600;list-style:none}\n#ys-getcid-wrap .ocr-group-chip{background:var(--s2) !important;border:1.5px solid var(--b2) !important;border-radius:8px;padding:7px 10px;font-family:var(--mono);font-size:13px;font-weight:700;color:var(--tx) !important;outline:none;min-width:80px;text-align:center;cursor:text;width:auto !important}\n#ys-getcid-wrap .ocr-group-chip:focus{border-color:var(--ac) !important;color:var(--gr) !important}\n#ys-getcid-wrap .no-credits-section{background:var(--s1);border:1px solid rgba(255,77,106,.2);border-radius:20px;padding:30px;text-align:center;margin-bottom:16px;display:none}\n#ys-getcid-wrap .no-credits-section.show{display:block}\n#ys-getcid-wrap .steps{background:var(--s1);border:1px solid var(--b1);border-radius:20px;padding:22px;margin-bottom:16px}\n#ys-getcid-wrap .steps-ttl{font-size:15px;font-weight:700;margin-bottom:16px}\n#ys-getcid-wrap .step{display:flex;gap:12px;margin-bottom:14px;align-items:flex-start}\n#ys-getcid-wrap .step:last-child{margin-bottom:0}\n#ys-getcid-wrap .step-n{width:27px;height:27px;border-radius:8px;min-width:27px;background:linear-gradient(135deg,var(--ac),var(--ac2));display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff}\n#ys-getcid-wrap .step-b strong{color:var(--tx);font-weight:600;display:block;margin-bottom:2px;font-size:13px}\n#ys-getcid-wrap .step-b span{font-size:12px;color:var(--t2);line-height:1.5}\n#ys-getcid-wrap .example-btn{display:inline-flex;align-items:center;gap:6px;background:rgba(61,127,255,.1);border:1px solid rgba(61,127,255,.25) !important;border-radius:8px;color:var(--ac) !important;cursor:pointer;font-family:var(--sans);font-size:12px;font-weight:600;padding:6px 12px;margin-top:8px;transition:all .2s;width:auto !important}\n#ys-getcid-wrap .example-img{display:none;margin-top:12px;border-radius:12px;overflow:hidden;border:1px solid var(--b2)}\n#ys-getcid-wrap .example-img.show{display:block;animation:ysg-popin .3s ease}\n#ys-getcid-wrap .example-img img{width:100%;display:block}\n#ys-getcid-wrap .example-caption{background:rgba(0,229,160,.08);border-top:1px solid rgba(0,229,160,.2);padding:8px 12px;font-size:11px;color:var(--gr);text-align:center}\n#ys-getcid-wrap .foot{text-align:center;color:var(--t3);font-size:11px;margin-top:12px;line-height:1.9}\n#ys-getcid-wrap .foot a{color:var(--ac);text-decoration:none}\n#ys-toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%) translateY(70px);background:var(--s2);border:1px solid var(--b2);border-radius:10px;padding:11px 20px;font-size:13px;font-weight:500;color:var(--tx);box-shadow:0 8px 28px rgba(0,0,0,.45);z-index:99999;transition:transform .3s,opacity .3s;opacity:0;white-space:nowrap;font-family:var(--sans)}\n#ys-toast.show{transform:translateX(-50%) translateY(0);opacity:1}\n@media(max-width:520px){\n  #ys-getcid-wrap .grp{width:60px !important;max-width:60px !important;font-size:11px;padding:10px 4px}\n  #ys-getcid-wrap .code-row{flex-direction:column}\n}\n<\/style>\n\n<div id=\"ys-getcid-wrap\">\n<div class=\"ys-app\">\n\n  <div class=\"ys-hdr\">\n    <div class=\"badge\"><span class=\"live-dot\"><\/span>MICROSOFT\u81ea\u52d5\u96fb\u8a71\u8a8d\u8a3c\u30c4\u30fc\u30eb<\/div>\n    <h1><span>Get Confirmation ID Pro<\/span><\/h1>\n    <p class=\"tagline\">Automatic phone activation tool for Microsoft products. Easily activate Office or Windows by entering your Installation ID. The system instantly generates a valid Confirmation ID quickly and securely.<\/p>\n  <\/div>\n\n  <div class=\"code-card\" id=\"code-card\">\n    <div class=\"code-label\">Step 1 \u00b7 Enter your access code<\/div>\n    <div class=\"code-row\">\n      <input class=\"code-input\" id=\"code-input\" type=\"text\" placeholder=\"e.g. YS-473829\" maxlength=\"20\" oninput=\"this.value=this.value.toUpperCase();ysgHideCodeErr()\"\/>\n      <button class=\"btn-verify\" id=\"btn-verify\" onclick=\"ysgVerifyCode()\">Verify<\/button>\n    <\/div>\n    <div class=\"err\" id=\"code-err\"><\/div>\n    <div style=\"margin-top:10px;font-size:12px;color:var(--t3)\">Enter the code you received by email after your purchase.<\/div>\n  <\/div>\n\n  <div class=\"user-card\" id=\"user-card\">\n    <div>\n      <div class=\"code-badge\" id=\"active-code\">\u2014<\/div>\n      <div class=\"code-sublabel\" id=\"active-label\">\u2014<\/div>\n    <\/div>\n    <div id=\"credits-display\"><\/div>\n  <\/div>\n\n  <div id=\"tool-section\" style=\"display:none\">\n    <div class=\"card\">\n      <div class=\"tabs\">\n        <button class=\"tab active\" id=\"t-manual\" onclick=\"ysgGoTab('manual')\">\u2328\ufe0f Manual<\/button>\n        <button class=\"tab\" id=\"t-ocr\" onclick=\"ysgGoTab('ocr')\">\ud83d\udcf8 Photo OCR<\/button>\n      <\/div>\n\n      <div class=\"panel active\" id=\"p-manual\">\n        <div class=\"slabel\">Installation ID \u2014 group by group<\/div>\n        <details class=\"ocr-hint\" style=\"margin-bottom:12px\">\n          <summary>\ud83d\udcf7 IMAGE EXAMPLE: see where the IID is<\/summary>\n          <p style=\"color:var(--t2);font-size:12px;margin:8px 0;line-height:1.6\">Open Office phone activation wizard. Step 2 shows your IID as 9 groups of numbers.<\/p>\n          <img decoding=\"async\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0770\/1082\/9541\/files\/office-iid-example.jpg\" style=\"width:100%;border-radius:10px;margin-top:6px;border:1px solid var(--b2)\"\/>\n        <\/details>\n        <div class=\"groups\" id=\"groups\"><\/div>\n        <div style=\"font-size:11px;color:var(--t3)\">9 groups \u00b7 Auto-advance \u00b7 Paste full IID in first field<\/div>\n      <\/div>\n\n      <div class=\"panel\" id=\"p-ocr\">\n        <div class=\"slabel\">Upload photo of Office wizard<\/div>\n        <div id=\"ocr-upload-zone\" class=\"ocr-drop\" onclick=\"document.getElementById('ocr-file').click()\">\n          <input type=\"file\" id=\"ocr-file\" accept=\"image\/*\" style=\"display:none\" onchange=\"ysgOcrHandleFile(this.files[0])\"\/>\n          <div class=\"ocr-drop-icon\">\ud83d\udcf8<\/div>\n          <div class=\"ocr-drop-title\">Upload screenshot<\/div>\n          <div class=\"ocr-drop-sub\">Photo showing Step 2 IID numbers<\/div>\n        <\/div>\n        <div id=\"ocr-preview-wrap\" style=\"display:none\">\n          <img id=\"ocr-preview-img\" style=\"width:100%;border-radius:12px;border:1px solid var(--b2);margin-bottom:10px;max-height:220px;object-fit:contain;background:var(--s2)\"\/>\n          <div style=\"display:flex;gap:8px\">\n            <button class=\"btn-new\" onclick=\"ysgOcrReset()\" style=\"flex:1\">\u21a9 Change<\/button>\n            <button class=\"btn-gen\" onclick=\"ysgOcrStart()\" style=\"flex:2;margin-top:0\">\ud83d\udd0d Extract IID<\/button>\n          <\/div>\n        <\/div>\n        <div id=\"ocr-progress\" style=\"display:none;text-align:center;padding:20px 0\">\n          <div id=\"ocr-progress-label\" style=\"font-size:13px;color:var(--t2);margin-bottom:10px\">Scanning...<\/div>\n          <div style=\"background:var(--s2);border-radius:50px;height:5px;overflow:hidden\">\n            <div id=\"ocr-bar\" style=\"height:100%;border-radius:50px;background:linear-gradient(90deg,var(--ac),var(--gr));width:0%;transition:width .3s\"><\/div>\n          <\/div>\n        <\/div>\n        <div id=\"ocr-groups-wrap\" style=\"display:none\">\n          <div class=\"slabel\" style=\"margin-top:12px\">Extracted IID \u2014 please verify<\/div>\n          <div id=\"ocr-groups\" style=\"display:flex;flex-wrap:wrap;gap:8px;margin:10px 0\"><\/div>\n          <div id=\"ocr-warn\" style=\"display:none;background:rgba(255,204,0,.08);border:1px solid rgba(255,204,0,.25);border-radius:8px;padding:10px;font-size:12px;color:#ffc107;margin-bottom:10px\">\u26a0\ufe0f Some digits may be unclear \u2014 please verify<\/div>\n          <div style=\"display:flex;gap:8px;margin-top:4px\">\n            <button class=\"btn-new\" onclick=\"ysgOcrReset()\">\u21a9 Retry<\/button>\n            <button class=\"btn-gen\" onclick=\"ysgOcrGenerate()\" style=\"flex:2;margin-top:0\">\u26a1 Generate CID<\/button>\n          <\/div>\n        <\/div>\n        <div id=\"ocr-error\" style=\"display:none;background:rgba(255,77,109,.08);border:1px solid rgba(255,77,109,.25);border-radius:10px;padding:14px;text-align:center;margin-top:10px\">\n          <div id=\"ocr-error-msg\" style=\"color:var(--rd);font-size:13px;margin-bottom:10px\">Could not extract IID<\/div>\n          <button class=\"btn-new\" onclick=\"ysgOcrReset()\">\u21a9 Retry<\/button>\n        <\/div>\n      <\/div>\n\n      <div class=\"err\" id=\"err\"><\/div>\n      <div class=\"polling\" id=\"polling\"><div class=\"pspin\"><\/div><span id=\"poll-txt\">Processing...<\/span><\/div>\n      <button class=\"btn-gen\" id=\"btn-gen\" onclick=\"ysgGenerate()\">\n        <span>\u26a1<\/span>\n        <span id=\"btn-lbl\">Generate Confirmation ID<\/span>\n        <div class=\"bspin\" id=\"sp-main\"><\/div>\n      <\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"result\" id=\"result\">\n    <div class=\"res-lbl\"><div class=\"chk\">\u2713<\/div>Confirmation ID Generated!<\/div>\n    <div style=\"display:flex;align-items:center;gap:8px;background:rgba(61,127,255,.07);border:1px solid rgba(61,127,255,.2);border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:12px;color:var(--t2)\">\n      <span style=\"font-size:16px\">\ud83d\udc46<\/span>\n      <span><strong style=\"color:var(--tx)\">Click any box<\/strong> to automatically copy that group's number to your clipboard.<\/span>\n    <\/div>\n    <div class=\"cid-cards-grid\" id=\"cid-cards-grid\" style=\"display:none\"><\/div>\n    <div id=\"cid-box-wrap\" style=\"display:none\"><div id=\"cid-out\" style=\"font-family:var(--mono);font-size:clamp(15px,2.5vw,20px);font-weight:700;letter-spacing:3px;color:var(--gr);word-break:break-all;line-height:2;text-shadow:0 0 20px rgba(0,229,160,.4)\"><\/div><\/div>\n    <div class=\"cid-hint\">\n      <strong>\ud83d\udccb EXAMPLE: How to enter your CID<\/strong>\n      Go to Office activation (Step 3) and enter this code in each box from <strong>A to H<\/strong>:      <div class=\"step-letters\"><span class=\"sl\">A<\/span><span class=\"sl\">B<\/span><span class=\"sl\">C<\/span><span class=\"sl\">D<\/span><span class=\"sl\">E<\/span><span class=\"sl\">F<\/span><span class=\"sl\">G<\/span><span class=\"sl\">H<\/span><\/div>\n    <\/div>\n    <div class=\"btn-row\">\n      <button class=\"btn-copy\" id=\"btn-copy\" onclick=\"ysgCopy()\">\ud83d\udccb Copy CID<\/button>\n      <button class=\"btn-dl\" onclick=\"ysgDownload()\">\ud83d\udcbe Save .txt<\/button>\n      <button class=\"btn-new\" onclick=\"ysgReset()\">\u21a9 New<\/button>\n    <\/div>\n  <\/div>\n\n  <div class=\"no-credits-section\" id=\"no-credits-section\">\n    <div style=\"font-size:36px;margin-bottom:12px\">\ud83d\ude14<\/div>\n    <div style=\"font-size:17px;font-weight:700;margin-bottom:8px\">No credits available<\/div>\n    <div style=\"font-size:13px;color:var(--t2);margin-bottom:20px;line-height:1.7\">\n      This code has no credits remaining.<br>Purchase <a href=\"\/products\/office-professional-plus-2021\" style=\"color:var(--ac)\">Office Professional Plus 2021<\/a> to get more.    <\/div>\n    <a href=\"\/products\/office-professional-plus-2021\" style=\"display:inline-flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--ac),var(--ac2));border-radius:12px;color:#fff;font-weight:700;font-size:14px;padding:13px 28px;text-decoration:none\">\ud83d\uded2 Buy now<\/a>\n  <\/div>\n\n  <div class=\"steps\" id=\"steps-section\">\n    <div class=\"steps-ttl\">\ud83d\ude80 How it works<\/div>\n        <div class=\"step\"><div class=\"step-n\">1<\/div><div class=\"step-b\"><strong>Buy Office 2021<\/strong><span>After purchase, you receive an access code (YS-XXXXXX) by email.<\/span><\/div><\/div>\n    <div class=\"step\"><div class=\"step-n\">2<\/div><div class=\"step-b\"><strong>Enter your code<\/strong><span>Type your code in the field above and verify it.<\/span><\/div><\/div>\n    <div class=\"step\"><div class=\"step-n\">3<\/div><div class=\"step-b\"><strong>Enter the IID<\/strong><span>Open Microsoft Office, go to phone activation and copy the Installation ID.<\/span><button class=\"example-btn\" onclick=\"ysgToggleExample()\">\ud83d\uddbc View example<\/button><div class=\"example-img\" id=\"example-img\"><img decoding=\"async\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0770\/1082\/9541\/files\/office-iid-example.jpg\" alt=\"IID Example\"\/><div class=\"example-caption\">The numbers in the red box are your Installation ID (IID)<\/div><\/div><\/div><\/div>\n    <div class=\"step\"><div class=\"step-n\">4<\/div><div class=\"step-b\"><strong>Get the CID<\/strong><span>The tool generates the Confirmation ID automatically. Enter it in fields A\u2013H on the Office activation screen. (1 credit = 1 CID)<\/span><\/div><\/div>\n      <\/div>\n\n  <div class=\"foot\">Get Confirmation Pro \u00b7 Yasui Shop JP \u00b7 <a href=\"\/products\/office-professional-plus-2021\">Buy Office 2021<\/a><\/div>\n\n<\/div><!-- .ys-app -->\n<\/div><!-- #ys-getcid-wrap -->\n<div id=\"ys-toast\"><\/div>\n\n<script>\n(function(){\nconst WORKER = 'https:\/\/getcid-proxy.peru-japan.workers.dev';\nconst GRP = 9, SZ = [7,7,7,7,7,7,7,7,7];\nconst LANG = 'en';\nconst GS = { tab:'manual', hist:[], credits:0, code:'' };\nconst T = {\n  generate:    LANG==='ja' ? 'Confirmation ID \u3092\u751f\u6210' : 'Generate Confirmation ID',\n  getting:     LANG==='ja' ? 'CID\u751f\u6210\u4e2d...' : 'Generating CID...',\n  sending:     LANG==='ja' ? 'IID\u3092\u9001\u4fe1\u4e2d...' : 'Sending IID...',\n  copied:      LANG==='ja' ? '\u2705 \u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f!' : '\u2705 Copied!',\n  copyCID:     LANG==='ja' ? '\ud83d\udccb CID\u3092\u30b3\u30d4\u30fc' : '\ud83d\udccb Copy CID',\n  noCredits:   LANG==='ja' ? '\u30af\u30ec\u30b8\u30c3\u30c8\u304c\u3042\u308a\u307e\u305b\u3093\u3002' : 'No credits available.',\n  completeIID: LANG==='ja' ? 'IID\u306e\u5168\u30b0\u30eb\u30fc\u30d7\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002' : 'Please complete all IID groups.',\n  connError:   LANG==='ja' ? '\u63a5\u7d9a\u30a8\u30e9\u30fc\u3002' : 'Connection error.',\n  credits:     LANG==='ja' ? '\u30af\u30ec\u30b8\u30c3\u30c8' : 'credits',\n  invalidCode: LANG==='ja' ? '\u30b3\u30fc\u30c9\u304c\u7121\u52b9\u3067\u3059\u3002\u78ba\u8a8d\u3057\u3066\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002' : 'Invalid code. Please check and try again.',\n  verifying:   LANG==='ja' ? '\u78ba\u8a8d\u4e2d...' : 'Verifying...',\n  verify:      LANG==='ja' ? '\u78ba\u8a8d' : 'Verify',\n};\n\ndocument.documentElement.style.background = '#07080f';\ndocument.body.classList.add('ys-getcid-page');\n\nwindow.addEventListener('DOMContentLoaded', function() {\n  document.body.classList.add('ys-getcid-page');\n  ysgInitGroups();\n  document.getElementById('code-input').addEventListener('keydown', function(e) { if(e.key==='Enter') ysgVerifyCode(); });\n});\n\nasync function ysgVerifyCode() {\n  const code = document.getElementById('code-input').value.trim().toUpperCase();\n  if (!code) return;\n  const btn = document.getElementById('btn-verify');\n  btn.disabled = true; btn.textContent = T.verifying;\n  try {\n    const r = await fetch(WORKER + '\/verify-code?code=' + encodeURIComponent(code));\n    const d = await r.json();\n    if (!d.valid) { ysgShowCodeErr(T.invalidCode); return; }\n    GS.code = d.code; GS.credits = d.credits || 0;\n    document.getElementById('active-code').textContent = d.code;\n    document.getElementById('active-label').textContent = d.label || (LANG==='ja'?'\u30a2\u30af\u30bb\u30b9\u30b3\u30fc\u30c9\u78ba\u8a8d\u6e08\u307f':'Access code verified');\n    document.getElementById('user-card').classList.add('show');\n    document.getElementById('code-card').style.display = 'none';\n    ysgUpdateCreditsUI(GS.credits);\n  } catch(e) { ysgShowCodeErr(T.connError); }\n  finally { btn.disabled = false; btn.textContent = T.verify; }\n}\n\nfunction ysgUpdateCreditsUI(credits) {\n  const disp = document.getElementById('credits-display');\n  if (credits > 0) {\n    disp.innerHTML = '<div class=\"credits-pill\"><div class=\"credits-num\">'+credits+'<\/div><div class=\"credits-lbl\">'+T.credits+'<\/div><\/div>';\n    document.getElementById('tool-section').style.display = 'block';\n    document.getElementById('steps-section').style.display = 'none';\n    document.getElementById('no-credits-section').classList.remove('show');\n  } else {\n    disp.innerHTML = '<div class=\"no-credits-pill\">'+T.noCredits+'<\/div>';\n    document.getElementById('tool-section').style.display = 'none';\n    document.getElementById('no-credits-section').classList.add('show');\n  }\n}\n\nfunction ysgGoTab(name) {\n  GS.tab = name;\n  document.querySelectorAll('#ys-getcid-wrap .tab').forEach(function(b){b.classList.remove('active');});\n  document.getElementById('t-'+name).classList.add('active');\n  document.querySelectorAll('#ys-getcid-wrap .panel').forEach(function(p){p.classList.remove('active');});\n  document.getElementById('p-'+name).classList.add('active');\n  document.getElementById('btn-gen').style.display = (name==='ocr') ? 'none' : 'flex';\n  ysgHideErr();\n}\n\nfunction ysgInitGroups() {\n  const w = document.getElementById('groups'); w.innerHTML = '';\n  for (var i = 0; i < GRP; i++) {\n    if (i > 0) { var s = document.createElement('span'); s.className='gsep'; s.textContent='\u00b7'; w.appendChild(s); }\n    var inp = document.createElement('input');\n    inp.type='text'; inp.className='grp'; inp.maxLength=SZ[i];\n    inp.inputMode='numeric'; inp.placeholder='0'.repeat(SZ[i]); inp.dataset.idx=i;\n    (function(inp, i){\n      inp.addEventListener('input', function() {\n        inp.value = inp.value.replace(\/\\D\/g,'');\n        inp.classList.toggle('ok', inp.value.length >= SZ[i]-1);\n        ysgHideErr();\n        if (inp.value.length >= SZ[i]) { var nx=ysgGetG(i+1); if(nx) nx.focus(); }\n      });\n      inp.addEventListener('keydown', function(e) {\n        if (e.key==='Backspace' && inp.value==='') { var p=ysgGetG(i-1); if(p) p.focus(); }\n        if (e.key===' '||e.key==='-') { e.preventDefault(); var n=ysgGetG(i+1); if(n) n.focus(); }\n      });\n      inp.addEventListener('paste', function(e) {\n        e.preventDefault();\n        var raw = e.clipboardData.getData('text').replace(\/\\D\/g,'');\n        if (raw.length > 8) ysgFillG(raw); else { inp.value=raw.substr(0,SZ[i]); inp.dispatchEvent(new Event('input')); }\n      });\n    })(inp, i);\n    w.appendChild(inp);\n  }\n}\nfunction ysgGetG(i) { return document.querySelector('#groups .grp[data-idx=\"'+i+'\"]'); }\nfunction ysgFillG(d) { var p=0; for(var i=0;i<GRP;i++){var g=ysgGetG(i);if(g){g.value=d.substr(p,SZ[i]);g.classList.toggle('ok',g.value.length>0);p+=SZ[i];}} }\nfunction ysgGetGV() { var a=[]; for(var i=0;i<GRP;i++){var g=ysgGetG(i);a.push(g?g.value.trim():'');} return a; }\n\nasync function ysgGenerate() {\n  ysgHideErr();\n  if (!GS.code) return;\n  if (GS.credits < 1) { ysgShowErr(T.noCredits); return; }\n  var g = ysgGetGV();\n  if (!g.every(function(v,i){return v.length>=SZ[i]-1;})) { ysgShowErr(T.completeIID); return; }\n  var iid = g.join(' ');\n  ysgSetLoad(true);\n  document.getElementById('polling').classList.add('show');\n  document.getElementById('poll-txt').textContent = T.sending;\n  try {\n    var r = await fetch(WORKER + '\/generate', {\n      method:'POST',\n      headers:{'Content-Type':'application\/json'},\n      body:JSON.stringify({code:GS.code, iid:iid})\n    });\n    var d;\n    try { d = await r.json(); } catch(e) { throw new Error('Server returned invalid response. Please try again.'); }\n    document.getElementById('polling').classList.remove('show');\n    if (d.error) { ysgShowErr(d.error); return; }\n    if (!d.cid || d.cid.trim()==='') { ysgShowErr('CID was not returned. Please try again.'); return; }\n    GS.credits = (typeof d.creditsLeft==='number') ? d.creditsLeft : GS.credits;\n    ysgUpdateCreditsUI(GS.credits);\n    var cidClean = d.cid.trim();\n    var pts = cidClean.split(\/[\\s\\-]+\/).filter(Boolean);\n    if (pts.length===1 && \/^\\d+$\/.test(pts[0])) {\n      var raw=pts[0]; pts=[];\n      for(var i=0;i<raw.length;i+=6) pts.push(raw.substr(i,6));\n    }\n    var labels=['A','B','C','D','E','F','G','H'];\n    var grid = document.getElementById('cid-cards-grid');\n    grid.innerHTML = pts.map(function(p,i){\n      return '<div class=\"cid-card-ah\" onclick=\"ysgCopyCard(this,\\''+p+'\\')\" title=\"'+(LANG==='ja'?'\u30af\u30ea\u30c3\u30af\u3057\u3066\u30b3\u30d4\u30fc':'Click to copy')+'\">'+\n        '<div class=\"cid-card-letter\">'+(labels[i]||i+1)+'<\/div>'+\n        '<div class=\"cid-card-value\">'+p+'<\/div>'+\n        '<div class=\"card-copied-lbl\" style=\"display:none;font-size:10px;color:var(--gr);margin-top:4px;font-weight:700\">\u2713 '+(LANG==='ja'?'\u30b3\u30d4\u30fc\u6e08\u307f':'Copied!')+'<\/div>'+\n      '<\/div>';\n    }).join('');\n    grid.style.display='grid';\n    document.getElementById('cid-out').innerHTML = pts.map(function(p,i){\n      return '<span>'+p+'<\/span>'+(i<pts.length-1?'<span style=\"color:rgba(0,229,160,.4);margin:0 4px\"> \u2014 <\/span>':'');\n    }).join('');\n    var resEl=document.getElementById('result');\n    resEl.classList.add('show');\n    setTimeout(function(){var top=resEl.getBoundingClientRect().top+window.scrollY-20;window.scrollTo({top:top,behavior:'smooth'});},100);\n    ysgToast('\u2705 CID \u2014 '+GS.credits+' '+T.credits);\n  } catch(e) {\n    document.getElementById('polling').classList.remove('show');\n    ysgShowErr(e.message||T.connError);\n  } finally { ysgSetLoad(false); }\n}\n\nasync function ysgCopyCard(el, val) {\n  try {\n    await navigator.clipboard.writeText(val);\n    var lbl=el.querySelector('.card-copied-lbl');\n    el.style.background='rgba(0,229,160,.15)'; el.style.borderColor='rgba(0,229,160,.6)';\n    if(lbl) lbl.style.display='block';\n    ysgToast('\u2705 '+val+' \u2014 '+(LANG==='ja'?'\u30b3\u30d4\u30fc\u3057\u307e\u3057\u305f':'Copied!'));\n    setTimeout(function(){el.style.background='';el.style.borderColor='';if(lbl)lbl.style.display='none';},1800);\n  } catch(e){ysgToast('\u26a0 Copy failed');}\n}\n\nasync function ysgCopy() {\n  var cid=document.getElementById('cid-out').textContent.replace(\/ \u2014 \/g,'-');\n  if(!cid) return;\n  await navigator.clipboard.writeText(cid);\n  var b=document.getElementById('btn-copy');\n  b.textContent=T.copied; b.classList.add('done');\n  setTimeout(function(){b.textContent=T.copyCID;b.classList.remove('done');},2000);\n  ysgToast(T.copied);\n}\n\nfunction ysgDownload() {\n  var cid=document.getElementById('cid-out').textContent.replace(\/ \u2014 \/g,'-');\n  var date=new Date().toLocaleString(LANG==='ja'?'ja-JP':'en-US');\n  var text=['Yasui Shop JP \u2014 Confirmation ID','================================','Date   : '+date,'CID    : '+cid,'================================','Keep this file in a safe place.'].join('\\n');\n  var a=document.createElement('a');\n  a.href='data:text\/plain;charset=utf-8,'+encodeURIComponent(text);\n  a.download='CID-'+date.replace(\/[\/:,\\s]\/g,'-').replace(\/-+\/g,'-')+'.txt';\n  a.click();\n  ysgToast('\ud83d\udcbe '+(LANG==='ja'?'\u4fdd\u5b58\u3057\u307e\u3057\u305f':'Saved!'));\n}\n\nfunction ysgReset() {\n  document.getElementById('cid-cards-grid').style.display='none';\n  document.getElementById('result').classList.remove('show');\n  document.getElementById('steps-section').style.display='block';\n  for(var i=0;i<GRP;i++){var g=ysgGetG(i);if(g){g.value='';g.classList.remove('ok');}}\n  var g0=ysgGetG(0); if(g0) g0.focus();\n  ysgHideErr();\n}\n\nfunction ysgToggleExample() {\n  var img=document.getElementById('example-img');\n  var btn=document.querySelector('#ys-getcid-wrap .example-btn');\n  var isShow=img.classList.toggle('show');\n  btn.textContent=isShow?(LANG==='ja'?'\ud83d\udd3c \u9589\u3058\u308b':'\ud83d\udd3c Hide example'):(LANG==='ja'?'\ud83d\uddbc \u4f8b\u3092\u898b\u308b':'\ud83d\uddbc View example');\n}\n\nfunction ysgSetLoad(on) {\n  var btn=document.getElementById('btn-gen'),lbl=document.getElementById('btn-lbl'),sp=document.getElementById('sp-main');\n  btn.disabled=on; lbl.textContent=on?T.getting:T.generate; sp.style.display=on?'block':'none';\n}\nfunction ysgShowErr(m){var e=document.getElementById('err');e.textContent='\u26a0 '+m;e.classList.add('show');}\nfunction ysgHideErr(){document.getElementById('err').classList.remove('show');}\nfunction ysgShowCodeErr(m){var e=document.getElementById('code-err');e.textContent='\u26a0 '+m;e.classList.add('show');}\nfunction ysgHideCodeErr(){document.getElementById('code-err').classList.remove('show');}\nvar ysgTT; function ysgToast(m){var t=document.getElementById('ys-toast');t.textContent=m;t.classList.add('show');clearTimeout(ysgTT);ysgTT=setTimeout(function(){t.classList.remove('show');},3000);}\n\n\/\/ OCR\nvar ocrIID='', tesseractLoaded=false;\nfunction ysgOcrHandleFile(file) {\n  if(!file||!file.type.startsWith('image\/')) return;\n  var url=URL.createObjectURL(file);\n  document.getElementById('ocr-preview-img').src=url;\n  document.getElementById('ocr-upload-zone').style.display='none';\n  document.getElementById('ocr-preview-wrap').style.display='block';\n}\nasync function ysgOcrStart() {\n  document.getElementById('ocr-preview-wrap').style.display='none';\n  document.getElementById('ocr-error').style.display='none';\n  document.getElementById('ocr-groups-wrap').style.display='none';\n  document.getElementById('ocr-progress').style.display='block';\n  var imgSrc=document.getElementById('ocr-preview-img').src;\n  try {\n    if(!tesseractLoaded) await ysgLoadTesseract();\n    var result=await Tesseract.recognize(imgSrc,'eng',{logger:function(m){\n      if(m.status==='recognizing text'){\n        var pct=Math.round(m.progress*100);\n        document.getElementById('ocr-bar').style.width=pct+'%';\n        document.getElementById('ocr-progress-label').textContent=pct<40?(LANG==='ja'?'\u30a8\u30f3\u30b8\u30f3\u8aad\u307f\u8fbc\u307f\u4e2d...':'Loading OCR...'):pct<80?(LANG==='ja'?'\u30b9\u30ad\u30e3\u30f3\u4e2d...':'Scanning...'):(LANG==='ja'?'\u6570\u5b57\u3092\u62bd\u51fa\u4e2d...':'Extracting numbers...');\n      }\n    }});\n    document.getElementById('ocr-progress').style.display='none';\n    var extracted=ysgOcrExtractIID(result.data);\n    if(!extracted.groups){document.getElementById('ocr-error').style.display='block';return;}\n    ysgOcrShowGroups(extracted.groups,extracted.confidences);\n  } catch(e){\n    document.getElementById('ocr-progress').style.display='none';\n    document.getElementById('ocr-error').style.display='block';\n    document.getElementById('ocr-error-msg').textContent='OCR error: '+e.message;\n  }\n}\nfunction ysgLoadTesseract() {\n  return new Promise(function(res,rej){\n    var s=document.createElement('script');\n    s.src='https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/tesseract.js\/4.1.1\/tesseract.min.js';\n    s.onload=function(){tesseractLoaded=true;res();}; s.onerror=rej;\n    document.head.appendChild(s);\n  });\n}\nfunction ysgOcrExtractIID(data) {\n  var confMap={};\n  if(data.words) data.words.forEach(function(w){confMap[w.text.replace(\/\\D\/g,'')]=w.confidence;});\n  var text=data.text;\n  var nums=(text.match(\/\\b\\d{6,9}\\b\/g)||[]);\n  if(nums.length>=7){\n    if(nums.length<9) document.getElementById('ocr-warn').style.display='block';\n    var groups=nums.slice(0,9);\n    return {groups:groups,confidences:groups.map(function(g){return confMap[g]??85;})};\n  }\n  var raw=text.replace(\/\\D\/g,'');\n  if(raw.length>=54){\n    var groups=[],sizes=[7,7,7,7,7,7,7,7,7],pos=0;\n    for(var i=0;i<sizes.length;i++){if(pos+sizes[i]<=raw.length){groups.push(raw.substr(pos,sizes[i]));pos+=sizes[i];}}\n    if(groups.length<9) document.getElementById('ocr-warn').style.display='block';\n    return groups.length>=7?{groups:groups,confidences:groups.map(function(g){return confMap[g]??70;})}:{groups:null,confidences:[]};\n  }\n  return {groups:null,confidences:[]};\n}\nfunction ysgOcrShowGroups(groups,confidences) {\n  ocrIID=groups.join(' ');\n  var el=document.getElementById('ocr-groups');\n  var lowConf=confidences.some(function(c){return c<75;});\n  el.innerHTML=groups.map(function(g,i){\n    var conf=confidences[i]??85,isDubious=conf<75;\n    var chipStyle=isDubious?'border-color:rgba(255,193,7,.7);background:rgba(255,193,7,.08);color:#ffc107;':'border-color:rgba(0,229,160,.35);';\n    var badge=isDubious?'<div style=\"font-size:9px;color:#ffc107;margin-top:3px;font-weight:700\">\u26a0 '+(LANG==='ja'?'\u8981\u78ba\u8a8d':'CHECK')+'<\/div>':'<div style=\"font-size:9px;color:var(--gr);margin-top:3px;\">\u2713 OK<\/div>';\n    return '<div style=\"display:flex;flex-direction:column;align-items:center;gap:2px\"><div class=\"ocr-group-chip\" contenteditable=\"true\" oninput=\"ysgOcrUpdateIID(this,'+i+')\" style=\"font-size:16px;padding:10px 14px;min-width:90px;'+chipStyle+'\">'+g+'<\/div>'+badge+'<\/div>';\n  }).join('');\n  if(lowConf){var w=document.getElementById('ocr-warn');w.style.display='block';w.innerHTML='\u26a0\ufe0f '+(LANG==='ja'?'<strong>\u9ec4\u8272\u306e\u30b0\u30eb\u30fc\u30d7<\/strong>\u306f\u8aad\u307f\u53d6\u308a\u306b\u4e0d\u5b89\u304c\u3042\u308a\u307e\u3059\u3002\u751f\u6210\u524d\u306b\u5fc5\u305a\u78ba\u8a8d\u30fb\u4fee\u6b63\u3057\u3066\u304f\u3060\u3055\u3044\u3002':'<strong>Yellow groups<\/strong> may have been misread. Please verify and correct before generating.');}\n  document.getElementById('ocr-groups-wrap').style.display='block';\n}\nfunction ysgOcrUpdateIID(el,idx) {\n  var clean=el.textContent.replace(\/\\D\/g,'');\n  if(el.textContent!==clean){var sel=window.getSelection(),pos=sel.focusOffset;el.textContent=clean;try{var r=document.createRange();r.setStart(el.firstChild||el,Math.min(pos,clean.length));r.collapse(true);sel.removeAllRanges();sel.addRange(r);}catch(e){}}\n  ocrIID=[...document.querySelectorAll('#ocr-groups .ocr-group-chip')].map(function(c){return c.textContent.replace(\/\\D\/g,'');}).join(' ');\n}\nfunction ysgOcrGenerate() {\n  if(!ocrIID) return;\n  var parts=ocrIID.trim().split(\/[\\s]+\/).filter(Boolean);\n  var inputs=document.querySelectorAll('#groups .grp');\n  parts.forEach(function(p,i){if(inputs[i]) inputs[i].value=p;});\n  GS.tab='manual'; ysgGoTab('manual'); ysgGenerate();\n}\nfunction ysgOcrReset() {\n  document.getElementById('ocr-upload-zone').style.display='block';\n  document.getElementById('ocr-preview-wrap').style.display='none';\n  document.getElementById('ocr-progress').style.display='none';\n  document.getElementById('ocr-groups-wrap').style.display='none';\n  document.getElementById('ocr-error').style.display='none';\n  document.getElementById('ocr-warn').style.display='none';\n  document.getElementById('ocr-bar').style.width='0%';\n  document.getElementById('ocr-file').value='';\n  ocrIID='';\n}\n\nwindow.ysgVerifyCode=ysgVerifyCode;\nwindow.ysgGoTab=ysgGoTab;\nwindow.ysgGenerate=ysgGenerate;\nwindow.ysgCopyCard=ysgCopyCard;\nwindow.ysgCopy=ysgCopy;\nwindow.ysgDownload=ysgDownload;\nwindow.ysgReset=ysgReset;\nwindow.ysgToggleExample=ysgToggleExample;\nwindow.ysgHideCodeErr=ysgHideCodeErr;\nwindow.ysgOcrHandleFile=ysgOcrHandleFile;\nwindow.ysgOcrStart=ysgOcrStart;\nwindow.ysgOcrGenerate=ysgOcrGenerate;\nwindow.ysgOcrReset=ysgOcrReset;\nwindow.ysgOcrUpdateIID=ysgOcrUpdateIID;\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_angie_page":false,"footnotes":""},"class_list":["post-1222","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/pages\/1222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/comments?post=1222"}],"version-history":[{"count":0,"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/pages\/1222\/revisions"}],"wp:attachment":[{"href":"https:\/\/yasuishopjp.com\/en\/wp-json\/wp\/v2\/media?parent=1222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}