{"id":77409,"date":"2026-06-03T23:49:22","date_gmt":"2026-06-03T22:49:22","guid":{"rendered":"https:\/\/aceworldpgs.com\/tools\/?p=77409"},"modified":"2026-06-04T00:41:29","modified_gmt":"2026-06-03T23:41:29","slug":"isbn-letter-generator","status":"publish","type":"post","link":"https:\/\/aceworldpgs.com\/tools\/isbn-letter-generator\/","title":{"rendered":"ISBN Letter Generator"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\n<style>\n\/* \u2500\u2500 ISBN Generator: scoped to .ace-isbn-wrap \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.ace-isbn-wrap *,\n.ace-isbn-wrap *::before,\n.ace-isbn-wrap *::after { box-sizing: border-box; }\n\n.ace-isbn-wrap {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n    max-width: 900px;\n    margin: 0 auto;\n    color: #1e293b;\n}\n\n\/* \u2500\u2500 Cards \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-card {\n    background: #fff;\n    border: 1px solid #e2e8f0;\n    border-radius: 14px;\n    padding: 26px 28px;\n    margin-bottom: 20px;\n    box-shadow: 0 1px 4px rgba(0,0,0,0.05);\n}\n.isbn-card-title {\n    font-size: 14px;\n    font-weight: 700;\n    color: #0f172a;\n    margin: 0 0 18px;\n    padding-bottom: 12px;\n    border-bottom: 1px solid #f1f5f9;\n    display: flex;\n    align-items: center;\n    gap: 7px;\n}\n\n\/* \u2500\u2500 Entity selector (radio cards) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-entity-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 14px;\n    margin-bottom: 4px;\n}\n@media (max-width: 500px) { .isbn-entity-grid { grid-template-columns: 1fr; } }\n\n.isbn-radio-card {\n    border: 2px solid #e2e8f0;\n    border-radius: 11px;\n    padding: 18px 16px;\n    text-align: center;\n    cursor: pointer;\n    transition: all 0.18s;\n    background: #fff;\n    position: relative;\n    user-select: none;\n}\n.isbn-radio-card:hover { border-color: #7B2FF7; background: #fdfaff; }\n.isbn-radio-card.active { border-color: #7B2FF7; background: #f5f0ff; }\n.isbn-radio-card.active::after {\n    content: '\u2713';\n    position: absolute;\n    top: 8px; right: 10px;\n    font-size: 11px;\n    font-weight: 800;\n    color: #7B2FF7;\n}\n.isbn-radio-card input[type=\"radio\"] { display: none; }\n.isbn-radio-card .rc-icon { font-size: 26px; display: block; margin-bottom: 8px; }\n.isbn-radio-card .rc-label { font-size: 14px; font-weight: 700; color: #0f172a; }\n.isbn-radio-card .rc-sub { font-size: 11px; color: #64748b; margin-top: 1px; }\n\n\/* \u2500\u2500 Form fields \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-field-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }\n.isbn-field-grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 14px; }\n@media (max-width: 640px) {\n    .isbn-field-grid-2,\n    .isbn-field-grid-3 { grid-template-columns: 1fr; }\n}\n\n.isbn-field { display: flex; flex-direction: column; gap: 5px; }\n.isbn-field label {\n    font-size: 11px;\n    font-weight: 700;\n    text-transform: uppercase;\n    letter-spacing: 0.05em;\n    color: #64748b;\n}\n.isbn-field input,\n.isbn-field select,\n.isbn-field textarea {\n    padding: 10px 12px;\n    border: 1.5px solid #e2e8f0;\n    border-radius: 8px;\n    font-size: 14px;\n    font-family: inherit;\n    color: #1e293b;\n    background: #fff;\n    transition: border-color 0.15s;\n    width: 100%;\n}\n.isbn-field input:focus,\n.isbn-field select:focus,\n.isbn-field textarea:focus {\n    outline: none;\n    border-color: #7B2FF7;\n    box-shadow: 0 0 0 3px rgba(123,47,247,0.10);\n}\n.isbn-field small { font-size: 11px; color: #94a3b8; margin-top: 2px; }\n\n\/* \u2500\u2500 Book entry rows \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-book-row {\n    background: #f8fafc;\n    border: 1px solid #e2e8f0;\n    border-radius: 9px;\n    padding: 14px 16px;\n    margin-bottom: 10px;\n    display: grid;\n    grid-template-columns: auto 1fr 160px;\n    gap: 12px;\n    align-items: center;\n    animation: isbnFadeIn 0.2s ease;\n}\n@keyframes isbnFadeIn { from { opacity:0; transform:translateY(-5px); } to { opacity:1; transform:translateY(0); } }\n@media (max-width: 560px) { .isbn-book-row { grid-template-columns: 1fr; } }\n\n.isbn-book-row .row-num {\n    width: 26px; height: 26px;\n    background: #7B2FF7;\n    color: #fff;\n    border-radius: 50%;\n    display: flex; align-items: center; justify-content: center;\n    font-size: 11px; font-weight: 800;\n    flex-shrink: 0;\n}\n.isbn-book-row input,\n.isbn-book-row select {\n    padding: 9px 11px;\n    border: 1.5px solid #e2e8f0;\n    border-radius: 7px;\n    font-size: 13px;\n    font-family: inherit;\n    background: #fff;\n    width: 100%;\n}\n.isbn-book-row input:focus,\n.isbn-book-row select:focus { outline: none; border-color: #7B2FF7; }\n\n\/* \u2500\u2500 Corporate history & legal deposit \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-history-block,\n.isbn-deposit-block {\n    margin-top: 16px;\n    padding: 16px 18px;\n    background: #fffbeb;\n    border: 1px solid #fde68a;\n    border-radius: 9px;\n}\n.isbn-history-block.hidden,\n.isbn-deposit-block.hidden { display: none; }\n\n.isbn-deposit-check {\n    display: flex;\n    align-items: center;\n    gap: 9px;\n    font-size: 13px;\n    font-weight: 600;\n    color: #334155;\n    cursor: pointer;\n}\n.isbn-deposit-check input[type=\"checkbox\"] {\n    width: 16px; height: 16px;\n    accent-color: #7B2FF7;\n    cursor: pointer;\n    flex-shrink: 0;\n}\n.isbn-notice { font-size: 12px; color: #92400e; margin-top: 8px; font-weight: 500; }\n.isbn-notice.error { color: #991b1b; background: #fef2f2; border: 1px solid #fca5a5; padding: 10px 12px; border-radius: 6px; margin-top: 10px; }\n.isbn-notice.info  { color: #1e40af; background: #eff6ff; border: 1px solid #bfdbfe; padding: 10px 12px; border-radius: 6px; margin-top: 10px; }\n.isbn-notice.warn  { color: #92400e; background: #fffbeb; border: 1px solid #fde68a; padding: 10px 12px; border-radius: 6px; margin-top: 10px; }\n\n\/* \u2500\u2500 Add book button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-add-btn {\n    width: 100%;\n    padding: 10px;\n    background: #f1f5f9;\n    border: 1.5px dashed #94a3b8;\n    border-radius: 8px;\n    font-size: 13px;\n    font-weight: 700;\n    color: #475569;\n    cursor: pointer;\n    margin-top: 4px;\n    transition: all 0.15s;\n    font-family: inherit;\n}\n.isbn-add-btn:hover { background: #e2e8f0; border-color: #7B2FF7; color: #7B2FF7; }\n.isbn-add-btn.hidden { display: none; }\n\n\/* \u2500\u2500 Generate button \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-generate-btn {\n    width: 100%;\n    padding: 15px;\n    background: linear-gradient(135deg, #5b21b6 0%, #7B2FF7 100%);\n    color: #fff;\n    border: none;\n    border-radius: 10px;\n    font-size: 16px;\n    font-weight: 700;\n    cursor: pointer;\n    font-family: inherit;\n    transition: all 0.2s;\n    box-shadow: 0 4px 14px rgba(123,47,247,0.30);\n    margin-top: 8px;\n}\n.isbn-generate-btn:hover { filter: brightness(1.08); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(123,47,247,0.35); }\n.isbn-generate-btn:disabled { background: #94a3b8; box-shadow: none; cursor: not-allowed; transform: none; }\n\n\/* \u2500\u2500 Guidelines block \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-guidelines {\n    background: #f0fdf4;\n    border: 1px solid #bbf7d0;\n    border-radius: 12px;\n    padding: 20px 22px;\n    margin-bottom: 20px;\n}\n.isbn-guidelines h3 { color: #166534; margin: 0 0 10px; font-size: 15px; display: flex; align-items: center; gap: 7px; }\n.isbn-guidelines ol { margin: 0; padding-left: 20px; color: #1e293b; font-size: 13px; line-height: 1.7; }\n.isbn-guidelines li { margin-bottom: 6px; }\n\n\/* \u2500\u2500 Print preview wrapper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-preview-wrap {\n    background: #e2e8f0;\n    padding: 36px 20px;\n    border-radius: 12px;\n    margin-bottom: 20px;\n    overflow-x: auto;\n}\n\n\/* \u2500\u2500 The actual letter paper \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-letter-paper {\n    background: #fff;\n    width: 100%;\n    max-width: 680px;\n    min-height: 900px;\n    margin: 0 auto;\n    padding: 60px 56px 56px;\n    box-shadow: 0 4px 24px rgba(0,0,0,0.12);\n    position: relative;\n    color: #000;\n    font-family: \"Times New Roman\", Times, serif !important;\n    font-size: 15px;\n    line-height: 1.6;\n    text-align: justify;\n}\n.isbn-letter-paper * { font-family: \"Times New Roman\", Times, serif !important; }\n\n\/* Watermark \u2014 hidden on print *\/\n.isbn-letter-paper::before {\n    content: \"PREVIEW ONLY\";\n    position: absolute;\n    top: 50%; left: 50%;\n    transform: translate(-50%, -50%) rotate(-35deg);\n    font-size: 52px;\n    font-weight: 900;\n    color: rgba(220, 38, 38, 0.10);\n    white-space: nowrap;\n    pointer-events: none;\n    letter-spacing: 6px;\n    z-index: 10;\n}\n\n\/* Letter section layout *\/\n.letter-sender-header {\n    text-align: center;\n    border-bottom: 2.5px solid #000;\n    padding-bottom: 18px;\n    margin-bottom: 28px;\n}\n.letter-sender-name { font-size: 22px; font-weight: 700; text-transform: uppercase; margin: 0 0 6px; }\n.letter-sender-detail { font-size: 14px; margin: 3px 0; }\n\n.letter-date-line { text-align: right; margin-bottom: 24px; }\n.letter-recipient { margin-bottom: 22px; line-height: 1.5; }\n.letter-through { margin-bottom: 22px; padding-left: 20px; font-style: italic; line-height: 1.5; }\n.letter-salutation { margin-bottom: 18px; }\n.letter-subject {\n    text-align: center;\n    font-weight: 700;\n    text-decoration: underline;\n    text-transform: uppercase;\n    margin-bottom: 18px;\n    font-size: 15px;\n}\n.letter-body { margin-bottom: 18px; }\n.letter-book-list { margin: 14px 0; padding-left: 22px; }\n.letter-book-list li { margin-bottom: 8px; }\n.letter-closing { margin-top: 28px; line-height: 1.6; }\n\n\/* Signature font *\/\n.isbn-sig-font {\n    font-family: 'Dancing Script', cursive !important;\n    font-size: 30px;\n    color: #1e3a8a;\n    display: block;\n    margin: 8px 0 4px;\n    transform: rotate(-1deg);\n    line-height: 1;\n}\n.isbn-sig-space {\n    display: block;\n    height: 52px;\n    border-bottom: 1px solid #aaa;\n    width: 180px;\n    margin: 10px 0 4px;\n}\n\n\/* \u2500\u2500 Consent & print gate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-action-gate {\n    background: #f8fafc;\n    border: 1px solid #e2e8f0;\n    border-radius: 12px;\n    padding: 20px 22px;\n    text-align: center;\n}\n.isbn-consent-label {\n    display: inline-flex;\n    align-items: flex-start;\n    gap: 10px;\n    font-size: 13px;\n    font-weight: 600;\n    color: #334155;\n    cursor: pointer;\n    margin-bottom: 14px;\n    text-align: left;\n    max-width: 520px;\n    line-height: 1.5;\n}\n.isbn-consent-label input[type=\"checkbox\"] {\n    width: 17px; height: 17px;\n    accent-color: #7B2FF7;\n    cursor: pointer;\n    flex-shrink: 0;\n    margin-top: 2px;\n}\n.isbn-print-btn {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    background: #16a34a;\n    color: #fff;\n    border: none;\n    padding: 13px 28px;\n    border-radius: 9px;\n    font-size: 15px;\n    font-weight: 700;\n    cursor: pointer;\n    font-family: inherit;\n    transition: all 0.18s;\n    box-shadow: 0 3px 12px rgba(22,163,74,0.28);\n}\n.isbn-print-btn:hover { background: #15803d; box-shadow: 0 5px 18px rgba(22,163,74,0.35); }\n.isbn-print-btn:disabled {\n    background: #cbd5e1;\n    color: #94a3b8;\n    cursor: not-allowed;\n    box-shadow: none;\n}\n.isbn-save-status {\n    font-size: 11px;\n    color: #64748b;\n    margin-top: 8px;\n    min-height: 16px;\n}\n\n\/* \u2500\u2500 Bottom CTA badge \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n.isbn-bottom-badge {\n    text-align: center;\n    background: #eef2ff;\n    color: #1e293b;\n    padding: 10px 16px;\n    border-radius: 50px;\n    font-size: 13px;\n    font-weight: 600;\n    border: 1px solid #c7d2fe;\n    margin-top: 8px;\n}\n.isbn-bottom-badge a { color: #4f46e5; text-decoration: underline; }\n\n\/* \u2500\u2500 Print media \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media print {\n    header, footer, nav,\n    .site-header, .site-footer,\n    .kadence-breadcrumbs,\n    .wp-block-kadence-rowlayout,\n    .entry-header, .entry-footer,\n    .post-navigation, .comments-area,\n    .widget-area, .sidebar,\n    #wpadminbar,\n    .ace-tool-header,\n    #isbn-form-card,\n    .isbn-guidelines,\n    .isbn-action-gate,\n    .isbn-bottom-badge,\n    [class*=\"toolkit_share\"],\n    [class*=\"toolkit_other\"] {\n        display: none !important;\n    }\n\n    .ace-isbn-wrap,\n    #isbn-output-workspace,\n    .isbn-preview-wrap {\n        background: none !important;\n        border: none !important;\n        box-shadow: none !important;\n        padding: 0 !important;\n        margin: 0 !important;\n        max-width: none !important;\n    }\n\n    #isbn-printable-letter {\n        box-shadow: none !important;\n        border: none !important;\n        margin: 0 auto !important;\n        padding: 20mm 18mm !important;\n        max-width: 100% !important;\n        width: 100% !important;\n        page-break-after: avoid !important;\n        page-break-inside: avoid !important;\n    }\n\n    #isbn-printable-letter::before { display: none !important; }\n\n    html, body {\n        height: auto !important;\n        overflow: visible !important;\n    }\n\n    * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }\n\n    .entry-content > *:not(#isbn-output-workspace),\n    .content-wrap > *:not(#isbn-output-workspace) {\n        display: none !important;\n    }\n}\n\n\/* \u2500\u2500 Mobile \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n@media (max-width: 600px) {\n    .isbn-letter-paper { padding: 36px 24px; font-size: 14px; }\n    .isbn-card { padding: 18px 16px; }\n}\n<\/style>\n\n<div class=\"ace-isbn-wrap ace-tool\">\n\n    \n<div class=\"ace-header\">\n  <div class=\"ace-header-inner\">\n\n    <!-- Left: identity block -->\n    <div class=\"ace-header-identity\">\n\n            <span class=\"ace-header-badge badge-sap\">\n        ISBN      <\/span>\n      \n      <h2 class=\"ace-header-title\">ISBN Request Letter Generator<\/h2>\n\n            <p class=\"ace-header-subtitle\">Generate an NLN-compliant ISBN request letter for individual authors and corporate publishers in Nigeria.<\/p>\n      \n    <\/div><!-- \/.ace-header-identity -->\n\n    <!-- Right: CTA button -->\n    <a href=\"https:\/\/aceworldpgs.com\/acepublishingchecklist\" class=\"ace-header-cta\" target=\"_blank\" rel=\"noopener\">\n      Download Publishing Checklist            <span class=\"ace-cta-badge\">\u2b07<\/span>\n          <\/a>\n\n  <\/div><!-- \/.ace-header-inner -->\n<\/div><!-- \/.ace-header -->\n\n\n        \n    <!-- \u2500\u2500 FORM CARD \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <div class=\"isbn-card\" id=\"isbn-form-card\">\n\n        <!-- Entity selector -->\n        <div class=\"isbn-card-title\">\ud83d\udc64 Who is applying?<\/div>\n        <div class=\"isbn-entity-grid\">\n            <label class=\"isbn-radio-card active\" id=\"lbl-individual\" for=\"ent-individual\">\n                <input type=\"radio\" name=\"isbn_entity\" id=\"ent-individual\" value=\"INDIVIDUAL\" checked>\n                <span class=\"rc-icon\">\u270d\ufe0f<\/span>\n                <span class=\"rc-label\">Individual Author<\/span><br>\n                <span class=\"rc-sub\">Up to 2 ISBNs<\/span>\n            <\/label>\n            <label class=\"isbn-radio-card\" id=\"lbl-corporate\" for=\"ent-corporate\">\n                <input type=\"radio\" name=\"isbn_entity\" id=\"ent-corporate\" value=\"CORPORATE\">\n                <span class=\"rc-icon\">\ud83c\udfe2<\/span>\n                <span class=\"rc-label\">Corporate Publisher<\/span><br>\n                <span class=\"rc-sub\">Up to 5 ISBNs (with legal deposit)<\/span>\n            <\/label>\n        <\/div>\n\n        <!-- Identity fields (injected by JS) -->\n        <!-- AFTER -->\n<div id=\"isbn-identity-fields\" style=\"margin-top: 22px;\">\n    <!-- Individual fields \u2014 visible by default -->\n    <div id=\"isbn-fields-individual\">\n        <div class=\"isbn-card-title\">\ud83d\udccb Your Information<\/div>\n        <div class=\"isbn-field\" style=\"margin-bottom:14px;\">\n            <label>Full Legal Name <span style=\"color:red\">*<\/span> <small>(exactly as on your ID)<\/small><\/label>\n            <input type=\"text\" id=\"ind-name\" placeholder=\"e.g. Oguntade John Doe\">\n        <\/div>\n        <div class=\"isbn-field\" style=\"margin-bottom:14px;\">\n            <label>House Address <span style=\"color:red\">*<\/span><\/label>\n            <input type=\"text\" id=\"ind-address\" placeholder=\"Street address, landmark...\">\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>City <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"text\" id=\"ind-city\" placeholder=\"Ogbomoso\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>State of Residence <span style=\"color:red\">*<\/span><\/label>\n                <select id=\"ind-state\">\n                    <option value=\"\" disabled selected>\u2014 Select your state \u2014<\/option>\n                    <option value=\"abia\">Abia<\/option><option value=\"adamawa\">Adamawa<\/option><option value=\"akwa-ibom\">Akwa Ibom<\/option><option value=\"anambra\">Anambra<\/option><option value=\"bauchi\">Bauchi<\/option><option value=\"bayelsa\">Bayelsa<\/option><option value=\"benue\">Benue<\/option><option value=\"borno\">Borno<\/option><option value=\"cross-river\">Cross River<\/option><option value=\"delta\">Delta<\/option><option value=\"ebonyi\">Ebonyi<\/option><option value=\"edo\">Edo<\/option><option value=\"ekiti\">Ekiti<\/option><option value=\"enugu\">Enugu<\/option><option value=\"fct\">FCT (Abuja)<\/option><option value=\"gombe\">Gombe<\/option><option value=\"imo\">Imo<\/option><option value=\"jigawa\">Jigawa<\/option><option value=\"kaduna\">Kaduna<\/option><option value=\"kano\">Kano<\/option><option value=\"katsina\">Katsina<\/option><option value=\"kebbi\">Kebbi<\/option><option value=\"kogi\">Kogi<\/option><option value=\"kwara\">Kwara<\/option><option value=\"lagos\">Lagos<\/option><option value=\"nasarawa\">Nasarawa<\/option><option value=\"niger\">Niger<\/option><option value=\"ogun\">Ogun<\/option><option value=\"ondo\">Ondo<\/option><option value=\"osun\">Osun<\/option><option value=\"oyo\">Oyo<\/option><option value=\"plateau\">Plateau<\/option><option value=\"rivers\">Rivers<\/option><option value=\"sokoto\">Sokoto<\/option><option value=\"taraba\">Taraba<\/option><option value=\"yobe\">Yobe<\/option><option value=\"zamfara\">Zamfara<\/option>                <\/select>\n            <\/div>\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>State to Process ISBN <span style=\"color:red\">*<\/span> <small>(NLN branch routing)<\/small><\/label>\n                <select id=\"ind-process-state\">\n                    <option value=\"\" disabled selected>\u2014 Select your state \u2014<\/option>\n                    <option value=\"abia\">Abia<\/option><option value=\"adamawa\">Adamawa<\/option><option value=\"akwa-ibom\">Akwa Ibom<\/option><option value=\"anambra\">Anambra<\/option><option value=\"bauchi\">Bauchi<\/option><option value=\"bayelsa\">Bayelsa<\/option><option value=\"benue\">Benue<\/option><option value=\"borno\">Borno<\/option><option value=\"cross-river\">Cross River<\/option><option value=\"delta\">Delta<\/option><option value=\"ebonyi\">Ebonyi<\/option><option value=\"edo\">Edo<\/option><option value=\"ekiti\">Ekiti<\/option><option value=\"enugu\">Enugu<\/option><option value=\"fct\">FCT (Abuja)<\/option><option value=\"gombe\">Gombe<\/option><option value=\"imo\">Imo<\/option><option value=\"jigawa\">Jigawa<\/option><option value=\"kaduna\">Kaduna<\/option><option value=\"kano\">Kano<\/option><option value=\"katsina\">Katsina<\/option><option value=\"kebbi\">Kebbi<\/option><option value=\"kogi\">Kogi<\/option><option value=\"kwara\">Kwara<\/option><option value=\"lagos\">Lagos<\/option><option value=\"nasarawa\">Nasarawa<\/option><option value=\"niger\">Niger<\/option><option value=\"ogun\">Ogun<\/option><option value=\"ondo\">Ondo<\/option><option value=\"osun\">Osun<\/option><option value=\"oyo\">Oyo<\/option><option value=\"plateau\">Plateau<\/option><option value=\"rivers\">Rivers<\/option><option value=\"sokoto\">Sokoto<\/option><option value=\"taraba\">Taraba<\/option><option value=\"yobe\">Yobe<\/option><option value=\"zamfara\">Zamfara<\/option>                <\/select>\n                <small>Which state will you visit the NLN office in?<\/small>\n            <\/div>\n            <div class=\"isbn-field\"><\/div>\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>Phone \/ WhatsApp <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"tel\" id=\"ind-phone\" placeholder=\"07010000000\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>Email Address <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"email\" id=\"ind-email\" placeholder=\"you@example.com\">\n            <\/div>\n        <\/div>\n        <div class=\"isbn-field-grid-2\">\n            <div class=\"isbn-field\">\n                <label>Application Date <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"date\" id=\"ind-date\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>Signature Style<\/label>\n                <select id=\"ind-sig\">\n                    <option value=\"auto\">Auto-generate from name<\/option>\n                    <option value=\"manual\">Leave blank space (sign after printing)<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n    <\/div><!-- \/#isbn-fields-individual -->\n\n    <!-- Corporate fields \u2014 hidden by default -->\n    <div id=\"isbn-fields-corporate\" style=\"display:none;\">\n        <div class=\"isbn-card-title\">\ud83c\udfe2 Organisation Information<\/div>\n        <div class=\"isbn-field\" style=\"margin-bottom:14px;\">\n            <label>Registered Business Name <span style=\"color:red\">*<\/span> <small>(as on CAC\/SMEDAN certificate)<\/small><\/label>\n            <input type=\"text\" id=\"corp-name\" placeholder=\"e.g. J.Doe Publishing Limited\">\n        <\/div>\n        <div class=\"isbn-field\" style=\"margin-bottom:14px;\">\n            <label>Office Address <span style=\"color:red\">*<\/span><\/label>\n            <input type=\"text\" id=\"corp-address\" placeholder=\"Suite, floor, street...\">\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>City <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"text\" id=\"corp-city\" placeholder=\"Ibadan\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>State (Office) <span style=\"color:red\">*<\/span><\/label>\n                <select id=\"corp-state\">\n                    <option value=\"\" disabled selected>\u2014 Select your state \u2014<\/option>\n                    <option value=\"abia\">Abia<\/option><option value=\"adamawa\">Adamawa<\/option><option value=\"akwa-ibom\">Akwa Ibom<\/option><option value=\"anambra\">Anambra<\/option><option value=\"bauchi\">Bauchi<\/option><option value=\"bayelsa\">Bayelsa<\/option><option value=\"benue\">Benue<\/option><option value=\"borno\">Borno<\/option><option value=\"cross-river\">Cross River<\/option><option value=\"delta\">Delta<\/option><option value=\"ebonyi\">Ebonyi<\/option><option value=\"edo\">Edo<\/option><option value=\"ekiti\">Ekiti<\/option><option value=\"enugu\">Enugu<\/option><option value=\"fct\">FCT (Abuja)<\/option><option value=\"gombe\">Gombe<\/option><option value=\"imo\">Imo<\/option><option value=\"jigawa\">Jigawa<\/option><option value=\"kaduna\">Kaduna<\/option><option value=\"kano\">Kano<\/option><option value=\"katsina\">Katsina<\/option><option value=\"kebbi\">Kebbi<\/option><option value=\"kogi\">Kogi<\/option><option value=\"kwara\">Kwara<\/option><option value=\"lagos\">Lagos<\/option><option value=\"nasarawa\">Nasarawa<\/option><option value=\"niger\">Niger<\/option><option value=\"ogun\">Ogun<\/option><option value=\"ondo\">Ondo<\/option><option value=\"osun\">Osun<\/option><option value=\"oyo\">Oyo<\/option><option value=\"plateau\">Plateau<\/option><option value=\"rivers\">Rivers<\/option><option value=\"sokoto\">Sokoto<\/option><option value=\"taraba\">Taraba<\/option><option value=\"yobe\">Yobe<\/option><option value=\"zamfara\">Zamfara<\/option>                <\/select>\n            <\/div>\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>State to Process ISBN <span style=\"color:red\">*<\/span> <small>(NLN branch routing)<\/small><\/label>\n                <select id=\"corp-process-state\">\n                    <option value=\"\" disabled selected>\u2014 Select your state \u2014<\/option>\n                    <option value=\"abia\">Abia<\/option><option value=\"adamawa\">Adamawa<\/option><option value=\"akwa-ibom\">Akwa Ibom<\/option><option value=\"anambra\">Anambra<\/option><option value=\"bauchi\">Bauchi<\/option><option value=\"bayelsa\">Bayelsa<\/option><option value=\"benue\">Benue<\/option><option value=\"borno\">Borno<\/option><option value=\"cross-river\">Cross River<\/option><option value=\"delta\">Delta<\/option><option value=\"ebonyi\">Ebonyi<\/option><option value=\"edo\">Edo<\/option><option value=\"ekiti\">Ekiti<\/option><option value=\"enugu\">Enugu<\/option><option value=\"fct\">FCT (Abuja)<\/option><option value=\"gombe\">Gombe<\/option><option value=\"imo\">Imo<\/option><option value=\"jigawa\">Jigawa<\/option><option value=\"kaduna\">Kaduna<\/option><option value=\"kano\">Kano<\/option><option value=\"katsina\">Katsina<\/option><option value=\"kebbi\">Kebbi<\/option><option value=\"kogi\">Kogi<\/option><option value=\"kwara\">Kwara<\/option><option value=\"lagos\">Lagos<\/option><option value=\"nasarawa\">Nasarawa<\/option><option value=\"niger\">Niger<\/option><option value=\"ogun\">Ogun<\/option><option value=\"ondo\">Ondo<\/option><option value=\"osun\">Osun<\/option><option value=\"oyo\">Oyo<\/option><option value=\"plateau\">Plateau<\/option><option value=\"rivers\">Rivers<\/option><option value=\"sokoto\">Sokoto<\/option><option value=\"taraba\">Taraba<\/option><option value=\"yobe\">Yobe<\/option><option value=\"zamfara\">Zamfara<\/option>                <\/select>\n                <small>Which state will you visit the NLN office in?<\/small>\n            <\/div>\n            <div class=\"isbn-field\"><\/div>\n        <\/div>\n        <div class=\"isbn-field\" style=\"margin-bottom:14px;\">\n            <label>Full Name of Authorised Signatory <span style=\"color:red\">*<\/span><\/label>\n            <input type=\"text\" id=\"corp-signatory\" placeholder=\"e.g. Adebayo Johnson\">\n        <\/div>\n        <div class=\"isbn-field-grid-2\" style=\"margin-bottom:14px;\">\n            <div class=\"isbn-field\">\n                <label>Phone \/ WhatsApp <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"tel\" id=\"corp-phone\" placeholder=\"07010883671\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>Email Address <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"email\" id=\"corp-email\" placeholder=\"info@yourpublisher.com\">\n            <\/div>\n        <\/div>\n        <div class=\"isbn-field-grid-2\">\n            <div class=\"isbn-field\">\n                <label>Application Date <span style=\"color:red\">*<\/span><\/label>\n                <input type=\"date\" id=\"corp-date\">\n            <\/div>\n            <div class=\"isbn-field\">\n                <label>Signature Style<\/label>\n                <select id=\"corp-sig\">\n                    <option value=\"auto\">Auto-generate from signatory name<\/option>\n                    <option value=\"manual\">Leave blank space (sign after printing)<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n    <\/div><!-- \/#isbn-fields-corporate -->\n<\/div><!-- \/#isbn-identity-fields -->\n\n        <!-- Book fields -->\n        <div style=\"margin-top: 22px; padding-top: 20px; border-top: 1px dashed #e2e8f0;\">\n            <div class=\"isbn-card-title\">\ud83d\udcda Book Information<\/div>\n\n            <!-- Corporate: history check -->\n            <div class=\"isbn-history-block hidden\" id=\"isbn-history-block\">\n                <div class=\"isbn-field\">\n                    <label for=\"corp-history\">Is this your first ISBN application with the NLN?<\/label>\n                    <select id=\"corp-history\">\n                        <option value=\"FIRST\">Yes \u2014 this is our first request<\/option>\n                        <option value=\"SUBSEQUENT\">No \u2014 we have obtained ISBNs from the NLN before<\/option>\n                    <\/select>\n                <\/div>\n                <div class=\"isbn-deposit-block hidden\" id=\"isbn-deposit-block\">\n                    <label class=\"isbn-deposit-check\">\n                        <input type=\"checkbox\" id=\"isbn-deposit-check\">\n                        We have the Legal Deposit Acknowledgement Letter for our previous titled publication(s).\n                    <\/label>\n                    <div class=\"isbn-notice error hidden\" id=\"isbn-deposit-warning\">\n                        \u26a0\ufe0f Regulatory requirement: Organisations requesting more than 2 ISBNs must provide a Legal Deposit Acknowledgement Letter for each previously issued title.\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- Dynamic book entry rows -->\n            <div id=\"isbn-books-container\" style=\"margin-top: 14px;\"><\/div>\n            <button type=\"button\" class=\"isbn-add-btn\" id=\"isbn-add-book-btn\">\n                \u2795 Add Another Title\n            <\/button>\n            <div class=\"isbn-notice info hidden\" id=\"isbn-limit-notice\" style=\"margin-top: 10px;\"><\/div>\n        <\/div>\n\n        <button class=\"isbn-generate-btn\" id=\"isbn-generate-btn\">\n            \u270d\ufe0f Generate Request Letter\n        <\/button>\n\n    <\/div><!-- \/#isbn-form-card -->\n\n\n    <!-- \u2500\u2500 OUTPUT WORKSPACE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\n    <div id=\"isbn-output-workspace\" style=\"display:none;\">\n\n        <!-- Application guidelines -->\n        <div class=\"isbn-guidelines\">\n            <h3>\n                <span style=\"background:#22c55e;color:#fff;border-radius:50%;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;\">\u2713<\/span>\n                What to Do Next\n            <\/h3>\n            <ol>\n                <li>Print this letter and proceed to the <strong>National Library of Nigeria branch in your state<\/strong>. You will be asked to pay the applicable charges using Remita at their office.<\/li>\n                <li id=\"guideline-individual\" style=\"display:none;\">Bring a valid government-issued ID (National ID card, Voter's Card, NIN Slip, or International Passport).<\/li>\n                <li id=\"guideline-corporate\" style=\"display:none;\">Bring a copy of your business registration certificate (CAC Certificate of Incorporation or SMEDAN Certificate).<\/li>\n                <li>For publishing support \u2014 editing, cover design, printing, and distribution \u2014 <a href=\"https:\/\/aceworldpgs.com\/tools\/publishing-calculator\/\" target=\"_blank\">use our Publishing Calculator<\/a> to get an instant quotation.<\/li>\n            <\/ol>\n        <\/div>\n\n        <!-- Letter preview -->\n        <div class=\"isbn-preview-wrap\">\n            <div class=\"isbn-letter-paper\" id=\"isbn-printable-letter\">\n                <!-- Populated by JS -->\n            <\/div>\n        <\/div>\n\n        <!-- Consent & print gate -->\n        <div class=\"isbn-action-gate\">\n            <div>\n                <label class=\"isbn-consent-label\">\n                    <input type=\"checkbox\" id=\"isbn-consent-checkbox\" checked>\n                    I agree to ACEworld Publishers saving my contact details to guide me through the publication process and provide relevant publishing assistance.\n                <\/label>\n            <\/div>\n            <button type=\"button\" class=\"isbn-print-btn\" id=\"isbn-print-btn\">\n                \ud83d\udcc4 Download Letter (PDF)\n            <\/button>\n            <div class=\"isbn-save-status\" id=\"isbn-save-status\"><\/div>\n        <\/div>\n\n    <\/div><!-- \/#isbn-output-workspace -->\n\n    <div class=\"isbn-bottom-badge\">\n        Need full publishing support?\n        <a href=\"https:\/\/aceworldpgs.com\/tools\/publishing-calculator\/\" target=\"_blank\">Use our Publishing Calculator \u2192<\/a>\n    <\/div>\n\n<\/div><!-- \/.ace-isbn-wrap -->\n\n\n<style>\n\n\/* SHARE SECTION *\/\n\n.share-section{\ntext-align:center;\npadding:28px 0;\nmargin-top:30px;\nborder-top:1px solid #e5e7eb;\n}\n\n\/* COPY LINK BUTTON *\/\n\n.copy-link-btn{\ndisplay:inline-flex;\nalign-items:center;\ngap:6px;\nfont-size:14px;\nfont-weight:600;\ncolor:var(--text-main);\nbackground:#f8fafc;\npadding:6px 12px;\nborder-radius:6px;\ntext-decoration:none;\ncursor:pointer;\ntransition:all .2s ease;\nmargin-bottom:18px;\n}\n\n.copy-link-btn:hover{\nbackground:#eef2f7;\ntransform:translateY(-1px);\n}\n\n\/* SHARE BUTTON ROW *\/\n\n.share-btns{\ndisplay:flex;\njustify-content:center;\ngap:12px;\nflex-wrap:wrap;\n}\n\n\/* SHARE ICON *\/\n\n.share-icon{\nwidth:36px;\nheight:36px;\nborder-radius:50%;\ndisplay:flex;\nalign-items:center;\njustify-content:center;\ncolor:#fff;\nfont-size:14px;\nfont-weight:600;\ntext-decoration:none;\ntransition:all .2s ease;\n}\n\n\/* BRAND COLORS *\/\n\n.wa{background:#25D366;}\n.tw{background:#000;}\n.li{background:#0A66C2;}\n.fb{background:#1877F2;}\n.ml{background:#ef4444;}\n\n\/* HOVER EFFECT *\/\n\n.share-icon:hover{\ntransform:translateY(-2px) scale(1.05);\nopacity:.9;\n}\n\n\/* COPY FEEDBACK *\/\n\n.copy-feedback{\nfont-size:12px;\ncolor:#16a34a;\nmargin-top:10px;\ndisplay:none;\n}\n\n<\/style>\n\n\n<div class=\"share-section\">\n\n<a onclick=\"copyToolLink()\" class=\"copy-link-btn\" id=\"copyBtn\">\n\ud83d\udd17 Copy Page Link\n<\/a>\n\n<div class=\"share-btns\">\n<a href=\"#\" id=\"shareWA\" target=\"_blank\" class=\"share-icon wa\" title=\"Share on WhatsApp\">W<\/a>\n<a href=\"#\" id=\"shareTW\" target=\"_blank\" class=\"share-icon tw\" title=\"Share on X\">X<\/a>\n<a href=\"#\" id=\"shareLI\" target=\"_blank\" class=\"share-icon li\" title=\"Share on LinkedIn\">in<\/a>\n<a href=\"#\" id=\"shareFB\" target=\"_blank\" class=\"share-icon fb\" title=\"Share on Facebook\">f<\/a>\n<a href=\"#\" id=\"shareEmail\" target=\"_blank\" class=\"share-icon ml\" title=\"Share via Email\">M<\/a>\n<\/div>\n\n<div id=\"copyFeedback\" class=\"copy-feedback\">Link copied!<\/div>\n\n<\/div>\n\n\n<script>\n\nfunction copyToolLink(){\n\nconst url = window.location.href;\n\nnavigator.clipboard.writeText(url).then(()=>{\n\nconst f = document.getElementById(\"copyFeedback\");\n\nf.style.display=\"block\";\n\nsetTimeout(()=>{f.style.display=\"none\"},2000);\n\n}).catch(()=>{\n\nalert(\"Copy failed. Please copy the URL manually.\");\n\n});\n\n}\n\nfunction setupShareButtons(){\n\nlet pageUrl=encodeURIComponent(window.location.href)\nlet pageTitle=encodeURIComponent(document.title)\n\ndocument.getElementById(\"shareWA\").href=\n`https:\/\/wa.me\/?text=${pageTitle}%20${pageUrl}`\n\ndocument.getElementById(\"shareTW\").href=\n`https:\/\/twitter.com\/intent\/tweet?text=${pageTitle}&url=${pageUrl}`\n\ndocument.getElementById(\"shareLI\").href=\n`https:\/\/www.linkedin.com\/sharing\/share-offsite\/?url=${pageUrl}`\n\ndocument.getElementById(\"shareFB\").href=\n`https:\/\/www.facebook.com\/sharer\/sharer.php?u=${pageUrl}`\n\ndocument.getElementById(\"shareEmail\").href=\n\"mailto:?subject=\"+encodeURIComponent(document.title)+\n\"&body=\"+encodeURIComponent(\"Check out this page: \"+window.location.href)\n\n}\n\nsetupShareButtons()\n\n<\/script>\n\n\n\n    <style>\n        .ace-feedback-btn {\n            padding: 10px 14px;\n            background: #111827;\n            color: #fff;\n            border: none;\n            border-radius: 8px;\n            cursor: pointer;\n            font-size: 13px;\n            display: block;\n            margin: 20px auto;\n        }\n\n        .ace-feedback-modal {\n            display: none;\n            position: fixed;\n            top: 0; left: 0;\n            width: 100%; height: 100%;\n            background: rgba(0,0,0,0.5);\n            justify-content: center;\n            align-items: center;\n            z-index: 9999;\n        }\n\n        .ace-feedback-box {\n            background: #fff;\n            padding: 20px;\n            width: 100%;\n            max-width: 420px;\n            border-radius: 10px;\n        }\n\n        .ace-feedback-box textarea,\n        .ace-feedback-box input {\n            width: 100%;\n            margin-bottom: 10px;\n            padding: 10px;\n            border: 1px solid #ddd;\n            border-radius: 6px;\n        }\n\n        .ace-feedback-submit {\n            background: #2563eb;\n            color: #fff;\n            padding: 10px;\n            border: none;\n            width: 100%;\n            border-radius: 6px;\n            cursor: pointer;\n        }\n    <\/style>\n\n    <button class=\"ace-feedback-btn\" onclick=\"document.getElementById('aceFeedbackModal').style.display='flex'\">\n        Report Problem \/ Contact Us\n    <\/button>\n\n    <div id=\"aceFeedbackModal\" class=\"ace-feedback-modal\">\n        <div class=\"ace-feedback-box\">\n\n            <h3 style=\"margin-top:0;\">Send Feedback<\/h3>\n\n            <input type=\"email\" id=\"ace_feedback_email\" placeholder=\"Your email (optional)\">\n            <textarea id=\"ace_feedback_message\" rows=\"5\" placeholder=\"Describe your issue or suggestion...\"><\/textarea>\n\n            <button class=\"ace-feedback-submit\" onclick=\"trackTool('toolkit_feedback'); aceSendFeedback()\">\n                Send Message\n            <\/button>\n\n            <button style=\"margin-top:10px; background:#000; padding:8px; border:none; width:100%;\" \n                onclick=\"document.getElementById('aceFeedbackModal').style.display='none'\">\n                Close\n            <\/button>\n\n        <\/div>\n    <\/div>\n\n    <script>\n    function aceSendFeedback() {\n\n        let email = document.getElementById('ace_feedback_email').value;\n        let message = document.getElementById('ace_feedback_message').value;\n\n        fetch('https:\/\/aceworldpgs.com\/tools\/wp-admin\/admin-ajax.php', {\n            method: 'POST',\n            headers: {'Content-Type': 'application\/x-www-form-urlencoded'},\n            body: new URLSearchParams({\n                action: 'ace_send_feedback',\n                email: email,\n                message: message,\n                post_url: 'https:\/\/aceworldpgs.com\/tools\/isbn-letter-generator\/',\n                post_title: 'ISBN Letter Generator'\n            })\n        }).then(res => res.json()).then(res => {\n            alert('Thank you! Your feedback has been sent.');\n            document.getElementById('aceFeedbackModal').style.display='none';\n        });\n\n    }\n    <\/script>\n\n    \n<script>\n(function() {\n'use strict';\n\n\/* \u2500\u2500 State \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nconst AJAX_URL = 'https:\/\/aceworldpgs.com\/tools\/wp-admin\/admin-ajax.php';\nlet isbnEntityType    = 'INDIVIDUAL';\nlet isbnBookCount     = 0;\nlet isbnMaxBooks      = 2;\nlet isbnCurrentTitles = [];\nlet isbnFontLoaded    = false; \/\/ CHANGED: track font load state\n\n\/* \u2500\u2500 Load Dancing Script on demand (not on page load) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/\/ CHANGED: was previously two <link> tags in wp_head, causing render-blocking.\n\/\/ Now loaded once, only when isbnGenerate() is first called.\nfunction isbnEnsureFontLoaded() {\n    if (isbnFontLoaded) return;\n    isbnFontLoaded = true;\n\n    const preconnect1 = document.createElement('link');\n    preconnect1.rel = 'preconnect';\n    preconnect1.href = 'https:\/\/fonts.googleapis.com';\n    document.head.appendChild(preconnect1);\n\n    const preconnect2 = document.createElement('link');\n    preconnect2.rel = 'preconnect';\n    preconnect2.href = 'https:\/\/fonts.gstatic.com';\n    preconnect2.crossOrigin = 'anonymous';\n    document.head.appendChild(preconnect2);\n\n    const fontLink = document.createElement('link');\n    fontLink.rel = 'stylesheet';\n    fontLink.href = 'https:\/\/fonts.googleapis.com\/css2?family=Dancing+Script:wght@700&display=swap';\n    document.head.appendChild(fontLink);\n}\n\n\/* \u2500\u2500 Entity selector \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n   CHANGED: no longer injects HTML. Toggles visibility of the\n   two pre-rendered blocks from PHP instead, eliminating CLS.\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnSetEntity(type) {\n    isbnEntityType = type;\n\n    document.getElementById('lbl-individual').classList.toggle('active', type === 'INDIVIDUAL');\n    document.getElementById('lbl-corporate').classList.toggle('active', type === 'CORPORATE');\n    document.getElementById('ent-individual').checked = (type === 'INDIVIDUAL');\n    document.getElementById('ent-corporate').checked  = (type === 'CORPORATE');\n\n    \/\/ Toggle pre-rendered field blocks \u2014 no DOM injection, no CLS\n    document.getElementById('isbn-fields-individual').style.display = type === 'INDIVIDUAL' ? '' : 'none';\n    document.getElementById('isbn-fields-corporate').style.display  = type === 'CORPORATE'  ? '' : 'none';\n\n    const historyBlock = document.getElementById('isbn-history-block');\n    historyBlock.classList.toggle('hidden', type === 'INDIVIDUAL');\n\n    \/\/ Reset books when switching entity\n    document.getElementById('isbn-books-container').innerHTML = '';\n    isbnBookCount = 0;\n    isbnMaxBooks  = 2;\n    document.getElementById('isbn-add-book-btn').classList.remove('hidden');\n    document.getElementById('isbn-limit-notice').classList.add('hidden');\n\n    isbnEvalHistory();\n    isbnAddBook();\n}\n\n\/* \u2500\u2500 History \/ deposit logic \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnEvalHistory() {\n    if (isbnEntityType !== 'CORPORATE') return;\n\n    const histVal      = document.getElementById('corp-history').value;\n    const depositBlock = document.getElementById('isbn-deposit-block');\n    const depositWarn  = document.getElementById('isbn-deposit-warning');\n    const depositCheck = document.getElementById('isbn-deposit-check');\n\n    depositBlock.classList.toggle('hidden', histVal === 'FIRST');\n\n    if (histVal === 'FIRST') {\n        isbnMaxBooks = 2;\n        depositCheck.checked = false;\n        depositWarn.classList.add('hidden');\n    } else {\n        if (depositCheck.checked) {\n            isbnMaxBooks = 5;\n            depositWarn.classList.add('hidden');\n        } else {\n            isbnMaxBooks = 2;\n            depositWarn.classList.remove('hidden');\n        }\n    }\n\n    while (isbnBookCount > isbnMaxBooks) {\n        const row = document.getElementById(`isbn-book-${isbnBookCount}`);\n        if (row) row.remove();\n        isbnBookCount--;\n    }\n\n    isbnSyncAddButton();\n}\n\n\/* \u2500\u2500 Book entry management \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnAddBook() {\n    if (isbnBookCount >= isbnMaxBooks) return;\n    isbnBookCount++;\n\n    const container = document.getElementById('isbn-books-container');\n    const row = document.createElement('div');\n    row.className = 'isbn-book-row';\n    row.id = `isbn-book-${isbnBookCount}`;\n    row.innerHTML = `\n        <span class=\"row-num\">${isbnBookCount}<\/span>\n        <input type=\"text\" class=\"isbn-title-input\" placeholder=\"Book title (e.g. Adam's Apple, the Father's Neck)\" required>\n        <select class=\"isbn-format-select\">\n            <option value=\"Paperback\">Paperback<\/option>\n            <option value=\"Hardback\">Hardback<\/option>\n            <option value=\"eBook\">eBook<\/option>\n        <\/select>\n    `;\n    container.appendChild(row);\n\/\/ Only auto-focus on user-initiated additions, not the initial page load row\nif (isbnBookCount > 1) {\n    row.querySelector('.isbn-title-input').focus();\n}\nisbnSyncAddButton();\n}\n\nfunction isbnSyncAddButton() {\n    const addBtn      = document.getElementById('isbn-add-book-btn');\n    const limitNotice = document.getElementById('isbn-limit-notice');\n\n    if (isbnBookCount >= isbnMaxBooks) {\n        addBtn.classList.add('hidden');\n        limitNotice.classList.remove('hidden');\n        limitNotice.textContent = isbnEntityType === 'INDIVIDUAL'\n            ? '\u270b Individual authors can request a maximum of 2 ISBNs per application.'\n            : ( isbnMaxBooks === 2\n                ? '\u270b Without a Legal Deposit letter, organisations are limited to 2 ISBNs per application.'\n                : '\u270b Maximum of 5 ISBNs reached for this application.' );\n    } else {\n        addBtn.classList.remove('hidden');\n        limitNotice.classList.add('hidden');\n    }\n}\n\n\/* \u2500\u2500 Helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnGetBranchLines(stateSlug) {\n    if (!stateSlug || typeof isbnBranchData === 'undefined') return null;\n    return isbnBranchData[stateSlug] || null;\n}\n\nfunction isbnVal(id) {\n    const el = document.getElementById(id);\n    return el ? el.value.trim() : '';\n}\n\nfunction isbnFormatDate(isoString) {\n    if (!isoString) return '';\n    const [y, m, d] = isoString.split('-').map(Number);\n    const dt = new Date(y, m - 1, d);\n    const months = ['January','February','March','April','May','June','July','August','September','October','November','December'];\n    const suffix = (n) => {\n        const s = ['th','st','nd','rd'];\n        const v = n % 100;\n        return n + (s[(v - 20) % 10] || s[v] || s[0]);\n    };\n    return `${suffix(d)} ${months[dt.getMonth()]}, ${y}`;\n}\n\nfunction isbnEscHtml(str) {\n    return String(str)\n        .replace(\/&\/g,'&amp;').replace(\/<\/g,'&lt;')\n        .replace(\/>\/g,'&gt;').replace(\/\"\/g,'&quot;');\n}\n\nfunction isbnLastName(fullName) {\n    const parts = fullName.trim().split(' ');\n    return parts[parts.length - 1] || fullName;\n}\n\n\/* \u2500\u2500 CHANGED: Set today's date on the visible date input \u2500\u2500\u2500\u2500\u2500\n   Since fields are pre-rendered in PHP, the date inputs exist\n   in the DOM on load. We set today's value here rather than\n   in the PHP value attribute (which would always be the server\n   render date, not today in the user's timezone).\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnSetTodayDates() {\n    const d = new Date();\n    const today = `${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,'0')}-${String(d.getDate()).padStart(2,'0')}`;\n    ['ind-date', 'corp-date'].forEach(id => {\n        const el = document.getElementById(id);\n        if (el && !el.value) el.value = today;\n    });\n}\n\n\/* \u2500\u2500 Validate & generate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnGenerate() {\n    \/\/ CHANGED: load font on first generate, not on page load\n    isbnEnsureFontLoaded();\n\n    let senderName, senderAddress, senderCity, senderState;\n    let senderPhone, senderEmail, appDate, sigStyle;\n    let signatoryName, signatoryForEntity = '';\n    let processState;\n\n    if (isbnEntityType === 'INDIVIDUAL') {\n        senderName    = isbnVal('ind-name');\n        senderAddress = isbnVal('ind-address');\n        senderCity    = isbnVal('ind-city');\n        senderState   = isbnVal('ind-state');\n        processState  = isbnVal('ind-process-state');\n        senderPhone   = isbnVal('ind-phone');\n        senderEmail   = isbnVal('ind-email');\n        appDate       = isbnVal('ind-date');\n        sigStyle      = isbnVal('ind-sig');\n        signatoryName = senderName;\n    } else {\n        senderName    = isbnVal('corp-name');\n        senderAddress = isbnVal('corp-address');\n        senderCity    = isbnVal('corp-city');\n        senderState   = isbnVal('corp-state');\n        processState  = isbnVal('corp-process-state');\n        senderPhone   = isbnVal('corp-phone');\n        senderEmail   = isbnVal('corp-email');\n        appDate       = isbnVal('corp-date');\n        sigStyle      = isbnVal('corp-sig');\n        signatoryName = isbnVal('corp-signatory');\n        signatoryForEntity = `<br>For: ${senderName}`;\n    }\n\n    const requiredFilled = senderName && senderAddress && senderCity &&\n                           senderState && processState && senderPhone && senderEmail && appDate;\n    if (!requiredFilled) {\n        alert('Please fill in all required fields \u2014 including both state fields \u2014 before generating the letter.');\n        return;\n    }\n\n    if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(senderEmail)) {\n        alert('Please enter a valid email address.');\n        return;\n    }\n\n    const titleInputs  = document.querySelectorAll('.isbn-title-input');\n    const formatInputs = document.querySelectorAll('.isbn-format-select');\n    const bookEntries  = [];\n\n    for (let i = 0; i < titleInputs.length; i++) {\n        const t = titleInputs[i].value.trim();\n        const f = formatInputs[i].value;\n        if (!t) { alert(`Please enter a title for Book #${i+1}.`); return; }\n        bookEntries.push({ title: t, format: f });\n    }\n    if (bookEntries.length === 0) {\n        alert('Please add at least one book title.');\n        return;\n    }\n\n    isbnCurrentTitles = bookEntries;\n\n    const branch = isbnGetBranchLines(processState);\n    let throughHtml = '';\n    let throughLines = [];\n\n    if (branch) {\n        throughLines = branch.lines;\n        throughHtml  = branch.lines.map(l => isbnEscHtml(l)).join('<br>\\n            ');\n    } else {\n        throughLines = [\n            'National Library of Nigeria,',\n            'State Branch,',\n            '(Address \u2014 visit nln.gov.ng for branch details).',\n        ];\n        throughHtml = throughLines.map(l => isbnEscHtml(l)).join('<br>\\n            ');\n    }\n\n    const authorLabel  = isbnEntityType === 'INDIVIDUAL' ? senderName : signatoryName;\n    const bookListHtml = bookEntries.map((b) =>\n        `<li> ${isbnEscHtml(b.title)} (${isbnEscHtml(b.format)}) by ${isbnEscHtml(authorLabel)}<\/li>`\n    ).join('');\n\n    const lastName = isbnLastName(signatoryName);\n    let sigBlock;\n    if (sigStyle === 'auto') {\n        sigBlock = `<span class=\"isbn-sig-font\">${isbnEscHtml(lastName)}<\/span>`;\n    } else {\n        sigBlock = `<span class=\"isbn-sig-space\"><\/span><small style=\"color:#64748b;font-style:italic;\">(Sign here after printing)<\/small>`;\n    }\n\n    const letterHtml = `\n        <div class=\"letter-sender-header\">\n            <div class=\"letter-sender-name\">${isbnEscHtml(senderName)}<\/div>\n            <div class=\"letter-sender-detail\">${isbnEscHtml(senderAddress)}, ${isbnEscHtml(senderCity)}, ${isbnEscHtml(senderState.replace(\/-\/g,' ').replace(\/\\b\\w\/g,c=>c.toUpperCase()))}.<\/div>\n            <div class=\"letter-sender-detail\">${isbnEscHtml(senderPhone)} | ${isbnEscHtml(senderEmail)}<\/div>\n        <\/div>\n\n        <div class=\"letter-date-line\">${isbnFormatDate(appDate)}<\/div>\n\n        <div class=\"letter-recipient\">\n            The Director,<br>\n            Department of International Standard &amp; Programmes,<br>\n            National Library of Nigeria,<br>\n            P.M.B.1, Garki, Abuja.\n        <\/div>\n\n        <div class=\"letter-through\">\n            <strong>Through:<\/strong><br>\n            The Head of Branch,<br>\n            ${throughHtml}\n        <\/div>\n\n        <div class=\"letter-salutation\">Dear Ma,<\/div>\n\n        <div class=\"letter-subject\">Application for ISBN Assignment<\/div>\n\n        <div class=\"letter-body\">\n            I am writing to formally request the allotment of ${bookEntries.length > 1 ? 'International Standard Book Numbers (ISBNs)' : 'an International Standard Book Number (ISBN)'} for the following publication${bookEntries.length > 1 ? 's' : ''}:\n            <ol class=\"letter-book-list\">${bookListHtml}<\/ol>\n            Kindly consider this request and issue the ISBN${bookEntries.length > 1 ? 's' : ''} for the above-mentioned publication${bookEntries.length > 1 ? 's' : ''}. I would appreciate your prompt response.\n        <\/div>\n\n        <div class=\"letter-body\">Thank you for your kind attention.<\/div>\n\n        <div class=\"letter-closing\">\n            Yours faithfully,<br>\n            ${sigBlock}\n            <strong>${isbnEscHtml(signatoryName)}${signatoryForEntity}<\/strong>\n        <\/div>\n    `;\n\n    document.getElementById('isbn-printable-letter').innerHTML = letterHtml;\n\n    document.getElementById('guideline-individual').style.display =\n        isbnEntityType === 'INDIVIDUAL' ? 'list-item' : 'none';\n    document.getElementById('guideline-corporate').style.display =\n        isbnEntityType === 'CORPORATE' ? 'list-item' : 'none';\n\n    const workspace = document.getElementById('isbn-output-workspace');\n    workspace.style.display = 'block';\n    workspace.scrollIntoView({ behavior: 'smooth', block: 'start' });\n\n    isbnSaveLead({\n        clientName:  senderName,\n        clientEmail: senderEmail,\n        clientPhone: senderPhone,\n        clientState: senderState,\n        entityType:  isbnEntityType,\n        titles:      bookEntries,\n    });\n}\n\n\/* \u2500\u2500 Consent gate sync \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnSyncGate() {\n    const checked = document.getElementById('isbn-consent-checkbox').checked;\n    document.getElementById('isbn-print-btn').disabled = !checked;\n\n    if (checked && isbnCurrentTitles.length > 0) {\n        const senderEmail = isbnEntityType === 'INDIVIDUAL'\n            ? isbnVal('ind-email') : isbnVal('corp-email');\n        const senderName  = isbnEntityType === 'INDIVIDUAL'\n            ? isbnVal('ind-name') : isbnVal('corp-name');\n        const senderPhone = isbnEntityType === 'INDIVIDUAL'\n            ? isbnVal('ind-phone') : isbnVal('corp-phone');\n        const senderState = isbnEntityType === 'INDIVIDUAL'\n            ? isbnVal('ind-state') : isbnVal('corp-state');\n\n        if (senderEmail) {\n            isbnSaveLead({\n                clientName:  senderName,\n                clientEmail: senderEmail,\n                clientPhone: senderPhone,\n                clientState: senderState,\n                entityType:  isbnEntityType,\n                titles:      isbnCurrentTitles,\n            });\n        }\n    }\n}\n\n\/* \u2500\u2500 AJAX lead save \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnSaveLead(data) {\n    const consent  = document.getElementById('isbn-consent-checkbox').checked;\n    const statusEl = document.getElementById('isbn-save-status');\n\n    const fd = new FormData();\n    fd.append('action',       'aceworld_isbn_lead_to_manual_quote');\n    fd.append('client_name',  data.clientName);\n    fd.append('client_email', data.clientEmail);\n    fd.append('client_phone', data.clientPhone);\n    fd.append('client_state', data.clientState || '');\n    fd.append('entity_type',  data.entityType);\n    fd.append('titles_json',  JSON.stringify(data.titles));\n    fd.append('consent',      consent ? '1' : '0');\n\n    fetch(AJAX_URL, { method: 'POST', body: fd })\n        .then(r => r.json())\n        .then(resp => {\n            if (resp.success && resp.data && resp.data.saved) {\n                if (statusEl) statusEl.textContent = '\u2705 Contact details saved \u2014 our team will follow up with publishing guidance.';\n            }\n        })\n        .catch(() => {});\n}\n\n\/* \u2500\u2500 PDF Download \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\nfunction isbnDownloadPDF() {\n    if (!window.jspdf) {\n        const s = document.createElement('script');\n        s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js';\n        s.onload = () => isbnBuildPDF();\n        document.head.appendChild(s);\n    } else {\n        isbnBuildPDF();\n    }\n}\n\nfunction isbnBuildPDF() {\n    const { jsPDF } = window.jspdf;\n    const doc = new jsPDF({ unit: 'mm', format: 'a4', orientation: 'portrait' });\n\n    const margin    = 20;\n    const pageW     = 210;\n    const contentW  = pageW - margin * 2;\n    let y = 20;\n\n    function gap(mm) { y += mm; }\n\n    const paper = document.getElementById('isbn-printable-letter');\n    if (!paper) return;\n\n    const senderName   = paper.querySelector('.letter-sender-name')?.innerText?.trim()   || '';\n    const senderDetail = paper.querySelectorAll('.letter-sender-detail');\n    const addressLine  = senderDetail[0]?.innerText?.trim() || '';\n    const contactLine  = senderDetail[1]?.innerText?.trim() || '';\n    const dateLine     = paper.querySelector('.letter-date-line')?.innerText?.trim()     || '';\n    const subjectLine  = paper.querySelector('.letter-subject')?.innerText?.trim()       || '';\n    const bodyParas    = paper.querySelectorAll('.letter-body');\n    const bookItems    = paper.querySelectorAll('.letter-book-list li');\n    const closingEl    = paper.querySelector('.letter-closing');\n    const sigFontEl    = paper.querySelector('.isbn-sig-font');\n    const sigNameEl    = closingEl?.querySelector('strong');\n\n    const throughEl  = paper.querySelector('.letter-through');\n    const throughRaw = throughEl ? throughEl.innerText.trim() : '';\n    const throughBody = throughRaw.replace(\/^Through:\\s*\/i, '').split('\\n').map(l => l.trim()).filter(Boolean);\n\n    doc.setFont('times', 'bold');\n    doc.setFontSize(16);\n    doc.setTextColor(0,0,0);\n    const nameLines = doc.splitTextToSize(senderName.toUpperCase(), contentW);\n    doc.text(nameLines, pageW \/ 2, y, { align: 'center' });\n    y += nameLines.length * 7;\n\n    doc.setFont('times', 'normal');\n    doc.setFontSize(11);\n    const addrLines = doc.splitTextToSize(addressLine, contentW);\n    doc.text(addrLines, pageW \/ 2, y, { align: 'center' });\n    y += addrLines.length * 5;\n\n    const contactLines = doc.splitTextToSize(contactLine, contentW);\n    doc.text(contactLines, pageW \/ 2, y, { align: 'center' });\n    y += contactLines.length * 5 + 2;\n\n    doc.setLineWidth(0.6);\n    doc.setDrawColor(0);\n    doc.line(margin, y, pageW - margin, y);\n    gap(8);\n\n    doc.setFont('times', 'normal');\n    doc.setFontSize(11);\n    doc.setTextColor(0,0,0);\n    doc.text(dateLine, pageW - margin, y, { align: 'right' });\n    gap(8);\n\n    const recipient = [\n        'The Director,',\n        'Department of International Standard & Programmes,',\n        'National Library of Nigeria,',\n        'P.M.B.1, Garki, Abuja.'\n    ];\n    recipient.forEach(line => {\n        doc.setFontSize(11);\n        doc.setFont('times', 'normal');\n        doc.text(line, margin, y);\n        y += 5.5;\n    });\n    gap(5);\n\n    doc.setFont('times', 'italic');\n    doc.setFontSize(11);\n    doc.text('Through:', margin, y);\n    y += 5.5;\n    doc.text('The Head of Branch,', margin + 5, y);\n    y += 5.5;\n    throughBody.forEach(line => {\n        if (line.toLowerCase() === 'through:') return;\n        if (line.toLowerCase() === 'the head of branch,') return;\n        doc.setFont('times', 'italic');\n        doc.setFontSize(11);\n        doc.text(line, margin + 5, y);\n        y += 5.5;\n    });\n    gap(6);\n\n    doc.setFont('times', 'normal');\n    doc.setFontSize(11);\n    doc.text('Dear Ma,', margin, y);\n    gap(7);\n\n    doc.setFont('times', 'bold');\n    doc.setFontSize(12);\n    const subjectText  = subjectLine || 'APPLICATION FOR ISBN ASSIGNMENT';\n    const subjectLines = doc.splitTextToSize(subjectText.toUpperCase(), contentW);\n    doc.text(subjectLines, pageW \/ 2, y, { align: 'center' });\n    const subjectWidth = doc.getTextWidth(subjectText.toUpperCase());\n    const subjectX     = (pageW - Math.min(subjectWidth, contentW)) \/ 2;\n    doc.setLineWidth(0.3);\n    doc.line(subjectX, y + 1, subjectX + Math.min(subjectWidth, contentW), y + 1);\n    y += subjectLines.length * 6;\n    gap(5);\n\n    doc.setFont('times', 'normal');\n    doc.setFontSize(11);\n    const bodyText1  = bodyParas[0]?.innerText?.trim() || '';\n    const bodyIntro  = bodyText1.split('\\n')[0] || bodyText1;\n    const introLines = doc.splitTextToSize(bodyIntro, contentW);\n    doc.text(introLines, margin, y, { align: 'justify', maxWidth: contentW });\n    y += introLines.length * 5.5 + 3;\n\n    bookItems.forEach((item, i) => {\n        const text      = `${i + 1}. ${item.innerText.trim()}`;\n        const itemLines = doc.splitTextToSize(text, contentW - 8);\n        doc.text(itemLines, margin + 5, y);\n        y += itemLines.length * 5.5 + 1;\n    });\n    gap(3);\n\n    const bodyParas2  = bodyParas[0]?.innerText?.trim().split('\\n').slice(-1)[0] ||\n        'Kindly consider this request and issue the ISBN(s) for the above-mentioned publication(s). I would appreciate your prompt response.';\n    const para2Lines  = doc.splitTextToSize(bodyParas2, contentW);\n    doc.text(para2Lines, margin, y, { align: 'justify', maxWidth: contentW });\n    y += para2Lines.length * 5.5 + 4;\n\n    const thankYou = bodyParas[1]?.innerText?.trim() || 'Thank you for your kind attention.';\n    doc.text(thankYou, margin, y);\n    gap(10);\n\n    doc.text('Yours faithfully,', margin, y);\n    gap(12);\n\n    if (sigFontEl) {\n        const sigText = sigFontEl.innerText.trim();\n        doc.setFont('times', 'bolditalic');\n        doc.setFontSize(28);\n        doc.setTextColor(30, 58, 138);\n        doc.text(sigText, margin, y);\n        doc.setTextColor(0, 0, 0);\n        gap(10);\n    } else {\n        doc.setLineWidth(0.3);\n        doc.setDrawColor(150);\n        doc.line(margin, y, margin + 45, y);\n        gap(10);\n    }\n\n    doc.setFont('times', 'bold');\n    doc.setFontSize(11);\n    doc.setTextColor(0,0,0);\n    const sigName = sigNameEl?.innerText?.trim() || senderName;\n    doc.text(sigName, margin, y);\n\n    const safeName = senderName.replace(\/[^a-z0-9]\/gi, '_').toLowerCase();\n    doc.save(`ISBN_Request_Letter_${safeName}.pdf`);\n}\n\n\/* \u2500\u2500 Event delegation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\ndocument.addEventListener('click', function(e) {\n    if (e.target.closest('#isbn-add-book-btn')) { isbnAddBook(); return; }\n    if (e.target.closest('#isbn-generate-btn')) {\n        if (typeof trackTool === 'function') trackTool('isbn_generator');\n        isbnGenerate();\n        return;\n    }\n    if (e.target.closest('#isbn-print-btn')) {\n        if (typeof trackTool === 'function') trackTool('isbn_print');\n        isbnDownloadPDF();\n        return;\n    }\n});\n\ndocument.addEventListener('change', function(e) {\n    if (e.target.id === 'corp-history')          { isbnEvalHistory(); return; }\n    if (e.target.id === 'isbn-deposit-check')    { isbnEvalHistory(); return; }\n    if (e.target.id === 'isbn-consent-checkbox') { isbnSyncGate();    return; }\n});\n\n\/* \u2500\u2500 Init \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\n\/\/ CHANGED: no longer calls isbnRenderIdentityFields() here \u2014\n\/\/ fields exist in PHP-rendered HTML. Only need to: toggle entity\n\/\/ state, set today's date, and add the first book row.\ndocument.addEventListener('DOMContentLoaded', function() {\n    document.getElementById('lbl-individual').addEventListener('click', () => isbnSetEntity('INDIVIDUAL'));\n    document.getElementById('lbl-corporate').addEventListener('click',  () => isbnSetEntity('CORPORATE'));\n\n    isbnSetTodayDates();  \/\/ set today's date on both hidden\/visible date inputs\n    isbnAddBook();        \/\/ add initial book row (no entity switch needed \u2014 defaults correct)\n});\n\n})();\n<\/script>\n\n    <\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<style>.kt-accordion-id77409_cb296b-5d .kt-accordion-inner-wrap{column-gap:var(--global-kb-gap-md, 2rem);row-gap:10px;}.kt-accordion-id77409_cb296b-5d .kt-accordion-panel-inner{border-top:0px solid transparent;border-right:0px solid transparent;border-bottom:0px solid transparent;border-left:0px solid transparent;background:#ffffff;padding-top:var(--global-kb-spacing-sm, 1.5rem);padding-right:var(--global-kb-spacing-sm, 1.5rem);padding-bottom:var(--global-kb-spacing-sm, 1.5rem);padding-left:var(--global-kb-spacing-sm, 1.5rem);}.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:1px solid #f2f2f2;border-right:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;border-left:1px solid #f2f2f2;border-top-left-radius:6px;border-top-right-radius:6px;border-bottom-right-radius:6px;border-bottom-left-radius:6px;color:var(--global-palette3, #1A202C);padding-top:13px;padding-right:15px;padding-bottom:13px;padding-left:15px;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap .kt-blocks-accordion-icon-trigger:before{background:var(--global-palette3, #1A202C);}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-icon-trigger{background:var(--global-palette3, #1A202C);}.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d .kt-blocks-accordion-header:focus-visible{color:#444444;background:#eeeeee;border-top:1px solid #878787;border-right:1px solid #878787;border-bottom:1px solid #878787;border-left:1px solid #878787;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:before, body:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-blocks-accordion--visible .kt-blocks-accordion-icon-trigger:after, body:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:before{background:#444444;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger, body:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger{background:#444444;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:before, body:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:after, body:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:before{background:#eeeeee;}.kt-accordion-id77409_cb296b-5d .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{color:#ffffff;background:#BE530B;border-top:1px solid #BE530B;border-right:1px solid #BE530B;border-bottom:1px solid #BE530B;border-left:1px solid #BE530B;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:before{background:#ffffff;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger{background:#ffffff;}.kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id77409_cb296b-5d:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:before{background:#BE530B;}@media all and (max-width: 1024px){.kt-accordion-id77409_cb296b-5d .kt-accordion-panel-inner{border-top:0px solid transparent;border-right:0px solid transparent;border-bottom:0px solid transparent;border-left:0px solid transparent;}}@media all and (max-width: 1024px){.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:1px solid #f2f2f2;border-right:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;border-left:1px solid #f2f2f2;}}@media all and (max-width: 1024px){.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d .kt-blocks-accordion-header:focus-visible{border-top:1px solid #878787;border-right:1px solid #878787;border-bottom:1px solid #878787;border-left:1px solid #878787;}}@media all and (max-width: 1024px){.kt-accordion-id77409_cb296b-5d .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{border-top:1px solid #BE530B;border-right:1px solid #BE530B;border-bottom:1px solid #BE530B;border-left:1px solid #BE530B;}}@media all and (max-width: 767px){.kt-accordion-id77409_cb296b-5d .kt-accordion-inner-wrap{display:block;}.kt-accordion-id77409_cb296b-5d .kt-accordion-inner-wrap .kt-accordion-pane:not(:first-child){margin-top:10px;}.kt-accordion-id77409_cb296b-5d .kt-accordion-panel-inner{border-top:0px solid transparent;border-right:0px solid transparent;border-bottom:0px solid transparent;border-left:0px solid transparent;}.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:1px solid #f2f2f2;border-right:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;border-left:1px solid #f2f2f2;}.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id77409_cb296b-5d .kt-blocks-accordion-header:focus-visible{border-top:1px solid #878787;border-right:1px solid #878787;border-bottom:1px solid #878787;border-left:1px solid #878787;}.kt-accordion-id77409_cb296b-5d .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id77409_cb296b-5d > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{border-top:1px solid #BE530B;border-right:1px solid #BE530B;border-bottom:1px solid #BE530B;border-left:1px solid #BE530B;}}<\/style>\n<div class=\"wp-block-kadence-accordion alignnone\"><div class=\"kt-accordion-wrap kt-accordion-id77409_cb296b-5d kt-accordion-has-2-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-basic kt-accodion-icon-side-right\" style=\"max-width:none\"><div class=\"kt-accordion-inner-wrap\" data-allow-multiple-open=\"false\" data-start-open=\"none\">\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-1 kt-pane77409_0ec4df-0c\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\">How it Works<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\">\n<h2 class=\"wp-block-heading\">About the ISBN Letter Generator<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Applying for an International Standard Book Number (ISBN) in Nigeria requires a formally drafted application letter to the National Library of Nigeria (NLN). The <strong>ISBN Letter Generator<\/strong> simplifies this process by instantly creating a correctly formatted, print-ready request letter for both individual authors and corporate publishers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether you are figuring out how to get an ISBN in Nigeria for the first time or you are an established publisher managing a growing catalog, this free tool handles the administrative heavy lifting so you don&#8217;t have to worry about missing required information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tailored for Individuals and Publishers<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Individual Authors:<\/strong> Automatically format your personal details, contact information, and book metadata for all your titles at a time.<\/li>\n\n\n\n<li><strong>Corporate Entities:<\/strong> Generate official requests using your registered CAC or SMEDAN business details. The tool includes built-in compliance checks for previous legal deposit history, allowing established publishers to request more numbers.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Key Features<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>100% NLN Compliant:<\/strong> Pre-formatted with the exact bureaucratic routing, addresses, and salutations required by the National Library of Nigeria.<\/li>\n\n\n\n<li><strong>Digital Signatures:<\/strong> Choose to automatically render your name in a realistic digital signature font, or leave a perfectly sized blank space for a traditional wet-ink signature and company seal.<\/li>\n\n\n\n<li><strong>Print-Ready Output:<\/strong> Generates a clean, watermark-free A4 document that you can print directly from your browser to take to your nearest National Library branch.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Stop stressing over official formatting. Simply input your publication details, print your standardized letter, and take the next step in your Nigerian book publishing journey.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This tool is always updated with the latest rules and limitations governing ISBN issuance in Nigeria.<\/p>\n<\/div><\/div><\/div>\n<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Generate a free, National Library of Nigeria (NLN) compliant ISBN request letter instantly. Perfect for Nigerian authors and corporate publishers applying for ISBNs.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kb_optimizer_status":2,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[15],"tags":[13,12,14],"class_list":["post-77409","post","type-post","status-publish","format-standard","hentry","category-isbn-tools","tag-fast","tag-free","tag-isbn"],"acf":[],"_links":{"self":[{"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/posts\/77409","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/comments?post=77409"}],"version-history":[{"count":2,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/posts\/77409\/revisions"}],"predecessor-version":[{"id":77411,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/posts\/77409\/revisions\/77411"}],"wp:attachment":[{"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/media?parent=77409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/categories?post=77409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aceworldpgs.com\/tools\/wp-json\/wp\/v2\/tags?post=77409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}