{"id":2031,"date":"2026-08-15T18:54:37","date_gmt":"2026-08-15T11:54:37","guid":{"rendered":"https:\/\/aipnemaptma.org\/?page_id=2031"},"modified":"2026-08-15T19:09:41","modified_gmt":"2026-08-15T12:09:41","slug":"tes-iq","status":"publish","type":"page","link":"https:\/\/aipnemaptma.org\/en\/berita\/tes-iq\/","title":{"rendered":"Tes IQ"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2031\" class=\"elementor elementor-2031\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f7ea855 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f7ea855\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f980895\" data-id=\"f980895\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f3f0bed elementor-widget elementor-widget-html\" data-id=\"f3f0bed\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n<style>\n#tidiAipnema, #tidiAipnema *{box-sizing:border-box}\n#tidiAipnema{\n  --tn-navy:#06351e;\n  --tn-navy2:#094528;\n  --tn-magenta:#0f6b3d;\n  --tn-magenta2:#178957;\n  --tn-cyan:#3fa875;\n  --tn-sky:#effaf4;\n  --tn-green:#178957;\n  --tn-gold:#e7a91a;\n  --tn-red:#d64d5d;\n  --tn-ink:#1b2d47;\n  --tn-muted:#64748b;\n  --tn-line:#dde7f0;\n  --tn-bg:#f3f8f5;\n  --tn-white:#fff;\n  --tn-shadow:0 18px 48px rgba(9,69,40,.12);\n  --tn-radius:22px;\n  width:100%;\n  min-height:100vh;\n  margin:0;\n  color:var(--tn-ink);\n  font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Arial,sans-serif;\n  line-height:1.55;\n  background:\n    radial-gradient(circle at 5% 2%,rgba(63,168,117,.12),transparent 25rem),\n    radial-gradient(circle at 95% 7%,rgba(9,69,40,.10),transparent 28rem),\n    var(--tn-bg);\n}\n#tidiAipnema button,#tidiAipnema input,#tidiAipnema select{font:inherit}\n#tidiAipnema button{appearance:none}\n#tidiAipnema .tn-wrap{max-width:1240px;margin:0 auto;padding:24px 20px 52px}\n#tidiAipnema .tn-top{\n  display:flex;align-items:center;justify-content:space-between;gap:16px;\n  padding:16px 18px;background:rgba(255,255,255,.96);border:1px solid var(--tn-line);\n  border-radius:20px;box-shadow:0 10px 32px rgba(9,69,40,.08);\n  position:sticky;top:12px;z-index:50;backdrop-filter:blur(10px)\n}\n#tidiAipnema .tn-brand{display:flex;align-items:center;gap:13px;min-width:0}\n#tidiAipnema .tn-brand-logo{width:52px;height:52px;object-fit:contain}\n#tidiAipnema .tn-brand h1{margin:0;font-size:17px;color:var(--tn-navy);line-height:1.18}\n#tidiAipnema .tn-brand p{margin:3px 0 0;color:var(--tn-muted);font-size:11.5px}\n#tidiAipnema .tn-badgemark{\n  display:inline-flex;align-items:center;gap:7px;white-space:nowrap;padding:8px 11px;border-radius:999px;\n  background:#eff8f3;border:1px solid #cde7d8;color:#0b6036;font-weight:900;font-size:10px;\n  letter-spacing:.07em;text-transform:uppercase\n}\n#tidiAipnema .tn-badgemark:before{content:\"\";width:8px;height:8px;border-radius:50%;background:var(--tn-magenta)}\n#tidiAipnema .tn-card{background:#fff;border:1px solid var(--tn-line);border-radius:var(--tn-radius);box-shadow:var(--tn-shadow)}\n#tidiAipnema .tn-hero{display:grid;grid-template-columns:1.34fr .66fr;gap:22px;margin-top:24px}\n#tidiAipnema .tn-hero-main{\n  position:relative;overflow:hidden;padding:40px;\n  background:\n    linear-gradient(130deg,rgba(6,53,30,.98),rgba(9,69,40,.96) 55%,rgba(23,137,87,.90)),\n    #06351e;color:#fff;border:0\n}\n#tidiAipnema .tn-hero-main:after{\n  content:\"\";position:absolute;right:-65px;top:-85px;width:260px;height:260px;border-radius:50%;\n  background:radial-gradient(circle,rgba(255,255,255,.18),rgba(255,255,255,0) 68%)\n}\n#tidiAipnema .tn-eyebrow{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.14em;color:#c6f3d9}\n#tidiAipnema .tn-hero h2{margin:10px 0 0;font-size:clamp(31px,4vw,54px);line-height:1.05;max-width:830px;color:#fff}\n#tidiAipnema .tn-hero h2 span{color:#d8f7e4}\n#tidiAipnema .tn-lead{font-size:16.5px;max-width:800px;color:rgba(255,255,255,.86);margin:17px 0 0}\n#tidiAipnema .tn-badges{display:flex;flex-wrap:wrap;gap:9px;margin-top:23px}\n#tidiAipnema .tn-badge{padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);font-size:12px;font-weight:750;color:#fff}\n#tidiAipnema .tn-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:27px}\n#tidiAipnema .tn-btn{\n  border:0;border-radius:14px;padding:12px 17px;cursor:pointer;font-weight:850;\n  display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.18s ease;text-decoration:none\n}\n#tidiAipnema .tn-btn:hover{transform:translateY(-1px)}\n#tidiAipnema .tn-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}\n#tidiAipnema .tn-btn-primary{background:linear-gradient(135deg,var(--tn-magenta),var(--tn-magenta2));color:#fff;box-shadow:0 10px 22px rgba(194,24,115,.24)}\n#tidiAipnema .tn-btn-white{background:#fff;color:var(--tn-navy)}\n#tidiAipnema .tn-btn-ghost{background:#f8fbfe;color:#263b62;border:1px solid #d7e2ec}\n#tidiAipnema .tn-btn-danger{background:#fff3f4;color:#a93440;border:1px solid #ffd3da}\n#tidiAipnema .tn-side{padding:25px}\n#tidiAipnema .tn-side-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}\n#tidiAipnema .tn-side h3{margin:0;font-size:17px;color:var(--tn-navy)}\n#tidiAipnema .tn-unggul{width:60px;height:60px;object-fit:contain}\n#tidiAipnema .tn-dom-mini{display:grid;gap:8px}\n#tidiAipnema .tn-mini{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;padding:10px;border:1px solid #e5ebf2;border-radius:13px;background:#fafcfe}\n#tidiAipnema .tn-mini i{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-style:normal;font-weight:900;background:linear-gradient(135deg,#eef4ff,#eef8f2);color:var(--tn-magenta)}\n#tidiAipnema .tn-mini b{font-size:12px;color:#26385c}\n#tidiAipnema .tn-mini span{display:block;color:#78879a;font-size:10.5px;margin-top:1px}\n#tidiAipnema .tn-alert{margin-top:15px;border-left:4px solid var(--tn-gold);background:#fff8e5;color:#6e531c;padding:12px 13px;border-radius:12px;font-size:11.5px}\n#tidiAipnema .tn-info-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:18px}\n#tidiAipnema .tn-info{padding:18px}\n#tidiAipnema .tn-info .num{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#e7f3eb;color:var(--tn-magenta);font-weight:900}\n#tidiAipnema .tn-info strong{display:block;margin-top:10px;color:var(--tn-navy);font-size:13px}\n#tidiAipnema .tn-info small{display:block;color:var(--tn-muted);font-size:11px;margin-top:4px}\n\n#tidiAipnema .tn-panel{display:none;margin-top:24px}\n#tidiAipnema .tn-section-intro{padding:34px;text-align:center}\n#tidiAipnema .tn-section-icon{width:72px;height:72px;border-radius:22px;display:grid;place-items:center;margin:0 auto;background:linear-gradient(135deg,#e9f6ee,#eef8f2);color:var(--tn-magenta);font-size:29px;font-weight:900}\n#tidiAipnema .tn-section-intro h2{margin:15px 0 7px;color:var(--tn-navy);font-size:28px}\n#tidiAipnema .tn-section-intro p{max-width:720px;margin:0 auto;color:var(--tn-muted);font-size:14px}\n#tidiAipnema .tn-section-meta{display:flex;justify-content:center;flex-wrap:wrap;gap:9px;margin:18px 0}\n#tidiAipnema .tn-section-meta span{padding:7px 10px;border-radius:999px;background:#f6f9fc;border:1px solid #e2eaf1;font-size:11px;color:#5d7084;font-weight:750}\n\n#tidiAipnema .tn-test-grid{display:grid;grid-template-columns:minmax(0,1fr) 292px;gap:20px}\n#tidiAipnema .tn-question{padding:28px}\n#tidiAipnema .tn-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11.5px;color:var(--tn-muted);font-weight:800}\n#tidiAipnema .tn-progress{height:9px;background:#edf2f6;border-radius:999px;overflow:hidden;margin-top:10px}\n#tidiAipnema .tn-progress > div{height:100%;background:linear-gradient(90deg,var(--tn-navy2),var(--tn-magenta2));width:0;transition:.2s}\n#tidiAipnema .tn-domain-pill{display:inline-flex;padding:6px 10px;border-radius:999px;background:#eff8f3;color:#0b6036;border:1px solid #cbe5d5;font-size:11px;font-weight:900;margin-top:18px}\n#tidiAipnema .tn-qtitle{font-size:23px;line-height:1.34;color:var(--tn-navy);margin:12px 0 5px}\n#tidiAipnema .tn-qhelp{font-size:12px;color:var(--tn-muted)}\n#tidiAipnema .tn-stimulus{\n  min-height:125px;display:grid;place-items:center;text-align:center;padding:22px;margin:17px 0;\n  border:1px dashed #bfcfdf;border-radius:18px;background:linear-gradient(135deg,#fbfdff,#f4f7fb);\n  color:#17284a;font-size:clamp(23px,4vw,39px);font-weight:850;letter-spacing:.035em\n}\n#tidiAipnema .tn-options{display:grid;grid-template-columns:1fr 1fr;gap:11px}\n#tidiAipnema .tn-option{\n  border:1px solid #d9e3ed;background:#fff;color:#29415f;border-radius:14px;padding:13px 14px;cursor:pointer;\n  text-align:left;font-weight:730;transition:.15s;min-height:50px\n}\n#tidiAipnema .tn-option:hover{border-color:#7bbd96;background:#fff8fc}\n#tidiAipnema .tn-option.sel{border-color:var(--tn-magenta);box-shadow:inset 0 0 0 1px var(--tn-magenta);background:#eff8f3;color:#0b6036}\n#tidiAipnema .tn-letter{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:8px;margin-right:8px;background:#f1f5f9;color:#40566f;font-size:11px}\n#tidiAipnema .tn-nav{display:flex;justify-content:space-between;gap:10px;margin-top:20px}\n#tidiAipnema .tn-sidebar{padding:19px;height:max-content;position:sticky;top:108px}\n#tidiAipnema .tn-sidebar h4{margin:0;color:var(--tn-navy);font-size:13px}\n#tidiAipnema .tn-time{font-size:32px;line-height:1.1;color:var(--tn-navy2);font-weight:900;font-variant-numeric:tabular-nums;margin-top:4px}\n#tidiAipnema .tn-timecap{font-size:10px;color:var(--tn-muted)}\n#tidiAipnema .tn-rule{height:1px;background:#e7edf3;margin:15px 0}\n#tidiAipnema .tn-domain-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:10.5px;color:#64748b;margin:7px 0}\n#tidiAipnema .tn-domain-row b{color:#273c5d}\n#tidiAipnema .tn-section-timer{padding:9px 10px;border-radius:12px;background:#f7f9fc;border:1px solid #e3eaf1;margin-top:10px;font-size:10.5px;color:#607287}\n#tidiAipnema .tn-memory-seq{font-size:42px;letter-spacing:.15em;font-weight:950;color:var(--tn-navy)}\n#tidiAipnema .tn-key{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;font-size:14px;margin-bottom:14px}\n#tidiAipnema .tn-key span{padding:8px 10px;border-radius:10px;border:1px solid #dce5ed;background:#fff}\n#tidiAipnema .tn-speed-target{font-size:58px}\n\n#tidiAipnema .tn-result{display:none;margin-top:24px}\n#tidiAipnema .tn-result-hero{\n  display:grid;grid-template-columns:270px 1fr;gap:25px;padding:30px;border-radius:24px;\n  background:linear-gradient(130deg,var(--tn-navy),var(--tn-navy2) 54%,var(--tn-magenta));color:#fff;box-shadow:0 22px 50px rgba(17,19,63,.22)\n}\n#tidiAipnema .tn-ring{\n  width:205px;height:205px;border-radius:50%;display:grid;place-items:center;margin:auto;\n  background:conic-gradient(#cef1dc var(--ring,0%),rgba(255,255,255,.16) 0);position:relative\n}\n#tidiAipnema .tn-ring:after{content:\"\";position:absolute;inset:14px;border-radius:50%;background:#0b4a2d}\n#tidiAipnema .tn-ring-inner{position:relative;z-index:2;text-align:center}\n#tidiAipnema .tn-ring strong{display:block;font-size:50px;line-height:1}\n#tidiAipnema .tn-ring span{font-size:10.5px;opacity:.86}\n#tidiAipnema .tn-result-copy h2{margin:0;color:#fff;font-size:29px}\n#tidiAipnema .tn-result-copy p{margin:7px 0 0;color:rgba(255,255,255,.88)}\n#tidiAipnema .tn-category{display:inline-flex;margin-top:12px;padding:7px 11px;border-radius:999px;background:rgba(255,255,255,.13);font-weight:900;font-size:12px}\n#tidiAipnema .tn-result-note{margin-top:16px;padding:11px 13px;border-radius:12px;background:rgba(255,255,255,.11);font-size:11px;color:rgba(255,255,255,.86)}\n#tidiAipnema .tn-result-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:17px}\n#tidiAipnema .tn-result-actions .tn-btn{background:#fff;color:var(--tn-navy)}\n#tidiAipnema .tn-domain-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:17px}\n#tidiAipnema .tn-domain-card{padding:17px}\n#tidiAipnema .tn-domain-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px}\n#tidiAipnema .tn-domain-card-head b{font-size:12px;color:#26385a}\n#tidiAipnema .tn-domain-card-head strong{font-size:17px;color:var(--tn-magenta)}\n#tidiAipnema .tn-bar{height:8px;border-radius:999px;background:#edf2f5;overflow:hidden;margin-top:9px}\n#tidiAipnema .tn-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--tn-navy2),var(--tn-magenta2));border-radius:inherit}\n#tidiAipnema .tn-domain-card p{margin:7px 0 0;color:#718094;font-size:10.5px}\n#tidiAipnema .tn-details{padding:22px;margin-top:17px}\n#tidiAipnema .tn-details h3{margin:0 0 10px;color:var(--tn-navy);font-size:17px}\n#tidiAipnema .tn-details p{color:#5b6f82;font-size:13px}\n#tidiAipnema .tn-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n#tidiAipnema .tn-detail-box{padding:14px;border-radius:13px;background:#f8fafc;border:1px solid #e4eaf0}\n#tidiAipnema .tn-detail-box b{display:block;color:#283b5d;font-size:12px;margin-bottom:4px}\n#tidiAipnema .tn-detail-box span{font-size:11px;color:#697b8d}\n\n#tidiAipnema .tn-modal{position:fixed;inset:0;display:none;align-items:center;justify-content:center;padding:18px;background:rgba(10,14,44,.68);z-index:999999}\n#tidiAipnema .tn-modal.show{display:flex}\n#tidiAipnema .tn-modal-card{width:min(560px,100%);background:#fff;border-radius:22px;padding:25px;box-shadow:0 26px 75px rgba(0,0,0,.25)}\n#tidiAipnema .tn-modal-card h3{margin:0;color:var(--tn-navy)}\n#tidiAipnema .tn-modal-card p{color:#687b8c;font-size:12px}\n#tidiAipnema .tn-check{display:flex;align-items:flex-start;gap:9px;padding:12px;border:1px solid #e1e7ee;border-radius:12px;background:#fafcfe;margin-top:10px;font-size:11.5px;color:#4f6275}\n#tidiAipnema .tn-check input{margin-top:3px}\n#tidiAipnema .tn-field{margin-top:13px}\n#tidiAipnema .tn-field label{display:block;color:#354b68;font-size:11px;font-weight:850;margin-bottom:5px}\n#tidiAipnema .tn-field input,#tidiAipnema .tn-field select{width:100%;border:1px solid #cfdbe6;border-radius:11px;padding:11px 12px;outline:none;background:#fff}\n#tidiAipnema .tn-field input:focus,#tidiAipnema .tn-field select:focus{border-color:var(--tn-magenta);box-shadow:0 0 0 3px rgba(194,24,115,.08)}\n#tidiAipnema .tn-modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:17px}\n\n#tnPrintArea{display:none}\n.tn-a4{width:210mm;min-height:297mm;background:#fff;color:#18334a;padding:16mm 15mm;margin:0 auto;font-family:Arial,Helvetica,sans-serif;position:relative}\n.tn-cert{min-height:265mm;border:2.2mm solid #073b23;padding:9mm;display:flex;flex-direction:column;justify-content:space-between;background:linear-gradient(140deg,#fff 0%,#f1f8f4 52%,#f1faf5 100%)}\n.tn-cert-top{text-align:center}\n.tn-cert-logos{display:flex;justify-content:center;align-items:center;gap:7mm}\n.tn-cert-logos img{width:24mm;height:24mm;object-fit:contain}\n.tn-cert-kicker{font-size:9pt;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#596c82;margin-top:4mm}\n.tn-cert-title{font-size:26pt;line-height:1.05;color:#073b23;font-weight:850;margin:4mm 0 1mm}\n.tn-cert-sub{font-size:10.5pt;color:#697b8d}\n.tn-cert-name{font-family:Georgia,serif;font-size:24pt;font-weight:700;color:#163f2a;border-bottom:1px solid #b5c3d0;margin:13mm 0 4mm;padding-bottom:3mm}\n.tn-cert-label{font-size:9pt;text-transform:uppercase;letter-spacing:.12em;color:#6b7d8c}\n.tn-cert-score{font-size:44pt;line-height:1;color:#0f6b3d;font-weight:900;margin-top:2mm}\n.tn-cert-cat{font-size:12.5pt;font-weight:700;color:#273f61;margin-top:2mm}\n.tn-cert-foot{display:grid;grid-template-columns:1fr 1fr;gap:9mm;align-items:end;font-size:8.5pt;color:#607184}\n.tn-cert-sign{text-align:center}\n.tn-cert-line{border-top:1px solid #778999;margin-top:14mm;padding-top:2mm;color:#2f4763;font-weight:700}\n.tn-cert-disclaimer{font-size:7pt;line-height:1.45;color:#6b7e8f;background:#f4f7fa;padding:3mm 4mm;border-radius:2mm;margin-top:5mm}\n\n.tn-report-head{display:flex;justify-content:space-between;align-items:center;gap:8mm;border-bottom:1.2mm solid #0f6b3d;padding-bottom:4mm}\n.tn-report-brand{display:flex;align-items:center;gap:4mm}\n.tn-report-brand img{width:18mm;height:18mm;object-fit:contain}\n.tn-report-brand h2{margin:0;font-size:17pt;color:#073b23}\n.tn-report-brand p{margin:1mm 0 0;font-size:7.8pt;color:#6c7f91}\n.tn-report-code{text-align:right;font-size:7.5pt;color:#6d8090}\n.tn-report-summary{display:grid;grid-template-columns:1.12fr .88fr;gap:5mm;margin-top:6mm}\n.tn-report-box{border:1px solid #d8e1ea;border-radius:3mm;padding:4.5mm;background:#fbfcfe}\n.tn-report-box h3{margin:0 0 2.5mm;font-size:10.5pt;color:#1e4b33}\n.tn-report-score{font-size:32pt;line-height:1;font-weight:900;color:#0f6b3d}\n.tn-report-cat{font-weight:800;font-size:10pt;margin-top:1.5mm;color:#2e4362}\n.tn-report-table{width:100%;border-collapse:collapse;font-size:8pt}\n.tn-report-table th,.tn-report-table td{padding:2.1mm;border-bottom:1px solid #e4ebf1;text-align:left}\n.tn-report-table th{background:#f2f7f4;color:#4f6275}\n.tn-report-section{margin-top:6mm}\n.tn-report-section h3{font-size:10.5pt;color:#1e4b33;margin:0 0 2.5mm;border-left:3px solid #0f6b3d;padding-left:3mm}\n.tn-report-section p,.tn-report-section li{font-size:8.1pt;line-height:1.5;color:#465c70}\n.tn-rdomain{padding:2.8mm 3.5mm;border:1px solid #dde5ed;border-radius:2.5mm;margin:2.5mm 0}\n.tn-rdomain b{font-size:8.4pt;color:#2c5640}.tn-rdomain span{float:right;color:#0f6b3d;font-weight:800;font-size:8.4pt}\n.tn-rbar{clear:both;height:2mm;background:#e9eef3;border-radius:99px;overflow:hidden;margin-top:1.5mm}.tn-rbar i{display:block;height:100%;background:#0f6b3d}\n.tn-rtext{font-size:7.4pt;color:#687c8f;margin-top:1.5mm}\n.tn-report-footer{font-size:6.9pt;color:#718394;border-top:1px solid #dde5ec;margin-top:6mm;padding-top:2.5mm}\n\n@media(max-width:900px){\n  #tidiAipnema .tn-hero,#tidiAipnema .tn-test-grid,#tidiAipnema .tn-result-hero{grid-template-columns:1fr}\n  #tidiAipnema .tn-sidebar{position:relative;top:auto}\n  #tidiAipnema .tn-info-grid,#tidiAipnema .tn-domain-cards{grid-template-columns:1fr 1fr}\n}\n@media(max-width:620px){\n  #tidiAipnema .tn-wrap{padding:14px 10px 34px}\n  #tidiAipnema .tn-top{position:relative;top:auto;padding:12px}\n  #tidiAipnema .tn-brand-logo{width:44px;height:44px}\n  #tidiAipnema .tn-brand h1{font-size:13.5px}\n  #tidiAipnema .tn-brand p{display:none}\n  #tidiAipnema .tn-badgemark{font-size:8.5px;padding:7px 9px}\n  #tidiAipnema .tn-hero-main{padding:28px 21px}\n  #tidiAipnema .tn-side{padding:20px}\n  #tidiAipnema .tn-info-grid,#tidiAipnema .tn-domain-cards,#tidiAipnema .tn-options,#tidiAipnema .tn-detail-grid{grid-template-columns:1fr}\n  #tidiAipnema .tn-question{padding:19px}\n  #tidiAipnema .tn-qtitle{font-size:20px}\n  #tidiAipnema .tn-section-intro{padding:26px 18px}\n}\n\n#tidiAipnema .tn-total-clock-banner{\n  display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;\n  padding:12px 14px;margin-bottom:14px;border-radius:14px;\n  background:linear-gradient(135deg,#f4f7ff,#fff5fa);border:1px solid #e6ddeb\n}\n#tidiAipnema .tn-total-clock-banner strong{display:block;color:var(--tn-navy);font-size:12px}\n#tidiAipnema .tn-total-clock-banner span{display:block;color:var(--tn-muted);font-size:10px;margin-top:2px}\n#tidiAipnema .tn-total-clock-big{font-size:31px;line-height:1;font-weight:950;color:var(--tn-magenta);font-variant-numeric:tabular-nums}\n#tidiAipnema .tn-timed-pill{\n  display:none;margin-left:7px;padding:6px 10px;border-radius:999px;background:#edfaff;\n  color:#14758c;border:1px solid #ccebf4;font-size:11px;font-weight:900\n}\n#tidiAipnema .tn-timed-pill.on{display:inline-flex}\n#tidiAipnema .tn-countdown-box{\n  display:none;align-items:center;justify-content:space-between;gap:10px;\n  margin-top:12px;padding:10px 12px;border-radius:12px;background:#edf9fd;border:1px solid #cbe8f2;\n  color:#166d83;font-size:11px;font-weight:850\n}\n#tidiAipnema .tn-countdown-box.on{display:flex}\n#tidiAipnema .tn-countdown-box strong{font-size:25px;line-height:1;font-variant-numeric:tabular-nums}\n#tidiAipnema .tn-package-box{margin-top:10px;padding:10px;border-radius:12px;background:#f7f9fc;border:1px solid #e1e8ef}\n#tidiAipnema .tn-package-box strong{display:block;color:var(--tn-navy);font-size:11px}\n#tidiAipnema .tn-package-box span{display:block;color:#66798c;font-size:9.5px;margin-top:2px}\n#tidiAipnema .tn-question.tn-timeout{border:2px solid #c53b46!important;background:#fff1f3!important;animation:tnShake .25s linear 2}\n#tidiAipnema .tn-question.tn-timeout .tn-stimulus{border-color:#ed8e9a!important;background:#ffecef!important;color:#a73043!important}\n#tidiAipnema .tn-question.tn-timeout .tn-countdown-box{background:#ffe5e9!important;border-color:#ee98a5!important;color:#a82c40!important}\n#tidiAipnema .tn-option.locked{cursor:not-allowed!important;background:#fff0f2!important;border-color:#ee9aa6!important;color:#aa4252!important;opacity:.72}\n@keyframes tnShake{0%{transform:translateX(0)}25%{transform:translateX(-4px)}50%{transform:translateX(4px)}75%{transform:translateX(-3px)}100%{transform:translateX(0)}}\n#tidiAipnema .tn-doc-modal-card{width:min(980px,96vw);padding:16px}\n#tidiAipnema .tn-doc-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px}\n#tidiAipnema .tn-doc-tools>div{display:flex;gap:8px;flex-wrap:wrap}\n#tidiAipnema .tn-doc-tools strong{color:var(--tn-navy)}\n#tidiAipnema .tn-preview-scroll{background:#d9dce2;border-radius:13px;padding:16px;overflow:auto;max-height:78vh}\n#tidiAipnema .tn-preview-scroll .tn-a4{box-shadow:0 12px 36px rgba(0,0,0,.18);margin:0 auto 18px}\n#tidiAipnema .tn-cert{position:relative;overflow:hidden}\n#tidiAipnema .tn-cert:before{content:\"\";position:absolute;width:85mm;height:85mm;border-radius:50%;right:-36mm;top:-37mm;background:radial-gradient(circle,rgba(194,24,115,.13),transparent 68%)}\n#tidiAipnema .tn-cert:after{content:\"\";position:absolute;width:95mm;height:95mm;border-radius:50%;left:-42mm;bottom:-44mm;background:radial-gradient(circle,rgba(40,184,214,.11),transparent 68%)}\n#tidiAipnema .tn-cert-top,#tidiAipnema .tn-cert-foot,#tidiAipnema .tn-cert-disclaimer{position:relative;z-index:1}\n#tidiAipnema .tn-report-page2{page-break-before:always}\n@media(max-width:620px){\n  #tidiAipnema .tn-total-clock-banner{grid-template-columns:1fr}\n  #tidiAipnema .tn-total-clock-big{text-align:left}\n  #tidiAipnema .tn-doc-tools{align-items:flex-start;flex-direction:column}\n}\n\n@page{size:A4 portrait;margin:0}\n@media print{\n  body *{visibility:hidden!important}\n  #tnPrintArea,#tnPrintArea *{visibility:visible!important}\n  #tnPrintArea{display:block!important;position:absolute!important;left:0!important;top:0!important;width:210mm!important}\n  .tn-a4{page-break-after:always!important;margin:0!important;box-shadow:none!important}\n  .tn-a4:last-child{page-break-after:auto!important}\n}\n\n#tidiAipnema .tn-aipnema-brandmark{\n  width:54px;height:54px;flex:0 0 54px;border-radius:17px;display:grid;place-items:center;\n  background:linear-gradient(145deg,#0d5a35,#094528 65%,#06351e);color:#fff;\n  box-shadow:0 9px 22px rgba(9,69,40,.22);position:relative;overflow:hidden\n}\n#tidiAipnema .tn-aipnema-brandmark:before,#tidiAipnema .tn-aipnema-brandmark:after{\n  content:\"\";position:absolute;border:1px solid rgba(255,255,255,.22);transform:rotate(45deg)\n}\n#tidiAipnema .tn-aipnema-brandmark:before{width:35px;height:35px}\n#tidiAipnema .tn-aipnema-brandmark:after{width:25px;height:25px}\n#tidiAipnema .tn-aipnema-brandmark span{font:900 25px Georgia,serif;position:relative;z-index:2}\n#tidiAipnema .tn-aipnema-mini-mark{width:72px;height:58px;border-radius:15px;background:linear-gradient(145deg,#eff8f3,#e2f2e9);border:1px solid #cbe4d5;display:grid;grid-template-columns:24px 1fr;align-items:center;padding:8px;color:#094528}\n#tidiAipnema .tn-aipnema-mini-mark b{width:25px;height:25px;border-radius:8px;background:#094528;color:#fff;display:grid;place-items:center;font-family:Georgia,serif}\n#tidiAipnema .tn-aipnema-mini-mark span{font-size:8px;font-weight:900;letter-spacing:.05em;text-align:center}\n#tidiAipnema .tn-hero-main{box-shadow:inset 0 0 0 1px rgba(255,255,255,.06)}\n#tidiAipnema .tn-hero-main:before{content:\"\";position:absolute;inset:auto 22px 18px auto;width:105px;height:105px;opacity:.09;background:repeating-conic-gradient(from 45deg,#fff 0 7.5deg,transparent 7.5deg 15deg);border-radius:50%}\n#tidiAipnema .tn-total-clock-banner{background:linear-gradient(135deg,#f0f8f3,#f8fcfa)!important;border-color:#d2e8db!important}\n#tidiAipnema .tn-package-box{background:#f1f8f4!important;border-color:#d5e8dd!important}\n#tidiAipnema .tn-result-hero{background:linear-gradient(130deg,#06351e,#094528 58%,#178957)!important}\n#tidiAipnema .tn-ring:after{background:#0a4a2c!important}\n#tidiAipnema .tn-cert{border-color:#094528!important;background:linear-gradient(145deg,#fff 0%,#f2faf5 56%,#edf8f2 100%)!important;position:relative;overflow:hidden}\n#tidiAipnema .tn-cert:before{content:\"\";position:absolute;width:88mm;height:88mm;border:1mm solid rgba(9,69,40,.055);transform:rotate(45deg);right:-48mm;top:-48mm}\n#tidiAipnema .tn-cert:after{content:\"\";position:absolute;width:82mm;height:82mm;border:1mm solid rgba(9,69,40,.045);transform:rotate(45deg);left:-46mm;bottom:-45mm}\n#tidiAipnema .tn-cert-top,#tidiAipnema .tn-cert-foot,#tidiAipnema .tn-cert-disclaimer{position:relative;z-index:2}\n#tidiAipnema .tn-print-aipnema-logo{display:flex;justify-content:center;align-items:center;gap:4mm;margin-bottom:2mm;color:#094528}\n#tidiAipnema .tn-print-aipnema-logo strong{display:block;font-size:17pt;letter-spacing:.08em;line-height:1}\n#tidiAipnema .tn-print-aipnema-logo span{display:block;font-size:7.2pt;letter-spacing:.08em;margin-top:1.5mm;color:#587565}\n#tidiAipnema .tn-print-seal,#tidiAipnema .tn-report-seal{display:grid;place-items:center;background:#094528;color:#fff;font-family:Georgia,serif;font-weight:900;position:relative;overflow:hidden}\n#tidiAipnema .tn-print-seal{width:22mm;height:22mm;border-radius:5mm;font-size:20pt}\n#tidiAipnema .tn-print-seal:before,#tidiAipnema .tn-report-seal:before{content:\"\";position:absolute;width:65%;height:65%;border:1px solid rgba(255,255,255,.35);transform:rotate(45deg)}\n#tidiAipnema .tn-report-seal{width:18mm;height:18mm;border-radius:4mm;font-size:15pt;flex:0 0 18mm}\n#tidiAipnema .tn-report-head{border-bottom-color:#094528!important}\n#tidiAipnema .tn-report-section h3{border-left-color:#178957!important}\n#tidiAipnema .mini-bar i{background:#178957!important}\n#tidiAipnema .tn-report-score{color:#0f6b3d!important}\n#tidiAipnema .tn-cert-score{color:#0f6b3d!important}\n@media(max-width:620px){#tidiAipnema .tn-aipnema-brandmark{width:44px;height:44px;flex-basis:44px;border-radius:13px}#tidiAipnema .tn-aipnema-brandmark span{font-size:21px}}\n\n\n\/* ===== AIPNEMA FULL-WIDTH HEADER + OFFICIAL LOGO + FOOTER ===== *\/\n#tidiAipnema .tn-top{\n  width:100%;max-width:none;margin:0;padding:0;border-radius:0;\n  border-left:0;border-right:0;position:sticky;top:0;\n  background:rgba(255,255,255,.97);box-shadow:0 8px 28px rgba(9,69,40,.10)\n}\n#tidiAipnema .tn-top-inner{\n  width:100%;max-width:1240px;margin:0 auto;padding:14px 20px;\n  display:flex;align-items:center;justify-content:space-between;gap:16px\n}\n#tidiAipnema .tn-aipnema-logo{\n  width:58px;height:58px;flex:0 0 58px;object-fit:contain;display:block;\n  background:#fff;border-radius:14px;padding:3px;border:1px solid #dbe9e1;\n  box-shadow:0 8px 20px rgba(9,69,40,.12)\n}\n#tidiAipnema .tn-aipnema-mini-logo{\n  width:66px;height:66px;object-fit:contain;display:block;background:#fff;\n  border:1px solid #d6e8dd;border-radius:14px;padding:4px\n}\n#tidiAipnema .tn-site-footer{\n  width:100%;margin:34px 0 0;color:#fff;\n  background:linear-gradient(135deg,#06351e 0%,#094528 58%,#0f6b3d 100%);\n  position:relative;overflow:hidden\n}\n#tidiAipnema .tn-site-footer:before{\n  content:\"\";position:absolute;width:260px;height:260px;right:-100px;top:-120px;border-radius:50%;\n  background:radial-gradient(circle,rgba(255,255,255,.11),transparent 67%)\n}\n#tidiAipnema .tn-footer-inner{\n  max-width:1240px;margin:0 auto;padding:30px 20px 24px;\n  display:grid;grid-template-columns:1.35fr .65fr;gap:28px;align-items:center;position:relative;z-index:1\n}\n#tidiAipnema .tn-footer-brand{display:flex;align-items:center;gap:16px}\n#tidiAipnema .tn-footer-logo{\n  width:76px;height:76px;object-fit:contain;background:#fff;border-radius:18px;padding:5px;\n  box-shadow:0 10px 26px rgba(0,0,0,.16)\n}\n#tidiAipnema .tn-footer-brand h3{margin:0;color:#fff;font-size:18px;line-height:1.25}\n#tidiAipnema .tn-footer-brand p{margin:6px 0 0;color:rgba(255,255,255,.76);font-size:11.5px;max-width:720px}\n#tidiAipnema .tn-footer-tagline{margin-top:8px;color:#d9f4e4;font-size:11px;font-weight:850;letter-spacing:.08em;text-transform:uppercase}\n#tidiAipnema .tn-footer-action{text-align:right}\n#tidiAipnema .tn-footer-action p{margin:0 0 10px;color:rgba(255,255,255,.73);font-size:11px}\n#tidiAipnema .tn-footer-btn{\n  display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 17px;border-radius:13px;\n  background:#fff;color:#094528!important;text-decoration:none!important;font-weight:900;font-size:12px;\n  box-shadow:0 10px 24px rgba(0,0,0,.14);transition:.18s\n}\n#tidiAipnema .tn-footer-btn:hover{transform:translateY(-1px);background:#f2fbf6;color:#06351e!important}\n#tidiAipnema .tn-footer-bottom{\n  border-top:1px solid rgba(255,255,255,.13);position:relative;z-index:1\n}\n#tidiAipnema .tn-footer-bottom-inner{\n  max-width:1240px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;gap:14px;\n  color:rgba(255,255,255,.62);font-size:9.5px\n}\n#tidiAipnema .tn-print-official-logo{width:23mm;height:23mm;object-fit:contain;display:block}\n#tidiAipnema .tn-report-official-logo{width:18mm;height:18mm;object-fit:contain;display:block;flex:0 0 18mm}\n@media(max-width:700px){\n  #tidiAipnema .tn-top-inner{padding:11px 12px}\n  #tidiAipnema .tn-aipnema-logo{width:48px;height:48px;flex-basis:48px}\n  #tidiAipnema .tn-footer-inner{grid-template-columns:1fr;padding:25px 16px 20px}\n  #tidiAipnema .tn-footer-action{text-align:left}\n  #tidiAipnema .tn-footer-logo{width:64px;height:64px}\n  #tidiAipnema .tn-footer-bottom-inner{padding:11px 16px;flex-direction:column;align-items:flex-start}\n}\n\n<\/style>\n\n<div id=\"tidiAipnema\">\n  <header class=\"tn-top\">\n    <div class=\"tn-top-inner\">\n      <div class=\"tn-brand\">\n        <img decoding=\"async\" class=\"tn-aipnema-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\">\n        <div>\n          <h1>Tes Inteligensi Dewasa Indonesia<\/h1>\n          <p>Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah \u2022 Sinergi \u2013 Unggul \u2013 Setara<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"tn-badgemark\">AIPNEMA \u2022 Adult v2.0<\/div>\n    <\/div>\n  <\/header>\n\n  <div class=\"tn-wrap\">\n\n    <section id=\"tnIntro\">\n      <div class=\"tn-hero\">\n        <div class=\"tn-card tn-hero-main\">\n          <div class=\"tn-eyebrow\">AIPNEMA Digital Assessment \u2022 Adult 18\u201364<\/div>\n          <h2>Ukur profil kemampuan kognitif secara <span>terstruktur dan interaktif.<\/span><\/h2>\n          <p class=\"tn-lead\">\n            TIDI Adult v2.0 AIPNEMA Edition menyajikan enam domain kemampuan kognitif melalui tugas\n            penalaran, verbal, numerik, visual-spasial, memori kerja, dan kecepatan pemrosesan.\n          <\/p>\n          <div class=\"tn-badges\">\n            <span class=\"tn-badge\"><b>25<\/b> kombinasi paket<\/span>\n            <span class=\"tn-badge\"><b>6<\/b> domain<\/span>\n            <span class=\"tn-badge\"><b>118<\/b> respons\/sesi<\/span>\n            <span class=\"tn-badge\">Timer & timeout lock<\/span>\n          <\/div>\n          <div class=\"tn-actions\">\n            <button class=\"tn-btn tn-btn-white\" id=\"tnStart\">Mulai Tes<\/button>\n            <button class=\"tn-btn tn-btn-primary\" id=\"tnGuide\">Petunjuk Tes<\/button>\n          <\/div>\n        <\/div>\n\n        <aside class=\"tn-card tn-side\">\n          <div class=\"tn-side-head\">\n            <h3>Domain yang dinilai<\/h3>\n            <img decoding=\"async\" class=\"tn-aipnema-mini-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\">\n          <\/div>\n          <div class=\"tn-dom-mini\">\n            <div class=\"tn-mini\"><i>F<\/i><div><b>Penalaran Fluid<\/b><span>Pola, aturan, deduksi abstrak<\/span><\/div><\/div>\n            <div class=\"tn-mini\"><i>V<\/i><div><b>Pemahaman Verbal<\/b><span>Analogi dan klasifikasi konsep<\/span><\/div><\/div>\n            <div class=\"tn-mini\"><i>Q<\/i><div><b>Penalaran Kuantitatif<\/b><span>Deret dan relasi kuantitas<\/span><\/div><\/div>\n            <div class=\"tn-mini\"><i>S<\/i><div><b>Visual-Spasial<\/b><span>Rotasi dan orientasi ruang<\/span><\/div><\/div>\n            <div class=\"tn-mini\"><i>M<\/i><div><b>Memori Kerja<\/b><span>Menyimpan dan memanipulasi informasi<\/span><\/div><\/div>\n            <div class=\"tn-mini\"><i>P<\/i><div><b>Kecepatan Pemrosesan<\/b><span>Akurasi dalam batas waktu<\/span><\/div><\/div>\n          <\/div>\n          <div class=\"tn-alert\">\n            <b>Status psikometrik:<\/b> ini adalah versi website final untuk penggunaan pengembangan\/self-assessment.\n            Skor IQ yang ditampilkan adalah <b>estimasi provisional<\/b>, bukan skor IQ klinis atau norma nasional.\n          <\/div>\n        <\/aside>\n      <\/div>\n\n      <div class=\"tn-info-grid\">\n        <div class=\"tn-card tn-info\"><div class=\"num\">1<\/div><strong>Siapkan kondisi<\/strong><small>Gunakan perangkat stabil, tempat tenang, dan kerjakan tanpa bantuan.<\/small><\/div>\n        <div class=\"tn-card tn-info\"><div class=\"num\">2<\/div><strong>Paket otomatis berbeda<\/strong><small>Setiap kelompok usia memiliki 5 paket. Retest menghindari paket terakhir pada browser yang sama.<\/small><\/div>\n        <div class=\"tn-card tn-info\"><div class=\"num\">3<\/div><strong>Timer terlihat jelas<\/strong><small>Waktu total selalu tampil. Tugas bertimer memiliki countdown dan terkunci saat waktu habis.<\/small><\/div>\n        <div class=\"tn-card tn-info\"><div class=\"num\">4<\/div><strong>Preview dokumen A4<\/strong><small>Sertifikat dan report portrait ditampilkan sebagai preview sebelum dicetak atau disimpan PDF.<\/small><\/div>\n      <\/div>\n    <\/section>\n\n    <section id=\"tnSectionIntro\" class=\"tn-panel\">\n      <div class=\"tn-card tn-section-intro\">\n        <div class=\"tn-section-icon\" id=\"tnSectionIcon\">F<\/div>\n        <h2 id=\"tnSectionTitle\">Penalaran Fluid<\/h2>\n        <p id=\"tnSectionDesc\"><\/p>\n        <div class=\"tn-section-meta\" id=\"tnSectionMeta\"><\/div>\n        <button class=\"tn-btn tn-btn-primary\" id=\"tnBeginSection\">Mulai Bagian<\/button>\n      <\/div>\n    <\/section>\n\n    <section id=\"tnTest\" class=\"tn-panel\">\n      <div class=\"tn-test-grid\">\n        <div class=\"tn-card tn-question\" id=\"tnQuestionCard\">\n          <div class=\"tn-total-clock-banner\">\n            <div><strong>Waktu pengerjaan seluruh tes<\/strong><span>Timer berjalan sejak tes dimulai dan tidak berhenti saat berpindah bagian.<\/span><\/div>\n            <div class=\"tn-total-clock-big\" id=\"tnTopTimer\">00:00<\/div>\n          <\/div>\n          <div class=\"tn-progress-head\">\n            <span id=\"tnProgressText\">Soal 1<\/span>\n            <span id=\"tnAnsweredText\">0 dijawab<\/span>\n          <\/div>\n          <div class=\"tn-progress\"><div id=\"tnProgressBar\"><\/div><\/div>\n          <div>\n            <span class=\"tn-domain-pill\" id=\"tnDomainPill\">Penalaran Fluid<\/span>\n            <span class=\"tn-timed-pill\" id=\"tnTimedPill\">\u23f1 Soal bertimer<\/span>\n          <\/div>\n          <div class=\"tn-qtitle\" id=\"tnQTitle\"><\/div>\n          <div class=\"tn-qhelp\" id=\"tnQHelp\"><\/div>\n          <div class=\"tn-countdown-box\" id=\"tnCountdownBox\"><span id=\"tnCountdownLabel\">Waktu tersisa<\/span><strong id=\"tnCountdown\">00<\/strong><\/div>\n          <div class=\"tn-stimulus\" id=\"tnStimulus\"><\/div>\n          <div class=\"tn-options\" id=\"tnOptions\"><\/div>\n          <div class=\"tn-nav\">\n            <button class=\"tn-btn tn-btn-ghost\" id=\"tnPrev\">\u2190 Sebelumnya<\/button>\n            <button class=\"tn-btn tn-btn-primary\" id=\"tnNext\">Berikutnya \u2192<\/button>\n          <\/div>\n        <\/div>\n\n        <aside class=\"tn-card tn-sidebar\">\n          <h4>Waktu Total<\/h4>\n          <div class=\"tn-time\" id=\"tnTimer\">00:00<\/div>\n          <div class=\"tn-timecap\">waktu sejak tes dimulai<\/div>\n          <div class=\"tn-package-box\"><strong id=\"tnPackageLabel\">Paket \u2014<\/strong><span id=\"tnAgeLabel\"><\/span><\/div>\n          <div class=\"tn-section-timer\" id=\"tnSectionTimer\">Bagian aktif: \u2014<\/div>\n          <div class=\"tn-rule\"><\/div>\n          <h4>Progres Domain<\/h4>\n          <div id=\"tnDomainProgress\"><\/div>\n          <div class=\"tn-rule\"><\/div>\n          <button class=\"tn-btn tn-btn-danger\" id=\"tnEnd\" style=\"width:100%\">Akhiri Tes<\/button>\n        <\/aside>\n      <\/div>\n    <\/section>\n\n    <section id=\"tnResult\" class=\"tn-result\">\n      <div class=\"tn-result-hero\">\n        <div class=\"tn-ring\" id=\"tnRing\">\n          <div class=\"tn-ring-inner\">\n            <strong id=\"tnIQ\">--<\/strong>\n            <span>Estimasi IQ \u2022 Provisional<\/span>\n          <\/div>\n        <\/div>\n        <div class=\"tn-result-copy\">\n          <h2>Hasil TIDI Adult v2.0<\/h2>\n          <p id=\"tnResultSummary\"><\/p>\n          <div class=\"tn-category\" id=\"tnCategory\"><\/div>\n          <div class=\"tn-result-note\">\n            Hasil ini merupakan estimasi performa pada TIDI AIPNEMA Edition. Sampai norma populasi Indonesia,\n            validitas, reliabilitas, DIF\/fairness, dan standard error pengukuran diselesaikan, skor tidak boleh\n            diperlakukan sebagai IQ klinis\/diagnostik.\n          <\/div>\n          <div class=\"tn-result-actions\">\n            <button class=\"tn-btn\" id=\"tnCert\">Tampilkan Sertifikat<\/button>\n            <button class=\"tn-btn\" id=\"tnReport\">Tampilkan Report<\/button>\n            <button class=\"tn-btn\" id=\"tnRetry\">Kerjakan Ulang<\/button>\n          <\/div>\n        <\/div>\n      <\/div>\n      <div class=\"tn-domain-cards\" id=\"tnDomainCards\"><\/div>\n      <div class=\"tn-card tn-details\">\n        <h3>Interpretasi Profil<\/h3>\n        <p id=\"tnNarrative\"><\/p>\n        <div class=\"tn-detail-grid\" id=\"tnDetailGrid\"><\/div>\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <footer class=\"tn-site-footer\">\n    <div class=\"tn-footer-inner\">\n      <div class=\"tn-footer-brand\">\n        <img decoding=\"async\" class=\"tn-footer-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\">\n        <div>\n          <h3>Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah<\/h3>\n          <p>TIDI AIPNEMA Edition merupakan bagian dari pengembangan ekosistem pembelajaran digital untuk mendukung inovasi, literasi, dan penguatan pendidikan keperawatan di lingkungan PTMA.<\/p>\n          <div class=\"tn-footer-tagline\">Sinergi \u2022 Unggul \u2022 Setara<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"tn-footer-action\">\n        <p>Kembali ke pusat pembelajaran dan layanan digital AIPNEMA.<\/p>\n        <a class=\"tn-footer-btn\" href=\"https:\/\/aipnemaptma.org\/aipnema-learning\/\">\u2190 Kembali ke AIPNEMA Learning<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"tn-footer-bottom\">\n      <div class=\"tn-footer-bottom-inner\">\n        <span>\u00a9 AIPNEMA \u2022 Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah<\/span>\n        <span>TIDI Adult v2.0 \u2022 AIPNEMA Digital Assessment<\/span>\n      <\/div>\n    <\/div>\n  <\/footer>\n\n  <div class=\"tn-modal\" id=\"tnConsentModal\">\n    <div class=\"tn-modal-card\">\n      <h3>Persetujuan & kesiapan tes<\/h3>\n      <p>Pastikan Anda memahami status penggunaan TIDI sebelum memulai.<\/p>\n      <label class=\"tn-check\"><input type=\"checkbox\" id=\"tnAdultCheck\"> <span>Saya berusia 18\u201364 tahun dan mengerjakan tes ini secara mandiri.<\/span><\/label>\n      <label class=\"tn-check\"><input type=\"checkbox\" id=\"tnUnderstandCheck\"> <span>Saya memahami bahwa skor yang ditampilkan saat ini adalah estimasi provisional\/self-assessment dan bukan diagnosis psikologis.<\/span><\/label>\n      <div class=\"tn-field\">\n        <label>Kelompok usia (untuk informasi sesi)<\/label>\n        <select id=\"tnAgeBand\">\n          <option value=\"\">Pilih kelompok usia<\/option>\n          <option value=\"A1\">18\u201324 tahun<\/option><option value=\"A2\">25\u201334 tahun<\/option><option value=\"A3\">35\u201344 tahun<\/option>\n          <option value=\"A4\">45\u201354 tahun<\/option><option value=\"A5\">55\u201364 tahun<\/option>\n        <\/select>\n      <\/div>\n      <div class=\"tn-modal-actions\">\n        <button class=\"tn-btn tn-btn-ghost\" id=\"tnConsentCancel\">Batal<\/button>\n        <button class=\"tn-btn tn-btn-primary\" id=\"tnConsentGo\">Lanjutkan<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"tn-modal\" id=\"tnNameModal\">\n    <div class=\"tn-modal-card\">\n      <h3>Identitas dokumen hasil<\/h3>\n      <p>Masukkan nama lengkap yang akan tercetak pada sertifikat\/report.<\/p>\n      <div class=\"tn-field\">\n        <label>Nama lengkap<\/label>\n        <input type=\"text\" id=\"tnFullName\" maxlength=\"80\" autocomplete=\"name\" placeholder=\"Masukkan nama lengkap\">\n      <\/div>\n      <div class=\"tn-modal-actions\">\n        <button class=\"tn-btn tn-btn-ghost\" id=\"tnNameCancel\">Batal<\/button>\n        <button class=\"tn-btn tn-btn-primary\" id=\"tnNameGo\">Lanjutkan<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n\n  <div class=\"tn-modal tn-doc-modal\" id=\"tnDocModal\">\n    <div class=\"tn-modal-card tn-doc-modal-card\">\n      <div class=\"tn-doc-tools\">\n        <strong id=\"tnDocTitle\">Preview Dokumen<\/strong>\n        <div>\n          <button class=\"tn-btn tn-btn-ghost\" id=\"tnDocClose\">Tutup<\/button>\n          <button class=\"tn-btn tn-btn-primary\" id=\"tnDocPrint\">Cetak \/ Simpan PDF<\/button>\n        <\/div>\n      <\/div>\n      <div class=\"tn-preview-scroll\"><div id=\"tnPreview\"><\/div><\/div>\n    <\/div>\n  <\/div>\n\n  <div id=\"tnPrintArea\"><\/div>\n<\/div>\n\n<script>\n(function(){\n\"use strict\";\nconst ROOT=document.getElementById(\"tidiAipnema\"); if(!ROOT)return;\nconst $=s=>ROOT.querySelector(s), $$=s=>Array.from(ROOT.querySelectorAll(s));\nconst SESSION_KEY=\"tidi_aipnema_v2_session\";\nconst HISTORY_KEY=\"tidi_aipnema_v2_package_history\";\n\nconst AGE={\n A1:{label:\"18\u201324 tahun\",mem:[4,7]},\n A2:{label:\"25\u201334 tahun\",mem:[4,7]},\n A3:{label:\"35\u201344 tahun\",mem:[4,7]},\n A4:{label:\"45\u201354 tahun\",mem:[4,6]},\n A5:{label:\"55\u201364 tahun\",mem:[4,6]}\n};\nconst D={\n fluid:{name:\"Penalaran Fluid\",icon:\"F\",desc:\"Menilai kemampuan menemukan pola, aturan, transformasi, dan hubungan abstrak.\",meta:[\"12 soal\",\"Paket & urutan dinamis\",\"Tanpa kalkulator\"]},\n verbal:{name:\"Pemahaman Verbal\",icon:\"V\",desc:\"Menilai analogi, hubungan makna, klasifikasi, dan abstraksi konsep.\",meta:[\"12 soal\",\"Kosakata umum\",\"Urutan diacak\"]},\n quantitative:{name:\"Penalaran Kuantitatif\",icon:\"Q\",desc:\"Menilai deret, rasio, proporsi, dan relasi kuantitatif.\",meta:[\"12 soal\",\"Tanpa kalkulator\",\"Urutan diacak\"]},\n spatial:{name:\"Visual-Spasial\",icon:\"S\",desc:\"Menilai rotasi, orientasi, cermin, dan posisi relatif.\",meta:[\"12 soal\",\"Perhatikan arah\",\"Urutan diacak\"]},\n memory:{name:\"Memori Kerja\",icon:\"M\",desc:\"Stimulus tampil 4 detik, kemudian tersedia 10 detik untuk menjawab.\",meta:[\"10 tugas\",\"Stimulus 4 detik\",\"Jawaban 10 detik\"]},\n speed:{name:\"Kecepatan Pemrosesan\",icon:\"P\",desc:\"Mencocokkan simbol dengan kode dalam batas waktu 75 detik.\",meta:[\"60 target\",\"75 detik\",\"Timeout otomatis\"]}\n};\nconst ORDER=[\"fluid\",\"verbal\",\"quantitative\",\"spatial\",\"memory\",\"speed\"];\nconst SYMBOL_SETS=[[\"\u25c6\",\"\u25cf\",\"\u25b2\",\"\u25a0\"],[\"\u25c7\",\"\u25cb\",\"\u25b3\",\"\u25a1\"],[\"\u2605\",\"\u25cf\",\"\u25c6\",\"\u25b2\"],[\"\u25a0\",\"\u25cf\",\"\u25c7\",\"\u25b2\"],[\"\u25c6\",\"\u25cb\",\"\u25b2\",\"\u25a1\"]];\n\nconst VERBAL_POOL=[\n [\"Burung : Terbang = Ikan : ...\",[\"Berlari\",\"Berenang\",\"Melompat\",\"Merayap\"],1],\n [\"Dokter : Rumah Sakit = Guru : ...\",[\"Sekolah\",\"Perpustakaan\",\"Kantor\",\"Laboratorium\"],0],\n [\"Apel \u2014 Jeruk \u2014 Mangga \u2014 Wortel\",[\"Apel\",\"Jeruk\",\"Mangga\",\"Wortel\"],3],\n [\"Mata : Melihat\",[\"Telinga : Mendengar\",\"Hidung : Berjalan\",\"Tangan : Berpikir\",\"Kaki : Membaca\"],0],\n [\"Sinonim kata ESENSIAL adalah ...\",[\"Tambahan\",\"Pokok\",\"Sementara\",\"Jarang\"],1],\n [\"Benih : Tanaman = Telur : ...\",[\"Sarang\",\"Burung\",\"Bulu\",\"Pakan\"],1],\n [\"Pilih pasangan sebab\u2013akibat paling langsung.\",[\"Api : Panas\",\"Buku : Meja\",\"Kaca : Jendela\",\"Sepatu : Kaki\"],0],\n [\"Kubus \u2014 Bola \u2014 Kerucut\",[\"Warna\",\"Bangun ruang\",\"Bilangan\",\"Arah\"],1],\n [\"Kunci : Membuka = Pensil : ...\",[\"Menghapus\",\"Menulis\",\"Membaca\",\"Mengukur\"],1],\n [\"Lawan kata EKSPLISIT adalah ...\",[\"Jelas\",\"Tersurat\",\"Implisit\",\"Tegas\"],2],\n [\"Halaman : Buku = Kamar : ...\",[\"Pintu\",\"Rumah\",\"Jendela\",\"Meja\"],1],\n [\"Mengamati \u2014 Menilai \u2014 Menyimpulkan \u2014 Berlari\",[\"Mengamati\",\"Menilai\",\"Menyimpulkan\",\"Berlari\"],3],\n [\"Panas : Dingin = Cepat : ...\",[\"Jauh\",\"Lambat\",\"Tinggi\",\"Keras\"],1],\n [\"Jari : Tangan = Roda : ...\",[\"Jalan\",\"Mobil\",\"Mesin\",\"Ban\"],1],\n [\"Sinonim AKURAT adalah ...\",[\"Tepat\",\"Cepat\",\"Besar\",\"Keras\"],0],\n [\"Pilih kata yang tidak sekelompok.\",[\"Mendengar\",\"Melihat\",\"Mencium\",\"Menulis\"],3],\n [\"Air : Haus = Makanan : ...\",[\"Lapar\",\"Kenyang\",\"Memasak\",\"Piring\"],0],\n [\"Termometer : Suhu = Timbangan : ...\",[\"Panjang\",\"Berat\",\"Waktu\",\"Kecepatan\"],1],\n [\"Kapal : Laut = Pesawat : ...\",[\"Jalan\",\"Udara\",\"Rel\",\"Pelabuhan\"],1],\n [\"Mawar, Melati, Anggrek termasuk ...\",[\"Bunga\",\"Buah\",\"Daun\",\"Pohon\"],0],\n [\"Lawan kata KONSISTEN adalah ...\",[\"Tetap\",\"Stabil\",\"Berubah-ubah\",\"Sama\"],2],\n [\"Pensil : Grafit = Lampu : ...\",[\"Cahaya\",\"Kaca\",\"Kabel\",\"Meja\"],0],\n [\"Pagi : Siang = Sore : ...\",[\"Malam\",\"Subuh\",\"Pagi\",\"Tengah hari\"],0],\n [\"Buku : Membaca = Musik : ...\",[\"Menulis\",\"Mendengar\",\"Menggambar\",\"Berjalan\"],1],\n [\"Tinggi : Rendah = Dalam : ...\",[\"Lebar\",\"Dangkal\",\"Jauh\",\"Tebal\"],1],\n [\"Merah, biru, hijau termasuk ...\",[\"Bentuk\",\"Warna\",\"Ukuran\",\"Arah\"],1],\n [\"Matahari : Terang = Es : ...\",[\"Keras\",\"Dingin\",\"Cair\",\"Bulat\"],1],\n [\"Arsitek : Bangunan = Penulis : ...\",[\"Buku\",\"Kertas\",\"Pena\",\"Meja\"],0],\n [\"Sinonim RINGKAS adalah ...\",[\"Panjang\",\"Singkat\",\"Rumit\",\"Lambat\"],1],\n [\"Pilih yang berbeda.\",[\"Kilometer\",\"Meter\",\"Sentimeter\",\"Kilogram\"],3]\n];\n\nfunction hash(str){let h=2166136261>>>0;for(let i=0;i<str.length;i++){h^=str.charCodeAt(i);h=Math.imul(h,16777619)}return h>>>0}\nfunction prng(seed){let a=seed>>>0;return function(){a|=0;a=a+0x6D2B79F5|0;let t=Math.imul(a^a>>>15,1|a);t=t+Math.imul(t^t>>>7,61|t)^t;return((t^t>>>14)>>>0)\/4294967296}}\nfunction shuffle(arr,r){const a=arr.slice();for(let i=a.length-1;i>0;i--){const j=Math.floor(r()*(i+1));[a[i],a[j]]=[a[j],a[i]]}return a}\nfunction mc(correct,distractors,r){\n let all=[correct,...distractors.filter(x=>x!==correct)];all=[...new Set(all)].slice(0,4);\n while(all.length<4)all.push(String(Number(correct||0)+all.length+1));\n all=shuffle(all,r);return{o:all,a:all.indexOf(correct)}\n}\nfunction cryptoInt(){try{let a=new Uint32Array(1);crypto.getRandomValues(a);return a[0]>>>0}catch(e){return(Math.random()*4294967295)>>>0}}\nfunction esc(s){return String(s).replace(\/[&<>\"']\/g,m=>({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\"\":\"&quot;\",\"'\":\"&#039;\"}[m]))}\nfunction fmt(sec){sec=Math.max(0,Math.floor(sec||0));return String(Math.floor(sec\/60)).padStart(2,\"0\")+\":\"+String(sec%60).padStart(2,\"0\")}\nfunction today(){return new Intl.DateTimeFormat(\"id-ID\",{day:\"2-digit\",month:\"long\",year:\"numeric\"}).format(new Date())}\nfunction makeCode(){return\"TIDI-\"+Date.now().toString(36).toUpperCase().slice(-8)}\n\nfunction choosePackage(age){\n let hist={};try{hist=JSON.parse(localStorage.getItem(HISTORY_KEY)||\"{}\")}catch(e){}\n let used=Array.isArray(hist[age])?hist[age]:[];\n let available=[1,2,3,4,5].filter(x=>!used.includes(x));\n if(!available.length){\n   const last=used[used.length-1];used=last?[last]:[];\n   available=[1,2,3,4,5].filter(x=>x!==last)\n }\n const entropy=(cryptoInt()^Date.now()^Math.floor(Date.now()\/1000))>>>0;\n const p=available[entropy%available.length];\n used.push(p); if(used.length>5)used=used.slice(-5);\n hist[age]=used;try{localStorage.setItem(HISTORY_KEY,JSON.stringify(hist))}catch(e){}\n return p\n}\n\nfunction buildFluid(age,pkg,sessionSeed){\n const r=prng(hash(\"F\"+age+pkg)),q=[];\n const empty=[\"\u25cb\",\"\u25b3\",\"\u25a1\",\"\u25c7\"],full=[\"\u25cf\",\"\u25b2\",\"\u25a0\",\"\u25c6\"];\n let e=empty[Math.floor(r()*4)],f=full[Math.floor(r()*4)];\n q.push({q:\"Pilih elemen berikutnya.\",v:`${e}  ${f}  ${e}  ${f}  ${e}  ?`,...mc(f,[e,\"\u25a0\",\"\u25c6\"],r)});\n const dirs=[\"\u2191\",\"\u2192\",\"\u2193\",\"\u2190\"];let s=Math.floor(r()*4);\n q.push({q:\"Pilih arah berikutnya.\",v:[0,1,2,3,4].map(i=>dirs[(s+i)%4]).join(\"  \")+\"  ?\",...mc(dirs[(s+5)%4],dirs.filter(x=>x!==dirs[(s+5)%4]),r)});\n let n=1+Math.floor(r()*3);q.push({q:\"Pilih jumlah simbol berikutnya.\",v:`${n}\u25cf   ${n+1}\u25cf   ${n+2}\u25cf   ${n+3}\u25cf   ?`,...mc(String(n+4)+\"\u25cf\",[String(n+2)+\"\u25cf\",String(n+3)+\"\u25cf\",String(n+5)+\"\u25cf\"],r)});\n q.push({q:\"Lengkapi transformasi bentuk kosong menjadi terisi.\",v:\"\u25cb \u2192 \u25cf     \u25a1 \u2192 ?\",...mc(\"\u25a0\",[\"\u25a1\",\"\u25cb\",\"\u25b2\"],r)});\n let cyc=shuffle([\"\u25cb\",\"\u25b3\",\"\u25a1\"],r);q.push({q:\"Lengkapi siklus bentuk.\",v:`${cyc[0]}  ${cyc[1]}  ${cyc[2]}  ${cyc[0]}  ${cyc[1]}  ?`,...mc(cyc[2],[cyc[0],cyc[1],\"\u25cf\"],r)});\n n=2+Math.floor(r()*4);q.push({q:\"Jumlah bertambah +2, +3, +4, ...\",v:`${n}, ${n+2}, ${n+5}, ${n+9}, ?`,...mc(String(n+14),[String(n+12),String(n+13),String(n+15)],r)});\n q.push({q:\"Pilih hasil gabungan dua garis.\",v:\"\u2502 + \u2500 = +     \/ + \\\\ = ?\",...mc(\"\u00d7\",[\"+\",\"=\",\"||\"],r)});\n q.push({q:\"Pilih elemen yang tidak mengikuti aturan.\",v:\"\u25cb\u25cb   \u25b3\u25b3   \u25a1\u25a1   \u25c7\u25c7   \u25cf\u25cf\u25cf\",...mc(\"\u25cf\u25cf\u25cf\",[\"\u25cb\u25cb\",\"\u25b3\u25b3\",\"\u25c7\u25c7\"],r)});\n q.push({q:\"Setiap langkah memutar 90\u00b0 dan berganti kosong\u2013terisi.\",v:\"\u25b3\u2191   \u25b2\u2192   \u25b3\u2193   \u25b2\u2190   ?\",...mc(\"\u25b3\u2191\",[\"\u25b2\u2191\",\"\u25b3\u2192\",\"\u25b2\u2193\"],r)});\n q.push({q:\"Setiap transformasi menambah satu sisi.\",v:\"\u25b3 \u2192 \u25a1     \u25a1 \u2192 ?\",...mc(\"\u2b20\",[\"\u25b3\",\"\u25cb\",\"\u2b21\"],r)});\n q.push({q:\"Jumlah berikutnya adalah penjumlahan dua jumlah sebelumnya.\",v:\"1\u25cf   2\u25cf   3\u25cf   5\u25cf   ?\",...mc(\"8\u25cf\",[\"6\u25cf\",\"7\u25cf\",\"9\u25cf\"],r)});\n q.push({q:\"Pilih arah berikutnya.\",v:\"\u2196  \u2197  \u2198  \u2199  \u2196  ?\",...mc(\"\u2197\",[\"\u2196\",\"\u2198\",\"\u2199\"],r)});\n return shuffle(q,prng(sessionSeed^0xF11D)).map((x,i)=>({id:\"F\"+String(i+1).padStart(2,\"0\"),d:\"fluid\",...x}))\n}\nfunction buildVerbal(age,pkg,sessionSeed){\n const r=prng(hash(\"V\"+age+pkg));let pool=shuffle(VERBAL_POOL,r);\n const offset=(pkg-1)*3;pool=pool.slice(offset).concat(pool.slice(0,offset)).slice(0,12);\n return shuffle(pool,prng(sessionSeed^0xBEEF)).map((x,i)=>({id:\"V\"+String(i+1).padStart(2,\"0\"),d:\"verbal\",q:\"Pilih jawaban yang paling tepat.\",v:x[0],o:x[1],a:x[2]}))\n}\nfunction buildQuant(age,pkg,sessionSeed){\n const r=prng(hash(\"Q\"+age+pkg)),q=[];let a,step;\n a=2+Math.floor(r()*5);step=2+Math.floor(r()*5);q.push({q:\"Pilih angka berikutnya.\",v:`${a}, ${a+step}, ${a+2*step}, ${a+3*step}, ?`,...mc(String(a+4*step),[String(a+4*step-1),String(a+4*step+1),String(a+5*step)],r)});\n a=2+Math.floor(r()*4);q.push({q:\"Pilih angka berikutnya.\",v:`${a}, ${a*2}, ${a*4}, ${a*8}, ?`,...mc(String(a*16),[String(a*12),String(a*14),String(a*18)],r)});\n a=2+Math.floor(r()*3);q.push({q:\"Pilih angka berikutnya.\",v:`${a}, ${a+3}, ${a+8}, ${a+15}, ${a+24}, ?`,...mc(String(a+35),[String(a+33),String(a+34),String(a+36)],r)});\n let qty=2+Math.floor(r()*4),unit=(15+Math.floor(r()*6)*5)*1000,target=qty+2+Math.floor(r()*3),price=qty*unit;\n q.push({q:`Jika ${qty} barang berharga Rp${price.toLocaleString(\"id-ID\")}, harga ${target} barang adalah ...`,v:`${qty} barang = Rp${price.toLocaleString(\"id-ID\")}`,...mc(\"Rp\"+(target*unit).toLocaleString(\"id-ID\"),[\"Rp\"+((target-1)*unit).toLocaleString(\"id-ID\"),\"Rp\"+((target+1)*unit).toLocaleString(\"id-ID\"),\"Rp\"+((target+2)*unit).toLocaleString(\"id-ID\")],r)});\n let per=[10,20,25,40,50][Math.floor(r()*5)],val=(4+Math.floor(r()*8))*10,total=val*100\/per;\n q.push({q:`Jika ${per}% dari suatu nilai adalah ${val}, nilai tersebut adalah ...`,v:`${per}% = ${val}`,...mc(String(total),[String(total-10),String(total+10),String(total+20)],r)});\n let ra=2+Math.floor(r()*4),rb=ra+2+Math.floor(r()*4),m=3+Math.floor(r()*5);\n q.push({q:`A:B = ${ra}:${rb}. Jika A = ${ra*m}, B adalah ...`,v:`A : B = ${ra} : ${rb}`,...mc(String(rb*m),[String(rb*m-2),String(rb*m+2),String(rb*(m+1))],r)});\n q.push({q:\"Pilih angka berikutnya.\",v:\"1, 1, 2, 3, 5, 8, ?\",...mc(\"13\",[\"11\",\"12\",\"15\"],r)});\n a=2+Math.floor(r()*3);let b=a*2+1,c=b*2+1,d=c*2+1,e=d*2+1;q.push({q:\"Pilih angka berikutnya.\",v:`${a}, ${b}, ${c}, ${d}, ?`,...mc(String(e),[String(e-4),String(e-2),String(e+2)],r)});\n let st=80+Math.floor(r()*5)*20,inc=20+Math.floor(r()*3)*10,pct=Math.round(inc\/st*100);\n q.push({q:`Nilai naik dari ${st} menjadi ${st+inc}. Persentase kenaikan paling dekat dengan ...`,v:`${st} \u2192 ${st+inc}`,...mc(String(pct)+\"%\",[String(pct-5)+\"%\",String(pct+5)+\"%\",String(pct+10)+\"%\"],r)});\n let people=4+Math.floor(r()*4)*2,days=6+Math.floor(r()*4)*2;\n q.push({q:`${people} orang menyelesaikan pekerjaan dalam ${days} hari. ${people*2} orang memerlukan ...`,v:`${people} orang \u00d7 ${days} hari`,...mc(String(days\/2)+\" hari\",[String(days)+\" hari\",String(Math.max(1,days\/3))+\" hari\",String(days*2)+\" hari\"],r)});\n q.push({q:\"Pilih angka berikutnya.\",v:\"100, 96, 88, 76, 60, ?\",...mc(\"40\",[\"38\",\"42\",\"44\"],r)});\n q.push({q:\"Rata-rata 4 angka adalah 18. Tiga angkanya 12, 18, dan 20. Angka keempat adalah ...\",v:\"Mean = 18\",...mc(\"22\",[\"20\",\"24\",\"26\"],r)});\n return shuffle(q,prng(sessionSeed^0xCAFE)).map((x,i)=>({id:\"Q\"+String(i+1).padStart(2,\"0\"),d:\"quantitative\",...x}))\n}\nfunction buildSpatial(age,pkg,sessionSeed){\n const r=prng(hash(\"S\"+age+pkg)),q=[],dirs=[\"\u2191\",\"\u2192\",\"\u2193\",\"\u2190\"];let s=Math.floor(r()*4);\n q.push({q:\"Panah diputar 180\u00b0. Pilih hasilnya.\",v:dirs[s],...mc(dirs[(s+2)%4],dirs.filter(x=>x!==dirs[(s+2)%4]),r)});\n s=Math.floor(r()*4);q.push({q:\"Panah diputar 90\u00b0 berlawanan arah jarum jam.\",v:dirs[s],...mc(dirs[(s+3)%4],dirs.filter(x=>x!==dirs[(s+3)%4]),r)});\n q.push({q:\"Pilih bayangan cermin kiri\u2013kanan.\",v:\"\u2197\",...mc(\"\u2196\",[\"\u2198\",\"\u2199\",\"\u2197\"],r)});\n q.push({q:\"Titik kiri atas diputar 180\u00b0 terhadap pusat.\",v:\"\u25cf pada sudut kiri atas\",...mc(\"Kanan bawah\",[\"Kiri atas\",\"Kanan atas\",\"Kiri bawah\"],r)});\n q.push({q:\"Arah bergerak searah jarum jam. Setelah bawah adalah ...\",v:\"Atas \u2192 Kanan \u2192 Bawah \u2192 ?\",...mc(\"Kiri\",[\"Atas\",\"Kanan\",\"Tengah\"],r)});\n q.push({q:\"Pilih rotasi 90\u00b0 searah jarum jam.\",v:\"\u2191\",...mc(\"\u2192\",[\"\u2190\",\"\u2193\",\"\u2191\"],r)});\n q.push({q:\"Objek menghadap barat lalu diputar 270\u00b0 searah jarum jam.\",v:\"Barat + 270\u00b0 CW\",...mc(\"Selatan\",[\"Utara\",\"Timur\",\"Barat\"],r)});\n q.push({q:\"Titik bergerak mengelilingi empat sudut.\",v:\"TL \u2192 TR \u2192 BR \u2192 BL \u2192 ?\",...mc(\"TL\",[\"TR\",\"BR\",\"BL\"],r)});\n q.push({q:\"Simbol menghadap tenggara lalu diputar 90\u00b0 searah jarum jam.\",v:\"\u2198 + 90\u00b0 CW\",...mc(\"\u2199\",[\"\u2197\",\"\u2196\",\"\u2198\"],r)});\n q.push({q:\"Titik kanan bawah dicerminkan terhadap garis vertikal.\",v:\"BR | cermin vertikal\",...mc(\"BL\",[\"TL\",\"TR\",\"BR\"],r)});\n q.push({q:\"Panah \u2191 dicerminkan terhadap garis horizontal.\",v:\"\u2191 | cermin horizontal\",...mc(\"\u2193\",[\"\u2191\",\"\u2190\",\"\u2192\"],r)});\n q.push({q:\"Tiga rotasi 90\u00b0 searah jarum jam dari kiri menghasilkan ...\",v:\"\u2190 + 270\u00b0 CW\",...mc(\"\u2193\",[\"\u2191\",\"\u2192\",\"\u2190\"],r)});\n return shuffle(q,prng(sessionSeed^0x5151)).map((x,i)=>({id:\"S\"+String(i+1).padStart(2,\"0\"),d:\"spatial\",...x}))\n}\nfunction buildMemory(age,pkg,sessionSeed){\n const r=prng(hash(\"M\"+age+pkg)),q=[],range=AGE[age].mem;\n for(let i=0;i<10;i++){\n   const len=range[0]+Math.floor(r()*(range[1]-range[0]+1));let seq=[];while(seq.length<len)seq.push(1+Math.floor(r()*9));\n   const type=[\"same\",\"reverse\",\"asc\",\"desc\"][i%4];\n   let correct=type===\"same\"?seq.slice():type===\"reverse\"?seq.slice().reverse():type===\"asc\"?seq.slice().sort((a,b)=>a-b):seq.slice().sort((a,b)=>b-a);\n   let d1=correct.slice(),d2=correct.slice(),d3=seq.slice().reverse();\n   if(d1.length>1)[d1[0],d1[1]]=[d1[1],d1[0]];\n   if(d2.length>2)[d2[d2.length-1],d2[d2.length-2]]=[d2[d2.length-2],d2[d2.length-1]];\n   const m=mc(correct.join(\" \"),[d1.join(\" \"),d2.join(\" \"),d3.join(\" \")],r);\n   const qtext=type===\"same\"?\"Ingat urutan lalu pilih urutan yang sama.\":type===\"reverse\"?\"Ingat urutan lalu pilih urutan TERBALIK.\":type===\"asc\"?\"Ingat angka lalu pilih urutan dari KECIL ke BESAR.\":\"Ingat angka lalu pilih urutan dari BESAR ke KECIL.\";\n   q.push({id:\"M\"+String(i+1).padStart(2,\"0\"),d:\"memory\",q:qtext,seq:seq.join(\" \"),...m,timed:true})\n }\n return shuffle(q,prng(sessionSeed^0xA11A)).map((x,i)=>({...x,id:\"M\"+String(i+1).padStart(2,\"0\")}))\n}\nfunction buildSpeed(age,pkg,sessionSeed){\n const r=prng(hash(\"P\"+age+pkg)),sym=SYMBOL_SETS[(pkg-1)%5],q=[];\n for(let i=0;i<60;i++){const v=sym[Math.floor(r()*4)];q.push({id:\"P\"+String(i+1).padStart(2,\"0\"),d:\"speed\",q:\"Pilih kode angka yang sesuai dengan simbol target.\",v,o:[\"1\",\"2\",\"3\",\"4\"],a:sym.indexOf(v),key:sym,timed:true})}\n return shuffle(q,prng(sessionSeed^0x7777)).map((x,i)=>({...x,id:\"P\"+String(i+1).padStart(2,\"0\")}))\n}\nfunction buildPackage(age,pkg,seed){return[...buildFluid(age,pkg,seed),...buildVerbal(age,pkg,seed),...buildQuant(age,pkg,seed),...buildSpatial(age,pkg,seed),...buildMemory(age,pkg,seed),...buildSpeed(age,pkg,seed)]}\n\nconst S={age:\"\",pkg:0,seed:0,items:[],current:0,answers:{},timeouts:{},memSeen:{},started:false,startAt:0,elapsed:0,timer:null,memTimer:null,speedTimer:null,answerDeadline:0,speedDeadline:0,section:\"fluid\",fullName:\"\",docMode:\"\",result:null,code:\"\"};\n\nfunction save(){try{sessionStorage.setItem(SESSION_KEY,JSON.stringify({age:S.age,pkg:S.pkg,seed:S.seed,current:S.current,answers:S.answers,timeouts:S.timeouts,memSeen:S.memSeen,started:S.started,startAt:S.startAt,answerDeadline:S.answerDeadline,speedDeadline:S.speedDeadline,section:S.section,code:S.code}))}catch(e){}}\nfunction clearSave(){try{sessionStorage.removeItem(SESSION_KEY)}catch(e){}}\nfunction load(){try{const x=JSON.parse(sessionStorage.getItem(SESSION_KEY)||\"null\");if(!x||!x.started)return false;Object.assign(S,x);S.items=buildPackage(S.age,S.pkg,S.seed);return true}catch(e){return false}}\nfunction item(){return S.items[S.current]}\nfunction itemsOf(d){return S.items.filter(x=>x.d===d)}\nfunction firstIndex(d){return S.items.findIndex(x=>x.d===d)}\nfunction nextDomain(d){const i=ORDER.indexOf(d);return ORDER[i+1]||null}\nfunction pos(it){const a=itemsOf(it.d);return{p:a.findIndex(x=>x.id===it.id),n:a.length}}\nfunction showOnly(id){[\"#tnIntro\",\"#tnSectionIntro\",\"#tnTest\",\"#tnResult\"].forEach(s=>{const e=$(s);if(e)e.style.display=\"none\"});$(id).style.display=\"block\"}\nfunction stopTaskTimers(){if(S.memTimer)clearInterval(S.memTimer);if(S.speedTimer)clearInterval(S.speedTimer);S.memTimer=S.speedTimer=null}\nfunction startClock(){\n if(S.timer)clearInterval(S.timer);\n S.timer=setInterval(()=>{S.elapsed=Math.floor((Date.now()-S.startAt)\/1000);$(\"#tnTimer\").textContent=fmt(S.elapsed);$(\"#tnTopTimer\").textContent=fmt(S.elapsed);$(\"#tnSectionTimer\").textContent=\"Bagian aktif: \"+D[S.section].name;if(S.elapsed%5===0)save()},500)\n}\nfunction stopAll(){if(S.timer)clearInterval(S.timer);S.timer=null;stopTaskTimers()}\n\nfunction startNew(){\n S.pkg=choosePackage(S.age);S.seed=(cryptoInt()^Date.now()^hash(S.age+S.pkg))>>>0;S.items=buildPackage(S.age,S.pkg,S.seed);\n S.current=0;S.answers={};S.timeouts={};S.memSeen={};S.started=true;S.startAt=Date.now();S.elapsed=0;S.section=\"fluid\";S.answerDeadline=0;S.speedDeadline=0;S.code=makeCode();\n clearSave();save();startClock();showSection(\"fluid\")\n}\nfunction showSection(d){\n stopTaskTimers();S.section=d;S.answerDeadline=0;save();showOnly(\"#tnSectionIntro\");\n $(\"#tnSectionIcon\").textContent=D[d].icon;$(\"#tnSectionTitle\").textContent=D[d].name;$(\"#tnSectionDesc\").textContent=D[d].desc;$(\"#tnSectionMeta\").innerHTML=D[d].meta.map(x=>\"<span>\"+x+\"<\/span>\").join(\"\");\n $(\"#tnSectionIntro\").scrollIntoView({behavior:\"smooth\",block:\"start\"})\n}\nfunction beginSection(){S.current=firstIndex(S.section);if(S.section===\"speed\")S.speedDeadline=Date.now()+75000;showOnly(\"#tnTest\");renderQuestion();$(\"#tnTest\").scrollIntoView({behavior:\"smooth\",block:\"start\"});save()}\nfunction domainProgress(){\n $(\"#tnDomainProgress\").innerHTML=ORDER.map(d=>{const a=itemsOf(d);const n=a.filter(x=>S.answers[x.id]!==undefined||S.timeouts[x.id]).length;return`<div class=\"tn-domain-row\"><span>${D[d].name}<\/span><b>${n}\/${a.length}<\/b><\/div>`}).join(\"\")\n}\n\nfunction renderQuestion(){\n const it=item();if(!it)return;S.section=it.d;const p=pos(it);$(\"#tnQuestionCard\").classList.remove(\"tn-timeout\");\n $(\"#tnProgressText\").textContent=`${D[it.d].name} \u2022 ${p.p+1} dari ${p.n}`;$(\"#tnProgressBar\").style.width=((p.p+1)\/p.n*100)+\"%\";$(\"#tnAnsweredText\").textContent=Object.keys(S.answers).length+\" jawaban\";\n $(\"#tnDomainPill\").textContent=D[it.d].name;$(\"#tnPackageLabel\").textContent=`Paket ${S.pkg} \u2022 ${S.age}-${S.pkg}`;$(\"#tnAgeLabel\").textContent=\"Kelompok usia \"+AGE[S.age].label;\n $(\"#tnQTitle\").textContent=it.q;$(\"#tnPrev\").disabled=(it.d===\"memory\"||it.d===\"speed\"||p.p===0);$(\"#tnNext\").disabled=false;$(\"#tnTimedPill\").classList.toggle(\"on\",!!it.timed);$(\"#tnCountdownBox\").classList.remove(\"on\");\n if(it.d===\"memory\")renderMemory(it);else if(it.d===\"speed\")renderSpeed(it);else{$(\"#tnQHelp\").textContent=it.d===\"quantitative\"?\"Pilih satu jawaban. Jangan gunakan kalkulator.\":\"Pilih satu jawaban yang paling tepat.\";$(\"#tnStimulus\").textContent=it.v;renderOptions(it)}\n $(\"#tnNext\").textContent=p.p===p.n-1?\"Selesaikan Bagian \u2192\":\"Berikutnya \u2192\";domainProgress();save()\n}\nfunction renderOptions(it){\n $(\"#tnOptions\").innerHTML=it.o.map((x,i)=>`<button class=\"tn-option ${S.answers[it.id]===i?\"selected\":\"\"}\" data-i=\"${i}\"><span style=\"display:inline-grid;place-items:center;width:25px;height:25px;border-radius:8px;background:#f0f4f8;margin-right:8px\">${String.fromCharCode(65+i)}<\/span>${esc(x)}<\/button>`).join(\"\");\n $$(\"#tnOptions .tn-option\").forEach(b=>b.addEventListener(\"click\",()=>{\n   if(S.timeouts[it.id])return;S.answers[it.id]=Number(b.dataset.i);$$(\".tn-option\").forEach(x=>x.classList.remove(\"selected\"));b.classList.add(\"selected\");domainProgress();save();\n   if(it.d===\"memory\"){if(S.memTimer)clearInterval(S.memTimer);S.memTimer=null;S.answerDeadline=0;$(\"#tnCountdownBox\").classList.remove(\"on\")}\n   if(it.d===\"speed\"){const p=pos(it);if(p.p<p.n-1)setTimeout(()=>{S.current++;renderQuestion()},65)}\n }))\n}\nfunction lockTimed(it,msg){\n $(\"#tnQuestionCard\").classList.add(\"tn-timeout\");$(\"#tnQHelp\").textContent=msg;$(\"#tnCountdownBox\").classList.add(\"on\");$(\"#tnCountdownLabel\").textContent=\"WAKTU HABIS\";$(\"#tnCountdown\").textContent=\"00\";\n $$(\"#tnOptions .tn-option\").forEach(b=>{b.disabled=true;b.classList.add(\"locked\")});$(\"#tnNext\").disabled=true;$(\"#tnPrev\").disabled=true\n}\nfunction countdown(label,seconds,done){\n $(\"#tnCountdownBox\").classList.add(\"on\");$(\"#tnCountdownLabel\").textContent=label;const end=Date.now()+seconds*1000;if(S.memTimer)clearInterval(S.memTimer);\n function tick(){const left=Math.max(0,Math.ceil((end-Date.now())\/1000));$(\"#tnCountdown\").textContent=String(left).padStart(2,\"0\");if(left<=0){clearInterval(S.memTimer);S.memTimer=null;done()}}\n tick();S.memTimer=setInterval(tick,150)\n}\nfunction renderMemory(it){\n $(\"#tnOptions\").innerHTML=\"\";$(\"#tnQHelp\").textContent=\"Stimulus tampil 4 detik. Setelah hilang, Anda memiliki 10 detik untuk menjawab.\";\n if(S.answers[it.id]!==undefined){$(\"#tnStimulus\").innerHTML='<div style=\"font-size:17px;color:#6c7e8e\">Stimulus sudah disembunyikan.<\/div>';renderOptions(it);return}\n if(S.timeouts[it.id]){lockTimed(it,\"Waktu habis. Soal ini telah dikunci.\");return}\n $(\"#tnNext\").disabled=true;\n if(!S.memSeen[it.id]){\n   $(\"#tnStimulus\").innerHTML='<div><div style=\"font-size:11px;color:#6b7d8e;margin-bottom:8px\">Klik saat siap. Countdown dimulai setelah tombol ditekan.<\/div><button class=\"tn-btn tn-btn-primary\" id=\"tnMemShowV2\">Tampilkan Stimulus<\/button><\/div>';\n   setTimeout(()=>{const b=$(\"#tnMemShowV2\");if(b)b.addEventListener(\"click\",()=>{S.memSeen[it.id]=true;$(\"#tnStimulus\").innerHTML=`<div class=\"tn-memory-flash\">${it.seq}<\/div>`;countdown(\"Stimulus akan disembunyikan\",4,()=>{if(item()&&item().id===it.id){$(\"#tnStimulus\").innerHTML='<div style=\"font-size:17px;color:#6c7e8e\">Stimulus disembunyikan. Pilih jawaban.<\/div>';renderOptions(it);$(\"#tnNext\").disabled=false;S.answerDeadline=Date.now()+10000;answerTimer(it)}});save()},{once:true})},0)\n }else{\n   $(\"#tnStimulus\").innerHTML='<div style=\"font-size:17px;color:#6c7e8e\">Stimulus disembunyikan. Pilih jawaban.<\/div>';renderOptions(it);$(\"#tnNext\").disabled=false;S.answerDeadline=Date.now()+10000;answerTimer(it)\n }\n}\nfunction answerTimer(it){\n $(\"#tnCountdownBox\").classList.add(\"on\");$(\"#tnCountdownLabel\").textContent=\"Waktu menjawab\";if(S.memTimer)clearInterval(S.memTimer);\n function tick(){if(S.answers[it.id]!==undefined){clearInterval(S.memTimer);S.memTimer=null;$(\"#tnCountdownBox\").classList.remove(\"on\");return}const left=Math.max(0,Math.ceil((S.answerDeadline-Date.now())\/1000));$(\"#tnCountdown\").textContent=String(left).padStart(2,\"0\");if(left<=0){clearInterval(S.memTimer);S.memTimer=null;S.timeouts[it.id]=true;S.answerDeadline=0;lockTimed(it,\"Waktu menjawab habis. Soal berubah merah dan dikunci.\");save();setTimeout(()=>advanceTimeout(it),1200)}}\n tick();S.memTimer=setInterval(tick,150)\n}\nfunction renderSpeed(it){\n $(\"#tnQHelp\").textContent=\"Cocokkan simbol dengan kode. Seluruh bagian memiliki batas waktu 75 detik.\";\n const k=it.key;$(\"#tnStimulus\").innerHTML=`<div><div class=\"tn-speed-key\"><span>1 = ${k[0]}<\/span><span>2 = ${k[1]}<\/span><span>3 = ${k[2]}<\/span><span>4 = ${k[3]}<\/span><\/div><div style=\"font-size:58px\">${it.v}<\/div><\/div>`;renderOptions(it);\n $(\"#tnCountdownBox\").classList.add(\"on\");$(\"#tnCountdownLabel\").textContent=\"Sisa waktu Processing Speed\";if(!S.speedDeadline)S.speedDeadline=Date.now()+75000;if(S.speedTimer)clearInterval(S.speedTimer);\n function tick(){const left=Math.max(0,Math.ceil((S.speedDeadline-Date.now())\/1000));$(\"#tnCountdown\").textContent=String(left).padStart(2,\"0\");if(left<=0){clearInterval(S.speedTimer);S.speedTimer=null;S.timeouts[it.id]=true;lockTimed(it,\"Waktu Processing Speed habis. Bagian berubah merah dan terkunci.\");save();setTimeout(finishAll,1300)}}\n tick();S.speedTimer=setInterval(tick,150)\n}\nfunction advanceTimeout(it){if(!item()||item().id!==it.id)return;const p=pos(it);if(p.p<p.n-1){S.current++;renderQuestion()}else{const nd=nextDomain(it.d);if(nd)showSection(nd);else finishAll()}}\nfunction goNext(){const it=item(),p=pos(it);if(S.timeouts[it.id])return;if(it.d===\"memory\"&&S.answers[it.id]===undefined){alert(\"Jawab sebelum waktu habis.\");return}if(p.p<p.n-1){S.current++;renderQuestion()}else{const nd=nextDomain(it.d);if(nd)showSection(nd);else finishAll()}}\nfunction goPrev(){const it=item(),p=pos(it);if(it.d===\"memory\"||it.d===\"speed\"||p.p===0)return;S.current--;renderQuestion()}\n\nfunction score(){\n const domains={};ORDER.forEach(d=>{const a=itemsOf(d);let c=0,ans=0,to=0;a.forEach(x=>{if(S.answers[x.id]!==undefined){ans++;if(S.answers[x.id]===x.a)c++}if(S.timeouts[x.id])to++});domains[d]={correct:c,answered:ans,total:a.length,pct:Math.round(c\/a.length*100),timeouts:to}});\n const composite=Math.round(ORDER.reduce((sum,d)=>sum+domains[d].pct,0)\/ORDER.length),iq=Math.max(55,Math.min(145,Math.round(55+composite*.90)));\n let cat,desc;if(iq>=130){cat=\"Sangat tinggi\";desc=\"Performa keseluruhan berada pada rentang sangat tinggi pada skala estimasi provisional.\"}else if(iq>=120){cat=\"Tinggi\";desc=\"Performa keseluruhan berada pada rentang tinggi pada skala estimasi provisional.\"}else if(iq>=110){cat=\"Di atas rata-rata\";desc=\"Performa keseluruhan berada di atas rentang tengah pada skala estimasi provisional.\"}else if(iq>=90){cat=\"Rata-rata\";desc=\"Performa keseluruhan berada pada rentang tengah pada skala estimasi provisional.\"}else if(iq>=80){cat=\"Di bawah rata-rata\";desc=\"Performa keseluruhan berada di bawah rentang tengah pada skala estimasi provisional.\"}else if(iq>=70){cat=\"Rendah\";desc=\"Performa keseluruhan berada pada rentang rendah pada skala estimasi provisional.\"}else{cat=\"Sangat rendah\";desc=\"Performa keseluruhan berada pada rentang sangat rendah pada skala estimasi provisional.\"}\n const sorted=ORDER.map(d=>[d,domains[d]]).sort((a,b)=>b[1].pct-a[1].pct);return{domains,composite,iq,cat,desc,sorted,duration:S.elapsed,code:S.code,age:AGE[S.age].label,pkg:S.pkg}\n}\nfunction finishAll(){stopAll();S.elapsed=Math.floor((Date.now()-S.startAt)\/1000);S.result=score();S.started=false;clearSave();renderResult();showOnly(\"#tnResult\");$(\"#tnResult\").scrollIntoView({behavior:\"smooth\",block:\"start\"})}\nfunction renderResult(){\n const r=S.result,hi=r.sorted[0],lo=r.sorted[r.sorted.length-1];$(\"#tnIQ\").textContent=r.iq;$(\"#tnRing\").style.setProperty(\"--ring\",r.composite+\"%\");$(\"#tnCategory\").textContent=r.cat;$(\"#tnResultSummary\").textContent=`Skor performa komposit ${r.composite}\/100. ${r.desc}`;\n $(\"#tnDomainCards\").innerHTML=ORDER.map(d=>{const x=r.domains[d];return`<div class=\"tn-card tn-domain-card\"><div class=\"tn-domain-head\"><b>${D[d].name}<\/b><strong>${x.pct}%<\/strong><\/div><div class=\"tn-bar\"><i style=\"width:${x.pct}%\"><\/i><\/div><p>${x.correct}\/${x.total} benar \u2022 ${x.timeouts} timeout<\/p><\/div>`}).join(\"\");\n $(\"#tnNarrative\").textContent=`Performa relatif tertinggi pada ${D[hi[0]].name} (${hi[1].pct}%) dan relatif terendah pada ${D[lo[0]].name} (${lo[1].pct}%). Hasil berasal dari kelompok usia ${r.age}, Paket ${r.pkg}, dengan waktu total ${fmt(r.duration)}.`;\n $(\"#tnDetailGrid\").innerHTML=`<div class=\"tn-detail-box\"><b>Waktu total pengerjaan<\/b><span>${fmt(r.duration)}<\/span><\/div><div class=\"tn-detail-box\"><b>Paket sesi<\/b><span>${S.age}-${r.pkg} \u2022 Paket ${r.pkg}<\/span><\/div><div class=\"tn-detail-box\"><b>Kekuatan relatif<\/b><span>${D[hi[0]].name} (${hi[1].pct}%)<\/span><\/div><div class=\"tn-detail-box\"><b>Kode hasil<\/b><span>${r.code}<\/span><\/div>`\n}\nfunction narr(d,p){if(p>=80)return`${D[d].name}: performa relatif sangat kuat pada tugas sesi ini.`;if(p>=65)return`${D[d].name}: performa relatif kuat dan konsisten.`;if(p>=45)return`${D[d].name}: performa berada pada rentang menengah.`;return`${D[d].name}: performa relatif lebih rendah; waktu, konsentrasi, strategi, dan familiaritas dapat memengaruhi hasil.`}\n\nfunction certHTML(){\n const r=S.result;return`<div class=\"tn-a4\"><div class=\"tn-cert\"><div class=\"tn-cert-top\">\n <div class=\"tn-print-aipnema-logo\"><img decoding=\"async\" class=\"tn-print-official-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\"><div><strong>AIPNEMA<\/strong><span>Sinergi \u2013 Unggul \u2013 Setara<\/span><\/div><\/div>\n <div class=\"tn-cert-kicker\">AIPNEMA \u2022 Sinergi \u2013 Unggul \u2013 Setara<\/div><div class=\"tn-cert-title\">Sertifikat Hasil TIDI<\/div><div class=\"tn-cert-sub\">Tes Inteligensi Dewasa Indonesia \u2022 Adult v2.0 AIPNEMA Edition<\/div>\n <div style=\"margin-top:11mm;font-size:9.5pt;color:#65798b\">Diberikan kepada<\/div><div class=\"tn-cert-name\">${esc(S.fullName)}<\/div><div class=\"tn-cert-score-label\">Estimasi IQ \u2022 Provisional<\/div><div class=\"tn-cert-score\">${r.iq}<\/div><div class=\"tn-cert-cat\">${r.cat}<\/div>\n <div style=\"font-size:8.5pt;color:#64798b;margin-top:4mm\">Komposit ${r.composite}\/100 \u2022 Waktu ${fmt(r.duration)} \u2022 Usia ${esc(r.age)} \u2022 Paket ${r.pkg}<\/div><\/div>\n <div><div class=\"tn-cert-foot\"><div><b>Tanggal tes:<\/b> ${today()}<br><b>Kode hasil:<\/b> ${r.code}<br><b>Kode paket:<\/b> ${S.age}-${r.pkg}<\/div><div class=\"tn-cert-sign\"><div class=\"tn-cert-line\">AIPNEMA<\/div>Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah<\/div><\/div>\n <div class=\"tn-cert-disclaimer\">Dokumen ini melaporkan TIDI Adult v2.0 AIPNEMA Edition. Nilai \u201cEstimasi IQ\u201d masih provisional dan belum merupakan skor IQ terstandar nasional. Tidak untuk diagnosis klinis atau keputusan berisiko tinggi.<\/div><\/div><\/div><\/div>`\n}\nfunction reportHTML(){\n const r=S.result,hi=r.sorted[0],lo=r.sorted[r.sorted.length-1];\n const rows=ORDER.map(d=>{const x=r.domains[d];return`<tr><td>${D[d].name}<\/td><td>${x.correct}\/${x.total}<\/td><td>${x.pct}%<\/td><td>${x.timeouts}<\/td><\/tr>`}).join(\"\");\n const blocks=ORDER.map(d=>{const x=r.domains[d];return`<div class=\"tn-report-domain\"><b>${D[d].name}<\/b><span style=\"float:right;color:#0f6b3d;font-weight:800\">${x.pct}%<\/span><div class=\"mini-bar\"><i style=\"width:${x.pct}%\"><\/i><\/div><div style=\"font-size:7.5pt;color:#657b8d;margin-top:1.5mm\">${narr(d,x.pct)}<\/div><\/div>`}).join(\"\");\n return`<div class=\"tn-a4\"><div class=\"tn-report-head\"><div class=\"tn-report-brand\"><img decoding=\"async\" class=\"tn-report-official-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\"><div><h2>Report Hasil TIDI Adult v2.0<\/h2><p>Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah \u2022 Sinergi \u2013 Unggul \u2013 Setara<\/p><\/div><\/div><div class=\"tn-report-code\">${r.code}<br>${today()}<\/div><\/div>\n <div class=\"tn-report-summary\"><div class=\"tn-report-box\"><h3>Identitas & sesi<\/h3><table class=\"tn-report-table\"><tr><th>Nama<\/th><td>${esc(S.fullName)}<\/td><\/tr><tr><th>Kelompok usia<\/th><td>${esc(r.age)}<\/td><\/tr><tr><th>Paket<\/th><td>${S.age}-${r.pkg}<\/td><\/tr><tr><th>Waktu total<\/th><td>${fmt(r.duration)}<\/td><\/tr><\/table><\/div><div class=\"tn-report-box\"><h3>Estimasi IQ \u2022 Provisional<\/h3><div class=\"tn-report-score\">${r.iq}<\/div><div class=\"tn-report-cat\">${r.cat}<\/div><p style=\"font-size:7.5pt;color:#687c8e\">${r.desc}<\/p><\/div><\/div>\n <div class=\"tn-report-section\"><h3>Ringkasan skor domain<\/h3><table class=\"tn-report-table\"><thead><tr><th>Domain<\/th><th>Benar<\/th><th>Skor<\/th><th>Timeout<\/th><\/tr><\/thead><tbody>${rows}<\/tbody><\/table><\/div>\n <div class=\"tn-report-section\"><h3>Profil kemampuan<\/h3>${blocks}<\/div><div class=\"tn-report-footer\"><b>TIDI Adult v2.0.<\/b> Halaman 1 dari 2 \u2022 Report dihasilkan otomatis.<\/div><\/div>\n <div class=\"tn-a4 tn-report-page2\"><div class=\"tn-report-head\"><div class=\"tn-report-brand\"><img decoding=\"async\" class=\"tn-report-official-logo\" src=\"https:\/\/aipnemaptma.org\/wp-content\/uploads\/2023\/07\/cropped-logo-aipnema2.png\" alt=\"Logo AIPNEMA\"><div><h2>Interpretasi Hasil<\/h2><p>TIDI Adult v2.0 AIPNEMA Edition<\/p><\/div><\/div><div class=\"tn-report-code\">${r.code}<\/div><\/div>\n <div class=\"tn-report-section\"><h3>Interpretasi keseluruhan<\/h3><p>Performa relatif tertinggi pada <b>${D[hi[0]].name}<\/b> (${hi[1].pct}%) dan relatif terendah pada <b>${D[lo[0]].name}<\/b> (${lo[1].pct}%). Profil ini menggambarkan performa pada paket ${S.age}-${r.pkg} selama ${fmt(r.duration)}.<\/p><\/div>\n <div class=\"tn-report-section\"><h3>Makna domain<\/h3><p><b>Penalaran Fluid<\/b> mengukur pola dan aturan baru; <b>Verbal<\/b> mengukur hubungan makna; <b>Kuantitatif<\/b> mengukur relasi numerik; <b>Visual-Spasial<\/b> mengukur rotasi dan orientasi; <b>Memori Kerja<\/b> mengukur penyimpanan\/manipulasi informasi; <b>Kecepatan Pemrosesan<\/b> mengukur ketepatan pencocokan dalam batas waktu.<\/p><\/div>\n <div class=\"tn-report-section\"><h3>Faktor yang memengaruhi hasil<\/h3><p>Kondisi fisik, kualitas tidur, kecemasan, konsentrasi, gangguan lingkungan, ukuran layar, perangkat input, kecepatan respons, pemahaman instruksi, dan pengalaman dengan tes komputer dapat memengaruhi performa.<\/p><\/div>\n <div class=\"tn-report-section\"><h3>Batas penggunaan<\/h3><ul><li>Gunakan untuk self-assessment dan pengembangan instrumen.<\/li><li>Jangan gunakan sebagai satu-satunya dasar seleksi, diagnosis, atau keputusan klinis.<\/li><li>Kesetaraan psikometrik antar-5 paket dan antar-kelompok usia perlu diuji melalui linking\/equating.<\/li><li>Skor IQ terstandar memerlukan norma representatif, validitas, reliabilitas, fairness\/DIF, dan standard error pengukuran.<\/li><\/ul><\/div>\n <div class=\"tn-report-section\"><h3>Informasi teknis sesi<\/h3><table class=\"tn-report-table\"><tr><th>Kode hasil<\/th><td>${r.code}<\/td><\/tr><tr><th>Kode paket<\/th><td>${S.age}-${r.pkg}<\/td><\/tr><tr><th>Kelompok usia<\/th><td>${esc(r.age)}<\/td><\/tr><tr><th>Waktu pengerjaan<\/th><td>${fmt(r.duration)}<\/td><\/tr><tr><th>Komposit performa<\/th><td>${r.composite}\/100<\/td><\/tr><\/table><\/div>\n <div class=\"tn-report-footer\"><b>TIDI Adult v2.0.<\/b> Halaman 2 dari 2 \u2022 AIPNEMA \u2022 Sinergi \u2013 Unggul \u2013 Setara.<\/div><\/div>`\n}\nfunction openName(mode){S.docMode=mode;$(\"#tnFullName\").value=S.fullName||\"\";$(\"#tnNameModal\").classList.add(\"show\");setTimeout(()=>$(\"#tnFullName\").focus(),50)}\nfunction closeName(){$(\"#tnNameModal\").classList.remove(\"show\")}\nfunction showDocument(){\n const name=$(\"#tnFullName\").value.trim();if(name.length<3){alert(\"Masukkan nama lengkap minimal 3 karakter.\");return}S.fullName=name;closeName();\n const h=S.docMode===\"cert\"?certHTML():reportHTML();$(\"#tnPrintArea\").innerHTML=h;$(\"#tnPreview\").innerHTML=h;$(\"#tnDocTitle\").textContent=S.docMode===\"cert\"?\"Preview Sertifikat A4\":\"Preview Report A4\";$(\"#tnDocModal\").classList.add(\"show\")\n}\n\n$(\"#tnStart\").addEventListener(\"click\",()=>$(\"#tnConsentModal\").classList.add(\"show\"));\n$(\"#tnGuide\").addEventListener(\"click\",()=>alert(\"PETUNJUK TIDI\\\\n\\\\n1. Pilih kelompok usia. Sistem memilih 1 dari 5 paket secara acak.\\\\n2. Tes ulang menghindari paket yang baru digunakan pada browser yang sama.\\\\n3. Waktu total selalu tampil.\\\\n4. Memori: stimulus 4 detik lalu 10 detik menjawab. Jika habis, soal dan jawaban berubah merah serta terkunci.\\\\n5. Processing Speed: 75 detik untuk seluruh bagian. Saat habis, bagian terkunci.\\\\n6. Sertifikat dan report ditampilkan dalam preview A4 sebelum dicetak.\"));\n$(\"#tnConsentCancel\").addEventListener(\"click\",()=>$(\"#tnConsentModal\").classList.remove(\"show\"));\n$(\"#tnConsentGo\").addEventListener(\"click\",()=>{if(!$(\"#tnAdultCheck\").checked||!$(\"#tnUnderstandCheck\").checked){alert(\"Centang kedua persetujuan.\");return}if(!$(\"#tnAgeBand\").value){alert(\"Pilih kelompok usia.\");return}S.age=$(\"#tnAgeBand\").value;$(\"#tnConsentModal\").classList.remove(\"show\");startNew()});\n$(\"#tnBeginSection\").addEventListener(\"click\",beginSection);$(\"#tnNext\").addEventListener(\"click\",goNext);$(\"#tnPrev\").addEventListener(\"click\",goPrev);\n$(\"#tnEnd\").addEventListener(\"click\",()=>{if(confirm(\"Akhiri tes sekarang? Soal yang belum dijawab akan dianggap tidak benar.\"))finishAll()});\n$(\"#tnCert\").addEventListener(\"click\",()=>openName(\"cert\"));$(\"#tnReport\").addEventListener(\"click\",()=>openName(\"report\"));\n$(\"#tnRetry\").addEventListener(\"click\",()=>{if(confirm(\"Mulai tes ulang dengan paket berbeda?\")){$(\"#tnResult\").style.display=\"none\";$(\"#tnConsentModal\").classList.add(\"show\")}});\n$(\"#tnNameCancel\").addEventListener(\"click\",closeName);$(\"#tnNameGo\").addEventListener(\"click\",showDocument);\n$(\"#tnDocClose\").addEventListener(\"click\",()=>$(\"#tnDocModal\").classList.remove(\"show\"));$(\"#tnDocPrint\").addEventListener(\"click\",()=>window.print());\n$(\"#tnConsentModal\").addEventListener(\"click\",e=>{if(e.target.id===\"tnConsentModal\")$(\"#tnConsentModal\").classList.remove(\"show\")});$(\"#tnNameModal\").addEventListener(\"click\",e=>{if(e.target.id===\"tnNameModal\")closeName()});\n\nif(load()){\n if(confirm(\"Ditemukan sesi TIDI yang belum selesai. Lanjutkan sesi tersebut?\")){S.elapsed=Math.floor((Date.now()-S.startAt)\/1000);startClock();const it=item();if(it){S.section=it.d;showOnly(\"#tnTest\");renderQuestion()}else showSection(S.section||\"fluid\")}else clearSave()\n}\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Tes Inteligensi Dewasa Indonesia Asosiasi Institusi Pendidikan Ners Muhammadiyah Aisyiyah \u2022 Sinergi \u2013 Unggul \u2013 Setara AIPNEMA \u2022 Adult v2.0 AIPNEMA Digital Assessment \u2022 Adult 18\u201364 Ukur profil kemampuan kognitif secara terstruktur dan interaktif. TIDI Adult v2.0 AIPNEMA Edition menyajikan enam domain kemampuan kognitif melalui tugas penalaran, verbal, numerik, visual-spasial, memori kerja, dan kecepatan pemrosesan&#8230;.<\/p>","protected":false},"author":2,"featured_media":0,"parent":1649,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"default","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-2031","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/2031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/comments?post=2031"}],"version-history":[{"count":4,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/2031\/revisions"}],"predecessor-version":[{"id":2036,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/2031\/revisions\/2036"}],"up":[{"embeddable":true,"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/pages\/1649"}],"wp:attachment":[{"href":"https:\/\/aipnemaptma.org\/en\/wp-json\/wp\/v2\/media?parent=2031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}