{"id":2295,"date":"2026-03-10T10:04:18","date_gmt":"2026-03-10T01:04:18","guid":{"rendered":"https:\/\/next-action.co.jp\/hoshulp\/security-check\/"},"modified":"2026-03-14T20:56:45","modified_gmt":"2026-03-14T11:56:45","slug":"security-check","status":"publish","type":"page","link":"https:\/\/next-action.co.jp\/hoshulp\/security-check\/","title":{"rendered":"WordPress\u7121\u6599\u7c21\u6613\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a3a\u65ad"},"content":{"rendered":"\n<style>\n.page-id-2295 .l-article { max-width: 100% !important; }\n.page-id-2295 .l-content.l-container { max-width: 100% !important; padding: 0 !important; }\n.page-id-2295 .l-mainContent { width: 100% !important; max-width: 100% !important; }\n.page-id-2295 .l-sidebar { display: none !important; }\n.page-id-2295 .l-content { padding-top: 0 !important; }\n\n.na-diag {\n  font-family: \"Hiragino Sans\",\"Hiragino Kaku Gothic ProN\",\"Noto Sans JP\",\"Yu Gothic\",Meiryo,sans-serif;\n  color: #2c3e50; line-height: 1.8; font-size: 15px;\n  --primary: #2d49a2; --accent: #4bb108; --orange: #e94709;\n  --bg-light: #f7f9fc; --bg-blue: #eaf0fa;\n}\n.na-diag * { box-sizing: border-box; }\n.na-diag img { max-width: 100%; height: auto; }\n.na-diag-inner { max-width: 800px; margin: 0 auto; padding: 0 20px; }\n\n\/* Hero *\/\n.na-diag-hero {\n  background: linear-gradient(135deg, #1a3a6e 0%, #2d49a2 50%, #1e5cb3 100%);\n  color: #fff; text-align: center; padding: 60px 20px;\n}\n.na-diag-hero h1 { font-size: clamp(1.4rem, 1rem + 2vw, 2.2rem); margin: 0 0 12px; font-weight: 900; line-height: 1.4; }\n.na-diag-hero .hero-sub { font-size: 1rem; opacity: 0.9; margin: 0 0 8px; }\n.na-diag-hero .hero-badge { display: inline-block; background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.3); border-radius: 50px; padding: 8px 24px; font-size: 0.85rem; margin-top: 16px; }\n\n\/* Steps indicator *\/\n.na-diag-steps { display: flex; justify-content: center; gap: 0; padding: 30px 20px 10px; background: var(--bg-light); }\n.na-step { display: flex; align-items: center; gap: 0; }\n.na-step-dot { width: 36px; height: 36px; border-radius: 50%; background: #ccc; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 0.85rem; transition: all 0.3s; }\n.na-step-dot.active { background: var(--primary); }\n.na-step-dot.done { background: var(--accent); }\n.na-step-label { font-size: 0.75rem; color: #999; margin-left: 6px; margin-right: 20px; white-space: nowrap; }\n.na-step-label.active { color: var(--primary); font-weight: 700; }\n.na-step-arrow { color: #ccc; margin: 0 4px; font-size: 0.8rem; }\n\n\/* URL Input Section *\/\n.na-diag-url-section { background: var(--bg-light); padding: 20px 20px 40px; text-align: center; }\n.na-diag h2,\n.post_content .na-diag h2 {\n  font-size: 1.4rem !important; color: #0b3b7a !important; margin: 0 0 12px !important;\n  font-weight: 900 !important; letter-spacing: 0.05em !important;\n  background: transparent !important; padding: 18px 0 !important;\n  border-radius: 0 !important; text-align: center !important;\n  border: none !important;\n  border-top: 2px solid #2d49a2 !important;\n  border-bottom: 2px solid #2d49a2 !important;\n  box-shadow: none !important;\n}\n.post_content .na-diag h2::before,\n.post_content .na-diag h2::after { display: none !important; }\n.na-diag-url-section h2 { font-size: 1.3rem !important; }\n.na-diag-url-section p { color: #666; font-size: 0.9rem; margin: 0 0 20px; }\n.na-url-form { display: flex; gap: 10px; max-width: 600px; margin: 0 auto; }\n.na-url-form input { flex: 1; padding: 14px 18px; border: 2px solid #ddd; border-radius: 8px; font-size: 1rem; outline: none; transition: border 0.3s; }\n.na-url-form input:focus { border-color: var(--primary); }\n.na-url-form button { background: var(--primary); color: #fff; border: none; padding: 14px 28px; border-radius: 8px; font-size: 1rem; font-weight: 700; cursor: pointer; white-space: nowrap; transition: opacity 0.3s; }\n.na-url-form button:hover { opacity: 0.85; }\n.na-url-error { color: #e74c3c; font-size: 0.85rem; margin-top: 8px; display: none; }\n\n\/* Quiz Section *\/\n.na-diag-quiz { background: #fff; padding: 40px 20px; display: none; }\n.na-quiz-progress { max-width: 600px; margin: 0 auto 30px; }\n.na-quiz-progress-bar { height: 6px; background: #eee; border-radius: 3px; overflow: hidden; }\n.na-quiz-progress-fill { height: 100%; background: var(--accent); border-radius: 3px; transition: width 0.4s ease; }\n.na-quiz-progress-text { display: flex; justify-content: space-between; align-items: center; font-size: 0.85rem; color: #666; margin-top: 8px; }\n.na-quiz-counter { font-weight: 900; color: var(--primary); font-size: 1.1rem; }\n.na-quiz-counter span { font-size: 1.5rem; }\n.na-quiz-remaining { color: #999; font-size: 0.8rem; }\n.na-quiz-card { max-width: 600px; margin: 0 auto; }\n.na-quiz-category { display: inline-block; background: var(--bg-blue); color: var(--primary); font-size: 0.78rem; font-weight: 700; padding: 4px 14px; border-radius: 20px; margin-bottom: 10px; }\n.na-quiz-question { font-size: 1.15rem; font-weight: 700; color: #333; margin: 0 0 20px; line-height: 1.6; }\n.na-quiz-options { display: flex; flex-direction: column; gap: 10px; }\n.na-quiz-option { display: flex; align-items: center; gap: 12px; padding: 16px 18px; border: 2px solid #e0e0e0; border-radius: 10px; cursor: pointer; transition: all 0.2s; font-size: 0.95rem; }\n.na-quiz-option:hover { border-color: var(--primary); background: var(--bg-blue); }\n.na-quiz-option .opt-icon { width: 24px; height: 24px; border-radius: 50%; border: 2px solid #ccc; flex-shrink: 0; display: flex; align-items: center; justify-content: center; transition: all 0.2s; }\n.na-quiz-option:hover .opt-icon { border-color: var(--primary); }\n\n\/* Loading overlay *\/\n.na-diag-loading { display: none; padding: 60px 20px; text-align: center; background: var(--bg-light); }\n.na-loading-spinner { width: 48px; height: 48px; border: 4px solid #e0e0e0; border-top: 4px solid var(--primary); border-radius: 50%; animation: na-spin 0.8s linear infinite; margin: 0 auto 20px; }\n@keyframes na-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }\n.na-loading-text { font-size: 1rem; color: #666; }\n\n\/* Result Section *\/\n.na-diag-result { display: none; padding: 40px 20px; background: var(--bg-light); }\n.na-result-header { text-align: center; margin-bottom: 30px; }\n.na-result-header h2 { font-size: 1.5rem !important; }\n\/* Result section headings *\/\n.na-result-group { max-width: 600px; margin: 0 auto 24px; }\n.na-result-group-title { font-size: 1rem; font-weight: 900; padding: 10px 16px; border-radius: 8px 8px 0 0; margin: 0; display: flex; align-items: center; gap: 8px; }\n.na-result-group-title.ops { background: #2d49a2; color: #fff; }\n.na-result-group-title.tech { background: #1a6b3f; color: #fff; }\n.na-result-group-title.scan { background: #c0392b; color: #fff; }\n.na-result-group-body { border: 1px solid #e0e0e0; border-top: none; border-radius: 0 0 8px 8px; padding: 12px; display: flex; flex-direction: column; gap: 8px; background: #fff; }\n\/* NG items in result *\/\n.na-ng-label { display: inline-block; font-size: 0.7rem; font-weight: 700; color: #fff; background: #e74c3c; padding: 2px 8px; border-radius: 4px; margin-left: 8px; }\n.na-ok-label { display: inline-block; font-size: 0.7rem; font-weight: 700; color: #fff; background: #2ecc71; padding: 2px 8px; border-radius: 4px; margin-left: 8px; }\n.na-warn-label { display: inline-block; font-size: 0.7rem; font-weight: 700; color: #fff; background: #f39c12; padding: 2px 8px; border-radius: 4px; margin-left: 8px; }\n.na-detail-item.ng { border-left: 4px solid #e74c3c; }\n.na-detail-item.ok { border-left: 4px solid #2ecc71; opacity: 0.7; }\n.na-detail-item.warn { border-left: 4px solid #f39c12; }\n.na-all-ok { text-align: center; padding: 14px; background: #e8f8e8; border-radius: 8px; color: #2e8b57; font-weight: 700; font-size: 0.9rem; }\n.na-result-url { font-size: 0.85rem; color: #999; margin: 0 0 24px; word-break: break-all; }\n.na-scan-detail { font-size: 0.8rem; color: #888; margin-top: 2px; }\n\n\/* Score Circle *\/\n.na-score-wrap { display: flex; justify-content: center; margin-bottom: 30px; }\n.na-score-circle { position: relative; width: 200px; height: 200px; }\n.na-score-circle svg { width: 200px; height: 200px; transform: rotate(-90deg); }\n.na-score-circle .bg { fill: none; stroke: #e0e0e0; stroke-width: 10; }\n.na-score-circle .fg { fill: none; stroke-width: 10; stroke-linecap: round; transition: stroke-dashoffset 1.5s ease, stroke 0.5s; }\n.na-score-num { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }\n.na-score-num .grade { font-size: 1.2rem; font-weight: 900; }\n.na-score-num .pts { font-size: 2.8rem; font-weight: 900; line-height: 1; }\n.na-score-num .pts-label { font-size: 0.8rem; color: #999; }\n\n\/* Score breakdown mini *\/\n.na-score-breakdown { display: flex; justify-content: center; gap: 24px; margin-bottom: 24px; }\n.na-score-breakdown-item { text-align: center; }\n.na-score-breakdown-item .sb-label { font-size: 0.78rem; color: #666; display: block; }\n.na-score-breakdown-item .sb-val { font-size: 1.3rem; font-weight: 900; }\n\n\/* Score Message *\/\n.na-score-msg { text-align: center; max-width: 600px; margin: 0 auto 30px; padding: 20px; border-radius: 12px; font-size: 0.95rem; line-height: 1.8; }\n\n\/* Detail Breakdown *\/\n.na-detail-list { max-width: 600px; margin: 0 auto 30px; display: flex; flex-direction: column; gap: 8px; }\n.na-detail-item { display: flex; align-items: center; gap: 12px; background: #fff; padding: 14px 16px; border-radius: 8px; border: 1px solid #eee; }\n.na-detail-item .dt-cat { font-size: 0.85rem; font-weight: 700; color: #333; min-width: 160px; }\n.na-detail-item .dt-bar { flex: 1; height: 8px; background: #eee; border-radius: 4px; overflow: hidden; }\n.na-detail-item .dt-fill { height: 100%; border-radius: 4px; transition: width 1s ease; }\n.na-detail-item .dt-score { font-size: 0.85rem; font-weight: 700; min-width: 50px; text-align: right; }\n\n\/* Result CTA *\/\n.na-result-cta { max-width: 600px; margin: 0 auto; background: linear-gradient(135deg, #1a3a6e, #2d49a2); border-radius: 16px; padding: 36px 30px; text-align: center; color: #fff; }\n.na-result-cta h3 { font-size: 1.2rem; margin: 0 0 10px; }\n.na-result-cta p { font-size: 0.9rem; opacity: 0.9; margin: 0 0 20px; }\n.na-result-cta .cta-btns { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }\n.na-result-cta .btn-dl { display: inline-flex; align-items: center; gap: 8px; background: #4bb108; color: #fff; padding: 14px 32px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 1rem; transition: opacity 0.3s; box-shadow: 0 4px 0 #3a8a06; }\n.na-result-cta .btn-dl:hover { opacity: 0.85; color: #fff; }\n.na-result-cta .btn-contact { display: inline-flex; align-items: center; gap: 8px; background: transparent; color: #fff; padding: 12px 28px; border-radius: 50px; text-decoration: none; font-weight: 700; font-size: 0.95rem; border: 2px solid rgba(255,255,255,0.6); transition: all 0.3s; }\n.na-result-cta .btn-contact:hover { background: rgba(255,255,255,0.15); color: #fff; }\n\n\/* Responsive *\/\n@media (max-width: 600px) {\n  .na-url-form { flex-direction: column; }\n  .na-diag-steps { flex-wrap: wrap; gap: 4px; }\n  .na-step-label { display: none; }\n  .na-detail-item { flex-wrap: wrap; }\n  .na-detail-item .dt-cat { min-width: 100%; margin-bottom: -4px; }\n  .na-result-cta .cta-btns { flex-direction: column; align-items: center; }\n  .na-score-breakdown { gap: 12px; }\n}\n\/* ====== Page 2295 Only: SWELL Overrides ====== *\/\n.page-id-2295 .c-pageTitle { display: none !important; }\n.page-id-2295 .l-mainContent__inner { padding-top: 0 !important; }\n.page-id-2295 .l-content { padding-top: 0 !important; margin-top: 0 !important; }\n.page-id-2295 .l-content.l-container { padding-top: 0 !important; }\n.page-id-2295 .l-mainContent__inner > .post_content { padding-top: 0 !important; margin-top: 0 !important; }\n.page-id-2295 .p-breadcrumb { margin-bottom: 0 !important; }\n\n.page-id-2295 .post_content h2 {\n  background: none !important;\n  padding: 0 !important;\n  border: none !important;\n  box-shadow: none !important;\n  border-radius: 0 !important;\n}\n.page-id-2295 .post_content h2::before,\n.page-id-2295 .post_content h2::after {\n  display: none !important;\n}\n\n\/* Buttons -> Orange *\/\n.na-url-form button {\n  background: linear-gradient(135deg, #ea6103, #fc7c24) !important;\n  color: #fff !important;\n  border: 2px solid #b84c02 !important;\n  box-shadow: 0 4px 0 #a34200 !important;\n}\n.na-url-form button:hover { filter: brightness(1.08); }\n.na-result-cta .btn-dl {\n  background: linear-gradient(135deg, #ea6103, #fc7c24) !important;\n  color: #fff !important;\n  box-shadow: 0 4px 0 #a34200 !important;\n}\n.na-result-cta .btn-dl:hover { filter: brightness(1.08); color: #fff; }\n\n\/* Dark bg sections -> white text forced *\/\n.na-diag-hero, .na-diag-hero h1, .na-diag-hero p, .na-diag-hero .hero-badge { color: #fff !important; }\n.na-result-cta, .na-result-cta h3, .na-result-cta p, .na-result-cta a { color: #fff !important; }\n.na-result-group-title.ops, .na-result-group-title.tech, .na-result-group-title.scan { color: #fff !important; }\n.na-card__title { color: #fff !important; }\n\n<\/style>\n\n\n\n<div class=\"na-diag\">\n\n<!-- Hero -->\n<div class=\"na-diag-hero\">\n  <h1>WordPress \u7121\u6599<br>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a3a\u65ad<\/h1>\n  <p class=\"hero-sub\">URL\u3092\u5165\u529b\uff0b10\u306e\u8cea\u554f\u306b\u7b54\u3048\u308b\u3060\u3051\u3067\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059<\/p>\n  <div class=\"hero-badge\">\u6240\u8981\u6642\u9593 \u7d043\u5206 \uff0f \u767b\u9332\u4e0d\u8981 \uff0f \u5b8c\u5168\u7121\u6599<\/div>\n<\/div>\n\n<!-- Steps -->\n<div class=\"na-diag-steps\">\n  <div class=\"na-step\"><div class=\"na-step-dot active\" id=\"step1dot\">1<\/div><span class=\"na-step-label active\" id=\"step1lbl\">URL\u5165\u529b<\/span><\/div>\n  <span class=\"na-step-arrow\">&#9654;<\/span>\n  <div class=\"na-step\"><div class=\"na-step-dot\" id=\"step2dot\">2<\/div><span class=\"na-step-label\" id=\"step2lbl\">\u8cea\u554f<\/span><\/div>\n  <span class=\"na-step-arrow\">&#9654;<\/span>\n  <div class=\"na-step\"><div class=\"na-step-dot\" id=\"step3dot\">3<\/div><span class=\"na-step-label\" id=\"step3lbl\">\u8a3a\u65ad\u7d50\u679c<\/span><\/div>\n<\/div>\n\n<!-- Step 1: URL Input -->\n<div class=\"na-diag-url-section\" id=\"urlSection\">\n  <div class=\"na-diag-inner\">\n    <h2>\u8a3a\u65ad\u3059\u308b\u30b5\u30a4\u30c8\u306eURL\u3092\u5165\u529b<\/h2>\n    <p>WordPress\u30b5\u30a4\u30c8\u306eURL\u3092\u5165\u529b\u3057\u3066\u8a3a\u65ad\u3092\u958b\u59cb\u3057\u3066\u304f\u3060\u3055\u3044<\/p>\n    <div class=\"na-url-form\">\n      <input type=\"url\" id=\"diagUrl\" placeholder=\"https:\/\/example.com\" \/>\n      <button onclick=\"naStartQuiz()\">\u8a3a\u65ad\u958b\u59cb<\/button>\n    <\/div>\n    <div class=\"na-url-error\" id=\"urlError\">\u6709\u52b9\u306aURL\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\uff08\u4f8b: https:\/\/example.com\uff09<\/div>\n  <\/div>\n<\/div>\n\n<!-- Step 2: Quiz -->\n<div class=\"na-diag-quiz\" id=\"quizSection\">\n  <div class=\"na-diag-inner\">\n    <div class=\"na-quiz-progress\">\n      <div class=\"na-quiz-progress-bar\"><div class=\"na-quiz-progress-fill\" id=\"progressFill\"><\/div><\/div>\n      <div class=\"na-quiz-progress-text\" id=\"progressText\">1 \/ 10<\/div>\n    <\/div>\n    <div class=\"na-quiz-card\" id=\"quizCard\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- Loading (waiting for scan) -->\n<div class=\"na-diag-loading\" id=\"loadingSection\">\n  <div class=\"na-diag-inner\">\n    <div class=\"na-loading-spinner\"><\/div>\n    <div class=\"na-loading-text\">\u30b5\u30a4\u30c8\u3092\u30b9\u30ad\u30e3\u30f3\u4e2d\u3067\u3059&#8230;<br>\u3057\u3070\u3089\u304f\u304a\u5f85\u3061\u304f\u3060\u3055\u3044<\/div>\n  <\/div>\n<\/div>\n\n<!-- Step 3: Result -->\n<div class=\"na-diag-result\" id=\"resultSection\">\n  <div class=\"na-diag-inner\">\n    <div class=\"na-result-header\">\n      <h2>\u8a3a\u65ad\u7d50\u679c<\/h2>\n      <p class=\"na-result-url\" id=\"resultUrl\"><\/p>\n    <\/div>\n    <div class=\"na-score-wrap\">\n      <div class=\"na-score-circle\">\n        <svg viewBox=\"0 0 200 200\">\n          <circle class=\"bg\" cx=\"100\" cy=\"100\" r=\"85\"><\/circle>\n          <circle class=\"fg\" id=\"scoreFg\" cx=\"100\" cy=\"100\" r=\"85\" stroke-dasharray=\"534\" stroke-dashoffset=\"534\"><\/circle>\n        <\/svg>\n        <div class=\"na-score-num\">\n          <span class=\"grade\" id=\"scoreGrade\"><\/span>\n          <span class=\"pts\" id=\"scorePts\">0<\/span>\n          <span class=\"pts-label\">\/ 100<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n    <div class=\"na-score-breakdown\" id=\"scoreBreakdown\"><\/div>\n    <div class=\"na-score-msg\" id=\"scoreMsg\"><\/div>\n    <div id=\"scanGroup\"><\/div>\n    <div id=\"opsGroup\"><\/div>\n    <div id=\"techGroup\"><\/div>\n    <div class=\"na-result-cta\">\n      <h3>\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u5bfe\u7b56\u3092\u5f37\u5316\u3057\u307e\u305b\u3093\u304b\uff1f<\/h3>\n      <p>\u4fdd\u5b88\u8cc7\u6599\u3068\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30c1\u30a7\u30c3\u30af\u30b7\u30fc\u30c8\u3092\u7121\u6599\u3067\u914d\u5e03\u4e2d\u3067\u3059<\/p>\n      <div class=\"cta-btns\">\n        <a href=\"\/hoshulp\/doc-download\/\" class=\"btn-dl\">\u7121\u6599\u3067\u8cc7\u6599\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9<\/a>\n        <a href=\"\/hoshulp\/inspection\/\" class=\"btn-contact\">\u70b9\u691c\u3092\u7533\u3057\u8fbc\u3080<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<\/div>\n\n<script>\n(function(){\nvar questions = [\n  { cat: \"WordPress\\u66f4\\u65b0\", grp: \"ops\", q: \"WordPress\\u672c\\u4f53\\u306f\\u3069\\u306e\\u304f\\u3089\\u3044\\u306e\\u983b\\u5ea6\\u3067\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u6bce\\u6708\\u30c1\\u30a7\\u30c3\\u30af\\u30fb\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u308b\", pt: 10 },\n      { text: \"2\\u301c3\\u30f6\\u6708\\u306b1\\u56de\\u7a0b\\u5ea6\", pt: 6 },\n      { text: \"\\u534a\\u5e74\\u4ee5\\u4e0a\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 2 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\\u30fb\\u628a\\u63e1\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u7ba1\\u7406\", grp: \"ops\", q: \"\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u3084\\u30c6\\u30fc\\u30de\\u306e\\u66f4\\u65b0\\u306f\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u5b9a\\u671f\\u7684\\u306b\\u3059\\u3079\\u3066\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u308b\", pt: 10 },\n      { text: \"\\u4e00\\u90e8\\u3060\\u3051\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u308b\", pt: 5 },\n      { text: \"\\u307b\\u307c\\u66f4\\u65b0\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 2 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u4e0d\\u8981\\u306a\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\", grp: \"ops\", q: \"\\u4f7f\\u3063\\u3066\\u3044\\u306a\\u3044\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u3084\\u30c6\\u30fc\\u30de\\u306f\\u524a\\u9664\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u3059\\u3079\\u3066\\u524a\\u9664\\u3057\\u3066\\u3044\\u308b\", pt: 10 },\n      { text: \"\\u4e00\\u90e8\\u6b8b\\u3063\\u3066\\u3044\\u308b\", pt: 5 },\n      { text: \"\\u305f\\u304f\\u3055\\u3093\\u6b8b\\u3063\\u3066\\u3044\\u308b\", pt: 2 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u30d0\\u30c3\\u30af\\u30a2\\u30c3\\u30d7\", grp: \"ops\", q: \"\\u30b5\\u30a4\\u30c8\\u306e\\u30d0\\u30c3\\u30af\\u30a2\\u30c3\\u30d7\\u306f\\u53d6\\u5f97\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u81ea\\u52d5\\u3067\\u5b9a\\u671f\\u7684\\u306b\\u53d6\\u5f97\\u3057\\u3066\\u3044\\u308b\", pt: 10 },\n      { text: \"\\u624b\\u52d5\\u3067\\u6642\\u3005\\u53d6\\u5f97\\u3057\\u3066\\u3044\\u308b\", pt: 5 },\n      { text: \"\\u53d6\\u5f97\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 1 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u5fa9\\u65e7\\u4f53\\u5236\", grp: \"ops\", q: \"\\u30c8\\u30e9\\u30d6\\u30eb\\u6642\\u306e\\u5fa9\\u65e7\\u4f53\\u5236\\u306f\\u3042\\u308a\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u793e\\u5185\\uff0b\\u5916\\u90e8\\u5c02\\u9580\\u696d\\u8005\\u306b\\u4f9d\\u983c\\u53ef\\u80fd\", pt: 10 },\n      { text: \"\\u793e\\u5185\\u62c5\\u5f53\\u8005\\u306e\\u307f\", pt: 5 },\n      { text: \"\\u5bfe\\u5fdc\\u3067\\u304d\\u308b\\u4eba\\u304c\\u3044\\u306a\\u3044\", pt: 1 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"SSL\\u5bfe\\u5fdc\", grp: \"tech\", q: \"\\u30b5\\u30a4\\u30c8\\u306fSSL\\uff08https\\uff09\\u306b\\u5bfe\\u5fdc\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u5168\\u30da\\u30fc\\u30b8https\\u5bfe\\u5fdc\\u6e08\\u307f\", pt: 10 },\n      { text: \"\\u4e00\\u90e8\\u3060\\u3051\\u5bfe\\u5fdc\", pt: 4 },\n      { text: \"\\u672a\\u5bfe\\u5fdc\\uff08http\\u306e\\u307e\\u307e\\uff09\", pt: 0 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u30ed\\u30b0\\u30a4\\u30f3\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\", grp: \"tech\", q: \"WordPress\\u7ba1\\u7406\\u753b\\u9762\\u306e\\u30ed\\u30b0\\u30a4\\u30f3URL\\u3092\\u5909\\u66f4\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u5909\\u66f4\\u6e08\\u307f\\uff08\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u7b49\\u3067\\uff09\", pt: 10 },\n      { text: \"\\u5909\\u66f4\\u3057\\u3066\\u3044\\u306a\\u3044\\uff08\/wp-admin\/\\u306e\\u307e\\u307e\\uff09\", pt: 3 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u30d1\\u30b9\\u30ef\\u30fc\\u30c9\\u5f37\\u5ea6\", grp: \"tech\", q: \"\\u7ba1\\u7406\\u8005\\u30a2\\u30ab\\u30a6\\u30f3\\u30c8\\u306e\\u30d1\\u30b9\\u30ef\\u30fc\\u30c9\\u306f\\u5341\\u5206\\u306b\\u5f37\\u529b\\u3067\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u82f1\\u6570\\u5b57+\\u8a18\\u53f7\\u306712\\u6587\\u5b57\\u4ee5\\u4e0a\", pt: 10 },\n      { text: \"\\u82f1\\u6570\\u5b578\\u6587\\u5b57\\u4ee5\\u4e0a\", pt: 5 },\n      { text: \"\\u77ed\\u3044\\u30fb\\u7c21\\u5358\\u306a\\u3082\\u306e\", pt: 1 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\", grp: \"tech\", q: \"\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u7cfb\\u30d7\\u30e9\\u30b0\\u30a4\\u30f3\\u306f\\u5c0e\\u5165\\u3057\\u3066\\u3044\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u5c0e\\u5165\\u3057\\u3066\\u8a2d\\u5b9a\\u3082\\u5b8c\\u4e86\\u3057\\u3066\\u3044\\u308b\", pt: 10 },\n      { text: \"\\u5c0e\\u5165\\u3057\\u3066\\u3044\\u308b\\u304c\\u8a2d\\u5b9a\\u306f\\u521d\\u671f\\u306e\\u307e\\u307e\", pt: 5 },\n      { text: \"\\u5c0e\\u5165\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 1 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]},\n  { cat: \"\\u6539\\u3056\\u3093\\u691c\\u77e5\", grp: \"tech\", q: \"\\u30b5\\u30a4\\u30c8\\u306e\\u6539\\u3056\\u3093\\u3092\\u691c\\u77e5\\u3059\\u308b\\u4ed5\\u7d44\\u307f\\u306f\\u3042\\u308a\\u307e\\u3059\\u304b\\uff1f\",\n    opts: [\n      { text: \"\\u6539\\u3056\\u3093\\u691c\\u77e5\\u30c4\\u30fc\\u30eb\\u3092\\u5c0e\\u5165\\u6e08\\u307f\", pt: 10 },\n      { text: \"\\u691c\\u8a0e\\u4e2d\\u30fb\\u5c0e\\u5165\\u4e88\\u5b9a\", pt: 3 },\n      { text: \"\\u5c0e\\u5165\\u3057\\u3066\\u3044\\u306a\\u3044\", pt: 1 },\n      { text: \"\\u308f\\u304b\\u3089\\u306a\\u3044\", pt: 0 }\n    ]}\n];\n\nvar currentQ = 0;\nvar answers = [];\nvar siteUrl = \"\";\nvar scanPromise = null;\nvar scanResult = null;\n\nfunction isValidUrl(str) {\n  try {\n    var u = new URL(str);\n    return (u.protocol === \"http:\" || u.protocol === \"https:\") && u.hostname.indexOf(\".\") !== -1;\n  } catch(e) {\n    return false;\n  }\n}\n\nwindow.naStartQuiz = function() {\n  var urlInput = document.getElementById(\"diagUrl\");\n  var url = urlInput.value.trim();\n  var errEl = document.getElementById(\"urlError\");\n  var btn = document.querySelector(\".na-url-form button\");\n\n  if (!url) { urlInput.style.borderColor = \"#e74c3c\"; errEl.textContent = \"\\u6709\\u52b9\\u306aURL\\u3092\\u5165\\u529b\\u3057\\u3066\\u304f\\u3060\\u3055\\u3044\\uff08\\u4f8b: https:\/\/example.com\\uff09\"; errEl.style.display = \"block\"; return; }\n  if (!\/^https?:\\\/\\\/\/i.test(url)) url = \"https:\/\/\" + url;\n\n  errEl.style.display = \"none\";\n  siteUrl = url;\n  btn.disabled = true;\n  btn.textContent = \"\\u8a3a\\u65ad\\u4e2d...\";\n\n  \/\/ First call API to validate URL (server checks private IP, invalid domain, etc.)\n  scanResult = null;\n  scanPromise = fetch(\"https:\/\/next-action.co.jp\/wp-admin\/admin-ajax.php\", {\n    method: \"POST\",\n    headers: { \"Content-Type\": \"application\/x-www-form-urlencoded\" },\n    body: \"action=wp_security_diagnosis&url=\" + encodeURIComponent(siteUrl)\n  })\n  .then(function(r) { return r.json(); })\n  .then(function(data) {\n    if (data.success) {\n      scanResult = data.data;\n      \/\/ API accepted URL - proceed to quiz\n      startQuizFlow();\n    } else {\n      \/\/ API rejected URL - show error message from server\n      btn.disabled = false;\n      btn.textContent = \"\\u8a3a\\u65ad\\u958b\\u59cb\";\n      urlInput.style.borderColor = \"#e74c3c\";\n      errEl.textContent = (data.data && data.data.message) ? data.data.message : \"\\u8a3a\\u65ad\\u306b\\u5931\\u6557\\u3057\\u307e\\u3057\\u305f\\u3002URL\\u3092\\u78ba\\u8a8d\\u3057\\u3066\\u304f\\u3060\\u3055\\u3044\\u3002\";\n      errEl.style.display = \"block\";\n    }\n  })\n  .catch(function() {\n    \/\/ Network error - still proceed to quiz (scan will be null)\n    startQuizFlow();\n  });\n};\n\nfunction startQuizFlow() {\n  var btn = document.querySelector(\".na-url-form button\");\n  btn.disabled = false;\n  btn.textContent = \"\\u8a3a\\u65ad\\u958b\\u59cb\";\n  document.getElementById(\"urlSection\").style.display = \"none\";\n  document.getElementById(\"quizSection\").style.display = \"block\";\n  document.getElementById(\"step1dot\").className = \"na-step-dot done\";\n  document.getElementById(\"step1lbl\").className = \"na-step-label\";\n  document.getElementById(\"step2dot\").className = \"na-step-dot active\";\n  document.getElementById(\"step2lbl\").className = \"na-step-label active\";\n  currentQ = 0; answers = [];\n  renderQuestion();\n}\n\nfunction renderQuestion() {\n  var q = questions[currentQ];\n  var html = '<div class=\"na-quiz-category\">' + esc(q.cat) + '<\/div>';\n  html += '<div class=\"na-quiz-question\">Q' + (currentQ+1) + '. ' + esc(q.q) + '<\/div>';\n  html += '<div class=\"na-quiz-options\">';\n  for (var i = 0; i < q.opts.length; i++) {\n    html += '<div class=\"na-quiz-option\" onclick=\"naSelectOpt(' + i + ',' + q.opts[i].pt + ')\">';\n    html += '<div class=\"opt-icon\"><\/div>';\n    html += '<span>' + esc(q.opts[i].text) + '<\/span>';\n    html += '<\/div>';\n  }\n  html += '<\/div>';\n  document.getElementById(\"quizCard\").innerHTML = html;\n  document.getElementById(\"progressFill\").style.width = ((currentQ) \/ questions.length * 100) + \"%\";\n  var remaining = questions.length - currentQ - 1;\n  document.getElementById(\"progressText\").innerHTML = '<span class=\"na-quiz-counter\"><span>' + (currentQ+1) + '<\/span> \/ ' + questions.length + '<\/span><span class=\"na-quiz-remaining\">' + (remaining > 0 ? '\\u6b8b\\u308a ' + remaining + ' \\u554f' : '\\u6700\\u5f8c\\u306e\\u8cea\\u554f\\u3067\\u3059') + '<\/span>';\n}\n\nwindow.naSelectOpt = function(idx, pt) {\n  var opts = document.querySelectorAll(\".na-quiz-option\");\n  opts[idx].style.borderColor = \"#2d49a2\";\n  opts[idx].style.background = \"#eaf0fa\";\n  opts[idx].querySelector(\".opt-icon\").style.background = \"#2d49a2\";\n  opts[idx].querySelector(\".opt-icon\").style.borderColor = \"#2d49a2\";\n  opts[idx].querySelector(\".opt-icon\").innerHTML = '<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\"><polyline points=\"2,7 6,11 12,3\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg>';\n  answers.push({ cat: questions[currentQ].cat, grp: questions[currentQ].grp, pt: pt, max: 10 });\n  setTimeout(function() {\n    currentQ++;\n    if (currentQ < questions.length) {\n      renderQuestion();\n    } else {\n      onQuizDone();\n    }\n  }, 400);\n};\n\nfunction onQuizDone() {\n  document.getElementById(\"quizSection\").style.display = \"none\";\n  document.getElementById(\"progressFill\").style.width = \"100%\";\n  document.getElementById(\"step2dot\").className = \"na-step-dot done\";\n  document.getElementById(\"step2lbl\").className = \"na-step-label\";\n\n  if (scanResult !== null) {\n    showResult();\n  } else {\n    \/\/ Show loading while waiting for scan\n    document.getElementById(\"loadingSection\").style.display = \"block\";\n    scanPromise.then(function() {\n      document.getElementById(\"loadingSection\").style.display = \"none\";\n      showResult();\n    });\n  }\n}\n\nfunction showResult() {\n  document.getElementById(\"resultSection\").style.display = \"block\";\n  document.getElementById(\"step3dot\").className = \"na-step-dot active\";\n  document.getElementById(\"step3lbl\").className = \"na-step-label active\";\n\n  \/\/ Quiz score: sum of answers (max 100) -> scale to 50\n  var quizRaw = 0;\n  for (var i = 0; i < answers.length; i++) quizRaw += answers[i].pt;\n  var quizScore = Math.round(quizRaw \/ 2); \/\/ 0-100 -> 0-50\n\n  \/\/ Scan score: API score (0-100) -> scale to 50\n  var scanScore = 0;\n  var hasScan = scanResult !== null;\n  if (hasScan) {\n    scanScore = Math.round(scanResult.score \/ 2); \/\/ 0-100 -> 0-50\n  } else {\n    \/\/ If scan failed, use quiz score only (scale to 100)\n    quizScore = quizRaw;\n  }\n\n  var total = quizScore + scanScore;\n  document.getElementById(\"resultUrl\").textContent = siteUrl;\n\n  \/\/ Show breakdown\n  var bdHtml = '';\n  if (hasScan) {\n    bdHtml += '<div class=\"na-score-breakdown-item\"><span class=\"sb-label\">\\u5916\\u90e8\\u30b9\\u30ad\\u30e3\\u30f3<\/span><span class=\"sb-val\" style=\"color:#c0392b\">' + scanScore + '<span style=\"font-size:0.7rem;color:#999\"> \/ 50<\/span><\/span><\/div>';\n    bdHtml += '<div class=\"na-score-breakdown-item\"><span class=\"sb-label\">\\u30bb\\u30eb\\u30d5\\u30c1\\u30a7\\u30c3\\u30af<\/span><span class=\"sb-val\" style=\"color:#2d49a2\">' + quizScore + '<span style=\"font-size:0.7rem;color:#999\"> \/ 50<\/span><\/span><\/div>';\n  }\n  document.getElementById(\"scoreBreakdown\").innerHTML = bdHtml;\n\n  \/\/ Score animation\n  var scoreEl = document.getElementById(\"scorePts\");\n  var fgEl = document.getElementById(\"scoreFg\");\n  var circumf = 534;\n  var gradeEl = document.getElementById(\"scoreGrade\");\n  var color, grade, msgBg, msgText;\n  if (total >= 80) { color = \"#2ecc71\"; grade = \"A\"; msgBg = \"#e8f8e8\"; msgText = \"\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u610f\\u8b58\\u304c\\u9ad8\\u304f\\u3001\\u57fa\\u672c\\u7684\\u306a\\u5bfe\\u7b56\\u304c\\u3067\\u304d\\u3066\\u3044\\u307e\\u3059\\u3002\\u3055\\u3089\\u306b\\u5f37\\u5316\\u3059\\u308b\\u306b\\u306f\\u3001\\u5b9a\\u671f\\u7684\\u306a\\u5c02\\u9580\\u5bb6\\u306b\\u3088\\u308b\\u8a3a\\u65ad\\u3092\\u304a\\u3059\\u3059\\u3081\\u3057\\u307e\\u3059\\u3002\"; }\n  else if (total >= 60) { color = \"#f39c12\"; grade = \"B\"; msgBg = \"#fef8e8\"; msgText = \"\\u4e00\\u5b9a\\u306e\\u5bfe\\u7b56\\u306f\\u3067\\u304d\\u3066\\u3044\\u307e\\u3059\\u304c\\u3001\\u3044\\u304f\\u3064\\u304b\\u306e\\u6539\\u5584\\u30dd\\u30a4\\u30f3\\u30c8\\u304c\\u3042\\u308a\\u307e\\u3059\\u3002\\u653e\\u7f6e\\u3059\\u308b\\u3068\\u30ea\\u30b9\\u30af\\u304c\\u9ad8\\u307e\\u308b\\u53ef\\u80fd\\u6027\\u304c\\u3042\\u308a\\u307e\\u3059\\u3002\"; }\n  else if (total >= 40) { color = \"#e67e22\"; grade = \"C\"; msgBg = \"#fef0e0\"; msgText = \"\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u5bfe\\u7b56\\u304c\\u4e0d\\u5341\\u5206\\u306a\\u9805\\u76ee\\u304c\\u591a\\u304f\\u898b\\u3089\\u308c\\u307e\\u3059\\u3002\\u65e9\\u3081\\u306e\\u6539\\u5584\\u3092\\u304a\\u3059\\u3059\\u3081\\u3057\\u307e\\u3059\\u3002\"; }\n  else { color = \"#e74c3c\"; grade = \"D\"; msgBg = \"#fde8e8\"; msgText = \"\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u30ea\\u30b9\\u30af\\u304c\\u9ad8\\u3044\\u72b6\\u614b\\u3067\\u3059\\u3002\\u5c02\\u9580\\u5bb6\\u3078\\u306e\\u76f8\\u8ac7\\u3092\\u5f37\\u304f\\u304a\\u3059\\u3059\\u3081\\u3057\\u307e\\u3059\\u3002\"; }\n\n  fgEl.style.stroke = color;\n  gradeEl.style.color = color;\n  gradeEl.textContent = \"\\u30b0\\u30ec\\u30fc\\u30c9 \" + grade;\n  var msgEl = document.getElementById(\"scoreMsg\");\n  msgEl.style.background = msgBg;\n  msgEl.textContent = msgText;\n\n  \/\/ Animate score\n  var cur = 0;\n  var timer = setInterval(function() {\n    cur++;\n    if (cur > total) { clearInterval(timer); return; }\n    scoreEl.textContent = cur;\n    fgEl.style.strokeDashoffset = circumf - (circumf * cur \/ 100);\n  }, 25);\n\n  \/\/ Build scan group (external scan results)\n  if (hasScan) {\n    document.getElementById(\"scanGroup\").innerHTML = buildScanGroup(scanResult);\n  }\n\n  \/\/ Build questionnaire groups\n  document.getElementById(\"opsGroup\").innerHTML = buildQuizGroup(\"ops\", \"\\u904b\\u55b6\\u8a3a\\u65ad\\uff08\\u30bb\\u30eb\\u30d5\\u30c1\\u30a7\\u30c3\\u30af\\uff09\", \"ops\");\n  document.getElementById(\"techGroup\").innerHTML = buildQuizGroup(\"tech\", \"\\u30b5\\u30a4\\u30c8\\u6280\\u8853\\u8a3a\\u65ad\\uff08\\u30bb\\u30eb\\u30d5\\u30c1\\u30a7\\u30c3\\u30af\\uff09\", \"tech\");\n\n  document.getElementById(\"resultSection\").scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n}\n\nfunction buildScanGroup(sr) {\n  var html = '<div class=\"na-result-group\">';\n  html += '<div class=\"na-result-group-title scan\">\\u5916\\u90e8\\u30b9\\u30ad\\u30e3\\u30f3\\u7d50\\u679c\\uff08\\u81ea\\u52d5\\u8a3a\\u65ad\\uff09 - ' + sr.score + '\\u70b9 \/ 100<\/div>';\n  html += '<div class=\"na-result-group-body\">';\n\n  \/\/ SSL\n  if (sr.results.ssl) {\n    var ssl = sr.results.ssl;\n    if (ssl.valid) {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">SSL\\u8a3c\\u660e\\u66f8<span class=\"na-ok-label\">OK<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#2ecc71\">\\u6709\\u52b9 (\\u6b8b' + ssl.days_left + '\\u65e5)<\/span>';\n      html += '<\/div>';\n    } else {\n      html += '<div class=\"na-detail-item ng\">';\n      html += '<span class=\"dt-cat\">SSL\\u8a3c\\u660e\\u66f8<span class=\"na-ng-label\">\\u8981\\u5bfe\\u5fdc<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#e74c3c\">\\u7121\\u52b9\\u307e\\u305f\\u306f\\u672a\\u8a2d\\u5b9a<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ Security Headers\n  if (sr.results.security_headers) {\n    var hdrs = sr.results.security_headers;\n    var hdrKeys = Object.keys(hdrs);\n    var presentCount = 0;\n    for (var h = 0; h < hdrKeys.length; h++) {\n      if (hdrs[hdrKeys[h]].present) presentCount++;\n    }\n    var hdrStatus = presentCount >= 5 ? \"ok\" : (presentCount >= 3 ? \"warn\" : \"ng\");\n    var hdrLabel = hdrStatus === \"ok\" ? '<span class=\"na-ok-label\">OK<\/span>' : (hdrStatus === \"warn\" ? '<span class=\"na-warn-label\">\\u4e00\\u90e8\\u6b20\\u843d<\/span>' : '<span class=\"na-ng-label\">\\u8981\\u6539\\u5584<\/span>');\n    html += '<div class=\"na-detail-item ' + hdrStatus + '\">';\n    html += '<span class=\"dt-cat\">\\u30bb\\u30ad\\u30e5\\u30ea\\u30c6\\u30a3\\u30d8\\u30c3\\u30c0\\u30fc' + hdrLabel + '<\/span>';\n    html += '<span class=\"dt-score\" style=\"color:' + (hdrStatus === \"ok\" ? \"#2ecc71\" : hdrStatus === \"warn\" ? \"#f39c12\" : \"#e74c3c\") + '\">' + presentCount + ' \/ ' + hdrKeys.length + '<\/span>';\n    html += '<\/div>';\n    \/\/ List missing headers\n    var missingHdrs = [];\n    for (var m = 0; m < hdrKeys.length; m++) {\n      if (!hdrs[hdrKeys[m]].present) missingHdrs.push(hdrKeys[m]);\n    }\n    if (missingHdrs.length > 0 && missingHdrs.length < hdrKeys.length) {\n      html += '<div class=\"na-detail-item\" style=\"border-left:none;padding:6px 16px;\"><span class=\"na-scan-detail\">\\u6b20\\u843d: ' + esc(missingHdrs.join(\", \")) + '<\/span><\/div>';\n    }\n  }\n\n  \/\/ WordPress detection\n  if (sr.results.wordpress) {\n    var wp = sr.results.wordpress;\n    if (wp.is_wp) {\n      if (wp.version) {\n        html += '<div class=\"na-detail-item warn\">';\n        html += '<span class=\"dt-cat\">WordPress\\u30d0\\u30fc\\u30b8\\u30e7\\u30f3\\u9732\\u51fa<span class=\"na-warn-label\">\\u6ce8\\u610f<\/span><\/span>';\n        html += '<span class=\"dt-score\" style=\"color:#f39c12\">v' + esc(wp.version) + '<\/span>';\n        html += '<\/div>';\n      } else {\n        html += '<div class=\"na-detail-item ok\">';\n        html += '<span class=\"dt-cat\">WordPress\\u691c\\u51fa<span class=\"na-ok-label\">\\u30d0\\u30fc\\u30b8\\u30e7\\u30f3\\u975e\\u516c\\u958b<\/span><\/span>';\n        html += '<span class=\"dt-score\" style=\"color:#2ecc71\">OK<\/span>';\n        html += '<\/div>';\n      }\n    } else {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">WordPress\\u691c\\u51fa<span class=\"na-ok-label\">-<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#999\">\\u975eWP\\u307e\\u305f\\u306f\\u96a0\\u853d\\u6e08<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ User enumeration\n  if (sr.results.user_enum) {\n    var ue = sr.results.user_enum;\n    if (ue.rest_api_exposed || ue.author_enum) {\n      html += '<div class=\"na-detail-item ng\">';\n      html += '<span class=\"dt-cat\">\\u30e6\\u30fc\\u30b6\\u30fc\\u60c5\\u5831\\u6f0f\\u6d29<span class=\"na-ng-label\">\\u8981\\u5bfe\\u5fdc<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#e74c3c\">\\u691c\\u51fa<\/span>';\n      html += '<\/div>';\n    } else {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">\\u30e6\\u30fc\\u30b6\\u30fc\\u60c5\\u5831\\u4fdd\\u8b77<span class=\"na-ok-label\">OK<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#2ecc71\">\\u5bfe\\u7b56\\u6e08<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ XML-RPC\n  if (sr.results.xmlrpc) {\n    if (sr.results.xmlrpc.enabled) {\n      html += '<div class=\"na-detail-item warn\">';\n      html += '<span class=\"dt-cat\">XML-RPC<span class=\"na-warn-label\">\\u6709\\u52b9<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#f39c12\">\\u7121\\u52b9\\u5316\\u63a8\\u5968<\/span>';\n      html += '<\/div>';\n    } else {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">XML-RPC<span class=\"na-ok-label\">\\u7121\\u52b9<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#2ecc71\">OK<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ Exposed files\n  if (sr.results.exposed_files) {\n    var ef = sr.results.exposed_files;\n    var efKeys = Object.keys(ef);\n    var exposedFiles = [];\n    for (var e = 0; e < efKeys.length; e++) {\n      if (ef[efKeys[e]].exposed) exposedFiles.push(efKeys[e]);\n    }\n    if (exposedFiles.length > 0) {\n      html += '<div class=\"na-detail-item ng\">';\n      html += '<span class=\"dt-cat\">\\u516c\\u958b\\u30d5\\u30a1\\u30a4\\u30eb<span class=\"na-ng-label\">\\u8981\\u5bfe\\u5fdc<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#e74c3c\">' + exposedFiles.length + '\\u4ef6\\u691c\\u51fa<\/span>';\n      html += '<\/div>';\n    } else {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">\\u516c\\u958b\\u30d5\\u30a1\\u30a4\\u30eb<span class=\"na-ok-label\">OK<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#2ecc71\">\\u306a\\u3057<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ Directory listing\n  if (sr.results.directory_listing) {\n    var dl = sr.results.directory_listing;\n    var dlKeys = Object.keys(dl);\n    var listingEnabled = [];\n    for (var d = 0; d < dlKeys.length; d++) {\n      if (dl[dlKeys[d]].listing_enabled) listingEnabled.push(dlKeys[d]);\n    }\n    if (listingEnabled.length > 0) {\n      html += '<div class=\"na-detail-item ng\">';\n      html += '<span class=\"dt-cat\">\\u30c7\\u30a3\\u30ec\\u30af\\u30c8\\u30ea\\u30ea\\u30b9\\u30c6\\u30a3\\u30f3\\u30b0<span class=\"na-ng-label\">\\u8981\\u5bfe\\u5fdc<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#e74c3c\">' + listingEnabled.length + '\\u4ef6\\u691c\\u51fa<\/span>';\n      html += '<\/div>';\n    } else {\n      html += '<div class=\"na-detail-item ok\">';\n      html += '<span class=\"dt-cat\">\\u30c7\\u30a3\\u30ec\\u30af\\u30c8\\u30ea\\u30ea\\u30b9\\u30c6\\u30a3\\u30f3\\u30b0<span class=\"na-ok-label\">OK<\/span><\/span>';\n      html += '<span class=\"dt-score\" style=\"color:#2ecc71\">\\u7121\\u52b9<\/span>';\n      html += '<\/div>';\n    }\n  }\n\n  \/\/ Deductions summary\n  if (sr.deductions && sr.deductions.length > 0) {\n    html += '<div class=\"na-detail-item\" style=\"border-left:4px solid #f39c12;background:#fff8e1;\">';\n    html += '<span class=\"dt-cat\" style=\"min-width:auto\">\\u6e1b\\u70b9\\u5185\\u5bb9<\/span>';\n    html += '<span class=\"na-scan-detail\">';\n    for (var dd = 0; dd < sr.deductions.length; dd++) {\n      html += esc(sr.deductions[dd].text) + ' (' + sr.deductions[dd].pts + '\\u70b9)';\n      if (dd < sr.deductions.length - 1) html += '  \/  ';\n    }\n    html += '<\/span><\/div>';\n  }\n\n  html += '<\/div><\/div>';\n  return html;\n}\n\nfunction buildQuizGroup(grpKey, title, cssClass) {\n  var items = [];\n  for (var j = 0; j < answers.length; j++) {\n    if (answers[j].grp !== grpKey) continue;\n    items.push(answers[j]);\n  }\n  var html = '<div class=\"na-result-group\">';\n  html += '<div class=\"na-result-group-title ' + cssClass + '\">' + esc(title) + '<\/div>';\n  html += '<div class=\"na-result-group-body\">';\n  var hasNG = false;\n  for (var k = 0; k < items.length; k++) {\n    var a = items[k];\n    var isNG = a.pt < 8;\n    if (isNG) hasNG = true;\n    var pct = (a.pt \/ a.max * 100);\n    var c2 = isNG ? (pct >= 50 ? \"#f39c12\" : \"#e74c3c\") : \"#2ecc71\";\n    var cls = isNG ? \"ng\" : \"ok\";\n    html += '<div class=\"na-detail-item ' + cls + '\">';\n    html += '<span class=\"dt-cat\">' + esc(a.cat);\n    html += isNG ? '<span class=\"na-ng-label\">\\u8981\\u6539\\u5584<\/span>' : '<span class=\"na-ok-label\">OK<\/span>';\n    html += '<\/span>';\n    html += '<div class=\"dt-bar\"><div class=\"dt-fill\" style=\"width:' + pct + '%;background:' + c2 + '\"><\/div><\/div>';\n    html += '<span class=\"dt-score\" style=\"color:' + c2 + '\">' + a.pt + ' \/ ' + a.max + '<\/span>';\n    html += '<\/div>';\n  }\n  if (!hasNG) {\n    html += '<div class=\"na-all-ok\">\\u3059\\u3079\\u3066OK<\/div>';\n  }\n  html += '<\/div><\/div>';\n  return html;\n}\n\nfunction esc(s) {\n  var d = document.createElement(\"div\");\n  d.textContent = s;\n  return d.innerHTML;\n}\n})();\n<\/script>\n\n\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"WordPress\u306e\u7121\u6599\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a3a\u65ad\u3067\u4f55\u304c\u308f\u304b\u308a\u307e\u3059\u304b\uff1f\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SSL\u8a2d\u5b9a\u3001WordPress\u30fbPHP\u30fb\u30d7\u30e9\u30b0\u30a4\u30f3\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3001\u30ed\u30b0\u30a4\u30f3\u30da\u30fc\u30b8\u306e\u4fdd\u8b77\u72b6\u6cc1\u3001\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u4f53\u5236\u306a\u3069\u30017\u3064\u306e\u89b3\u70b9\u304b\u3089\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d9\u30eb\u3092\u8a3a\u65ad\u3057\u307e\u3059\u3002\u7d50\u679c\u306f\u305d\u306e\u5834\u3067\u8868\u793a\u3055\u308c\u3001\u6539\u5584\u304c\u5fc5\u8981\u306a\u9805\u76ee\u304c\u5177\u4f53\u7684\u306b\u308f\u304b\u308a\u307e\u3059\u3002\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a3a\u65ad\u306b\u8cbb\u7528\u306f\u304b\u304b\u308a\u307e\u3059\u304b\uff1f\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"\u3044\u3044\u3048\u3001\u5b8c\u5168\u7121\u6599\u3067\u3054\u5229\u7528\u3044\u305f\u3060\u3051\u307e\u3059\u3002\u4f1a\u54e1\u767b\u9332\u3084\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u5165\u529b\u3082\u4e0d\u8981\u3067\u3059\u3002URL\u3092\u5165\u529b\u3057\u3066\u8cea\u554f\u306b\u7b54\u3048\u308b\u3060\u3051\u3067\u7d043\u5206\u3067\u5b8c\u4e86\u3057\u307e\u3059\u3002\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"\u8a3a\u65ad\u7d50\u679c\u304c\u60aa\u304b\u3063\u305f\u5834\u5408\u306f\u3069\u3046\u3059\u308c\u3070\u3044\u3044\u3067\u3059\u304b\uff1f\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"\u8a3a\u65ad\u7d50\u679c\u3092\u3082\u3068\u306b\u3001\u5177\u4f53\u7684\u306a\u6539\u5584\u30b9\u30c6\u30c3\u30d7\u3092\u3054\u6848\u5185\u3044\u305f\u3057\u307e\u3059\u3002\u81ea\u793e\u3067\u5bfe\u5fdc\u304c\u96e3\u3057\u3044\u5834\u5408\u306f\u3001\u5f53\u793e\u306eWordPress\u4fdd\u5b88\u30b5\u30fc\u30d3\u30b9\uff08\u6708\u984d11,000\u5186\u301c\uff09\u3084\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30b9\u30dd\u30c3\u30c8\u70b9\u691c\uff081\u56de\u5b8c\u7d50\uff09\u3082\u3054\u5229\u7528\u3044\u305f\u3060\u3051\u307e\u3059\u3002\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>WordPress \u7121\u6599\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u8a3a\u65ad URL\u3092\u5165\u529b\uff0b10\u306e\u8cea\u554f\u306b\u7b54\u3048\u308b\u3060\u3051\u3067\u3001\u3042\u306a\u305f\u306e\u30b5\u30a4\u30c8\u306e\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u30ec\u30d9\u30eb\u304c\u308f\u304b\u308a\u307e\u3059 \u6240\u8981\u6642\u9593 \u7d043\u5206 \uff0f \u767b\u9332\u4e0d\u8981 \uff0f \u5b8c\u5168\u7121\u6599 1 URL\u5165\u529b &#9654; 2 \u8cea\u554f &#038; [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"swell_btn_cv_data":"","footnotes":""},"class_list":["post-2295","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/pages\/2295","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/comments?post=2295"}],"version-history":[{"count":27,"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/pages\/2295\/revisions"}],"predecessor-version":[{"id":2448,"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/pages\/2295\/revisions\/2448"}],"wp:attachment":[{"href":"https:\/\/next-action.co.jp\/hoshulp\/wp-json\/wp\/v2\/media?parent=2295"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}