{"id":791,"date":"2026-05-07T05:08:27","date_gmt":"2026-05-07T05:08:27","guid":{"rendered":"https:\/\/agamanand.com\/?page_id=791"},"modified":"2026-06-19T12:47:30","modified_gmt":"2026-06-19T12:47:30","slug":"ujian-pajak","status":"publish","type":"page","link":"https:\/\/agamanand.com\/id\/ujian-pajak\/","title":{"rendered":"UJIAN PAJAK"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"791\" class=\"elementor elementor-791\">\n\t\t\t\t<div class=\"elementor-element elementor-element-18ec0bf e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no e-con e-parent\" data-id=\"18ec0bf\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f9c0d2e elementor-widget elementor-widget-html\" data-id=\"f9c0d2e\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"id\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Ujian Junior Konsultan Pajak<\/title>\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Playfair+Display:wght@600;700&family=DM+Sans:wght@300;400;500;600&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n  :root {\r\n    --navy: #0B1F3A;\r\n    --navy-light: #1a3557;\r\n    --gold: #C9A84C;\r\n    --gold-light: #E8C97A;\r\n    --cream: #F5F0E8;\r\n    --cream-dark: #EDE7D6;\r\n    --white: #FFFFFF;\r\n    --text: #1C2B3A;\r\n    --text-muted: #5A6E82;\r\n    --border: #D6CBBA;\r\n    --success: #2E7D4F;\r\n    --danger: #C0392B;\r\n    --radius: 12px;\r\n  }\r\n  * { box-sizing: border-box; margin: 0; padding: 0; }\r\n  body {\r\n    font-family: 'DM Sans', sans-serif;\r\n    background: var(--cream);\r\n    color: var(--text);\r\n    min-height: 100vh;\r\n  }\r\n\r\n  \/* COVER PAGE *\/\r\n  #cover-page {\r\n    min-height: 100vh;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    justify-content: center;\r\n    background: var(--navy);\r\n    padding: 2rem;\r\n    position: relative;\r\n    overflow: hidden;\r\n  }\r\n  #cover-page::before {\r\n    content: '';\r\n    position: absolute;\r\n    top: -80px; right: -80px;\r\n    width: 320px; height: 320px;\r\n    border-radius: 50%;\r\n    border: 40px solid rgba(201,168,76,0.08);\r\n  }\r\n  #cover-page::after {\r\n    content: '';\r\n    position: absolute;\r\n    bottom: -60px; left: -60px;\r\n    width: 240px; height: 240px;\r\n    border-radius: 50%;\r\n    border: 30px solid rgba(201,168,76,0.05);\r\n  }\r\n  .cover-inner {\r\n    background: rgba(255,255,255,0.04);\r\n    border: 1px solid rgba(201,168,76,0.25);\r\n    border-radius: 20px;\r\n    padding: 3rem 3.5rem;\r\n    max-width: 600px;\r\n    width: 100%;\r\n    position: relative;\r\n    z-index: 1;\r\n  }\r\n  .cover-badge {\r\n    display: inline-block;\r\n    background: var(--gold);\r\n    color: var(--navy);\r\n    font-size: 11px;\r\n    font-weight: 600;\r\n    letter-spacing: 2px;\r\n    text-transform: uppercase;\r\n    padding: 6px 16px;\r\n    border-radius: 20px;\r\n    margin-bottom: 1.5rem;\r\n  }\r\n  .cover-title {\r\n    font-family: 'Playfair Display', serif;\r\n    font-size: 2.4rem;\r\n    color: var(--white);\r\n    line-height: 1.2;\r\n    margin-bottom: 0.5rem;\r\n  }\r\n  .cover-subtitle {\r\n    color: var(--gold-light);\r\n    font-size: 1rem;\r\n    font-weight: 300;\r\n    margin-bottom: 2rem;\r\n  }\r\n  .cover-meta {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    gap: 12px;\r\n    margin-bottom: 2rem;\r\n    padding: 1.25rem;\r\n    background: rgba(255,255,255,0.05);\r\n    border-radius: var(--radius);\r\n    border: 1px solid rgba(255,255,255,0.08);\r\n  }\r\n  .cover-meta-item { display: flex; align-items: center; gap: 8px; }\r\n  .cover-meta-icon { font-size: 18px; }\r\n  .cover-meta-text { font-size: 13px; color: rgba(255,255,255,0.7); }\r\n  .cover-meta-text strong { color: var(--gold-light); display: block; font-size: 14px; }\r\n\r\n  .form-group { margin-bottom: 1.25rem; }\r\n  .form-group label {\r\n    display: block;\r\n    font-size: 13px;\r\n    font-weight: 500;\r\n    color: rgba(255,255,255,0.6);\r\n    margin-bottom: 6px;\r\n    letter-spacing: 0.5px;\r\n    text-transform: uppercase;\r\n    font-size: 11px;\r\n  }\r\n  .form-group input {\r\n    width: 100%;\r\n    padding: 12px 16px;\r\n    background: rgba(255,255,255,0.07);\r\n    border: 1px solid rgba(255,255,255,0.15);\r\n    border-radius: 8px;\r\n    color: var(--white);\r\n    font-size: 15px;\r\n    font-family: 'DM Sans', sans-serif;\r\n    transition: border-color 0.2s;\r\n    outline: none;\r\n  }\r\n  .form-group input:focus { border-color: var(--gold); background: rgba(255,255,255,0.1); }\r\n  .form-group input::placeholder { color: rgba(255,255,255,0.3); }\r\n\r\n  .btn-start {\r\n    width: 100%;\r\n    padding: 15px;\r\n    background: var(--gold);\r\n    color: var(--navy);\r\n    border: none;\r\n    border-radius: 10px;\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n    transition: all 0.2s;\r\n    letter-spacing: 0.3px;\r\n  }\r\n  .btn-start:hover { background: var(--gold-light); transform: translateY(-1px); }\r\n  .btn-start:active { transform: translateY(0); }\r\n\r\n  \/* EXAM PAGE *\/\r\n  #exam-page { display: none; }\r\n  .exam-header {\r\n    background: var(--navy);\r\n    padding: 0 2rem;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    position: sticky;\r\n    top: 0;\r\n    z-index: 100;\r\n    box-shadow: 0 2px 20px rgba(11,31,58,0.3);\r\n    height: 64px;\r\n  }\r\n  .exam-header-left { display: flex; align-items: center; gap: 16px; }\r\n  .exam-logo {\r\n    font-family: 'Playfair Display', serif;\r\n    font-size: 1.2rem;\r\n    color: var(--gold);\r\n    white-space: nowrap;\r\n  }\r\n  .exam-identity { font-size: 13px; color: rgba(255,255,255,0.6); }\r\n  .exam-identity strong { color: var(--white); }\r\n\r\n  .timer-box {\r\n    display: flex; align-items: center; gap: 10px;\r\n    background: rgba(255,255,255,0.07);\r\n    border: 1px solid rgba(201,168,76,0.3);\r\n    border-radius: 8px;\r\n    padding: 8px 16px;\r\n  }\r\n  .timer-icon { font-size: 18px; color: var(--gold); }\r\n  #timer-display {\r\n    font-size: 22px;\r\n    font-weight: 600;\r\n    color: var(--white);\r\n    font-variant-numeric: tabular-nums;\r\n    letter-spacing: 2px;\r\n  }\r\n  #timer-display.warning { color: #FF8C42; animation: pulse 1s infinite; }\r\n  #timer-display.danger { color: #FF4444; animation: pulse 0.5s infinite; }\r\n  @keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.5} }\r\n\r\n  .exam-body {\r\n    max-width: 900px;\r\n    margin: 0 auto;\r\n    padding: 2rem 1.5rem;\r\n  }\r\n  .progress-bar-wrap {\r\n    background: var(--border);\r\n    border-radius: 4px;\r\n    height: 6px;\r\n    margin-bottom: 2rem;\r\n    overflow: hidden;\r\n  }\r\n  .progress-bar-fill {\r\n    height: 100%;\r\n    background: linear-gradient(90deg, var(--gold), var(--gold-light));\r\n    border-radius: 4px;\r\n    transition: width 0.3s ease;\r\n  }\r\n  .progress-label {\r\n    display: flex; justify-content: space-between;\r\n    font-size: 13px; color: var(--text-muted);\r\n    margin-bottom: 8px;\r\n  }\r\n\r\n  \/* Navigator *\/\r\n  .nav-grid {\r\n    display: grid;\r\n    grid-template-columns: repeat(10, 1fr);\r\n    gap: 5px;\r\n    margin-bottom: 2rem;\r\n    background: var(--white);\r\n    padding: 1rem;\r\n    border-radius: var(--radius);\r\n    border: 1px solid var(--border);\r\n  }\r\n  .nav-btn {\r\n    aspect-ratio: 1;\r\n    border: 1.5px solid var(--border);\r\n    background: var(--cream);\r\n    border-radius: 6px;\r\n    font-size: 11px;\r\n    font-weight: 500;\r\n    cursor: pointer;\r\n    color: var(--text-muted);\r\n    transition: all 0.15s;\r\n    display: flex; align-items: center; justify-content: center;\r\n  }\r\n  .nav-btn:hover { border-color: var(--gold); color: var(--navy); }\r\n  .nav-btn.answered { background: var(--navy); border-color: var(--navy); color: var(--white); }\r\n  .nav-btn.current { background: var(--gold); border-color: var(--gold); color: var(--navy); font-weight: 700; }\r\n\r\n  \/* Question Card *\/\r\n  .question-card {\r\n    background: var(--white);\r\n    border-radius: 16px;\r\n    border: 1px solid var(--border);\r\n    padding: 2rem;\r\n    margin-bottom: 1.5rem;\r\n  }\r\n  .q-header {\r\n    display: flex; align-items: flex-start; gap: 16px;\r\n    margin-bottom: 1.5rem;\r\n  }\r\n  .q-number {\r\n    background: var(--navy);\r\n    color: var(--gold);\r\n    font-size: 12px;\r\n    font-weight: 700;\r\n    padding: 6px 10px;\r\n    border-radius: 6px;\r\n    white-space: nowrap;\r\n    letter-spacing: 0.5px;\r\n  }\r\n  .q-category {\r\n    font-size: 11px;\r\n    font-weight: 600;\r\n    text-transform: uppercase;\r\n    letter-spacing: 1px;\r\n    padding: 4px 10px;\r\n    border-radius: 20px;\r\n    background: var(--cream-dark);\r\n    color: var(--text-muted);\r\n    align-self: flex-start;\r\n  }\r\n  .q-text {\r\n    font-size: 16px;\r\n    line-height: 1.7;\r\n    color: var(--text);\r\n    font-weight: 400;\r\n    flex: 1;\r\n  }\r\n  .options-list { list-style: none; display: flex; flex-direction: column; gap: 10px; }\r\n  .option-item {\r\n    display: flex; align-items: flex-start; gap: 12px;\r\n    padding: 14px 16px;\r\n    border: 1.5px solid var(--border);\r\n    border-radius: 10px;\r\n    cursor: pointer;\r\n    transition: all 0.2s;\r\n    background: var(--cream);\r\n    user-select: none;\r\n  }\r\n  .option-item:hover { border-color: var(--gold); background: rgba(201,168,76,0.06); }\r\n  .option-item.selected {\r\n    border-color: var(--navy);\r\n    background: rgba(11,31,58,0.05);\r\n  }\r\n  .option-item.selected .option-letter {\r\n    background: var(--navy); color: var(--gold);\r\n  }\r\n  .option-letter {\r\n    min-width: 30px; height: 30px;\r\n    border-radius: 6px;\r\n    background: var(--white);\r\n    border: 1.5px solid var(--border);\r\n    display: flex; align-items: center; justify-content: center;\r\n    font-weight: 700; font-size: 13px;\r\n    color: var(--text-muted);\r\n    transition: all 0.2s;\r\n    flex-shrink: 0;\r\n  }\r\n  .option-text { font-size: 14.5px; line-height: 1.5; color: var(--text); padding-top: 3px; }\r\n\r\n  .nav-controls {\r\n    display: flex; justify-content: space-between; align-items: center;\r\n    gap: 12px;\r\n  }\r\n  .btn-nav {\r\n    padding: 11px 24px;\r\n    border-radius: 8px;\r\n    font-size: 14px;\r\n    font-weight: 500;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n    transition: all 0.2s;\r\n    border: 1.5px solid var(--border);\r\n    background: var(--white);\r\n    color: var(--text);\r\n  }\r\n  .btn-nav:hover { border-color: var(--navy); color: var(--navy); }\r\n  .btn-nav:disabled { opacity: 0.4; cursor: not-allowed; }\r\n  .btn-submit {\r\n    padding: 12px 32px;\r\n    background: var(--navy);\r\n    color: var(--gold);\r\n    border: none;\r\n    border-radius: 8px;\r\n    font-size: 15px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n    transition: all 0.2s;\r\n  }\r\n  .btn-submit:hover { background: var(--navy-light); }\r\n\r\n  \/* Result Page *\/\r\n  #result-page {\r\n    display: none;\r\n    min-height: 100vh;\r\n    background: var(--navy);\r\n    padding: 3rem 2rem;\r\n  }\r\n  .result-inner {\r\n    max-width: 700px;\r\n    margin: 0 auto;\r\n    text-align: center;\r\n  }\r\n  .result-seal {\r\n    width: 100px; height: 100px;\r\n    border-radius: 50%;\r\n    border: 3px solid var(--gold);\r\n    margin: 0 auto 2rem;\r\n    display: flex; align-items: center; justify-content: center;\r\n    font-size: 40px;\r\n  }\r\n  .result-title {\r\n    font-family: 'Playfair Display', serif;\r\n    font-size: 2rem;\r\n    color: var(--white);\r\n    margin-bottom: 0.5rem;\r\n  }\r\n  .result-name { color: var(--gold-light); font-size: 1.1rem; margin-bottom: 2rem; }\r\n  .result-score-card {\r\n    background: rgba(255,255,255,0.06);\r\n    border: 1px solid rgba(201,168,76,0.3);\r\n    border-radius: 20px;\r\n    padding: 2.5rem;\r\n    margin-bottom: 2rem;\r\n  }\r\n  .score-number {\r\n    font-family: 'Playfair Display', serif;\r\n    font-size: 5rem;\r\n    color: var(--gold);\r\n    line-height: 1;\r\n    margin-bottom: 0.5rem;\r\n  }\r\n  .score-label { color: rgba(255,255,255,0.5); font-size: 14px; margin-bottom: 1.5rem; }\r\n  .score-breakdown {\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr 1fr;\r\n    gap: 16px;\r\n    margin-top: 1.5rem;\r\n  }\r\n  .breakdown-item {\r\n    background: rgba(255,255,255,0.05);\r\n    border-radius: 10px;\r\n    padding: 1rem;\r\n  }\r\n  .breakdown-num { font-size: 1.8rem; font-weight: 700; margin-bottom: 4px; }\r\n  .breakdown-lbl { font-size: 12px; color: rgba(255,255,255,0.5); }\r\n  .passed { color: #4CAF50; }\r\n  .failed { color: #FF5252; }\r\n  .btn-review {\r\n    padding: 14px 36px;\r\n    background: var(--gold);\r\n    color: var(--navy);\r\n    border: none;\r\n    border-radius: 10px;\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n    margin-top: 1rem;\r\n  }\r\n\r\n  \/* Review page *\/\r\n  #review-page {\r\n    display: none;\r\n    padding: 2rem;\r\n    max-width: 900px;\r\n    margin: 0 auto;\r\n  }\r\n  .review-header {\r\n    display: flex; justify-content: space-between; align-items: center;\r\n    margin-bottom: 2rem;\r\n  }\r\n  .review-title {\r\n    font-family: 'Playfair Display', serif;\r\n    font-size: 1.8rem;\r\n    color: var(--navy);\r\n  }\r\n  .review-card {\r\n    background: var(--white);\r\n    border-radius: 12px;\r\n    border: 1px solid var(--border);\r\n    padding: 1.5rem;\r\n    margin-bottom: 1rem;\r\n  }\r\n  .review-card.correct { border-left: 4px solid var(--success); }\r\n  .review-card.wrong { border-left: 4px solid var(--danger); }\r\n  .review-card.skipped { border-left: 4px solid var(--text-muted); }\r\n  .review-q { font-size: 15px; font-weight: 500; margin-bottom: 1rem; color: var(--text); }\r\n  .review-answer { font-size: 14px; margin-bottom: 4px; }\r\n  .review-answer span { font-weight: 600; }\r\n  .correct-ans { color: var(--success); }\r\n  .wrong-ans { color: var(--danger); }\r\n  .review-badge {\r\n    display: inline-block;\r\n    font-size: 11px;\r\n    font-weight: 700;\r\n    padding: 3px 10px;\r\n    border-radius: 20px;\r\n    margin-bottom: 8px;\r\n  }\r\n  .badge-correct { background: #E8F5E9; color: var(--success); }\r\n  .badge-wrong { background: #FFEBEE; color: var(--danger); }\r\n  .badge-skipped { background: #F5F5F5; color: var(--text-muted); }\r\n\r\n  \/* Modal *\/\r\n  .modal-overlay {\r\n    display: none;\r\n    position: fixed; inset: 0;\r\n    background: rgba(0,0,0,0.6);\r\n    z-index: 999;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n  .modal-overlay.active { display: flex; }\r\n  .modal-box {\r\n    background: var(--white);\r\n    border-radius: 16px;\r\n    padding: 2.5rem;\r\n    max-width: 420px;\r\n    width: 90%;\r\n    text-align: center;\r\n  }\r\n  .modal-icon { font-size: 48px; margin-bottom: 1rem; }\r\n  .modal-title { font-size: 1.4rem; font-weight: 700; margin-bottom: 0.5rem; color: var(--navy); }\r\n  .modal-text { color: var(--text-muted); font-size: 15px; margin-bottom: 1.5rem; line-height: 1.6; }\r\n  .modal-btns { display: flex; gap: 12px; justify-content: center; }\r\n  .modal-btn-cancel {\r\n    padding: 11px 24px;\r\n    border: 1.5px solid var(--border);\r\n    background: var(--white);\r\n    border-radius: 8px;\r\n    font-size: 14px;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n  }\r\n  .modal-btn-confirm {\r\n    padding: 11px 24px;\r\n    background: var(--navy);\r\n    color: var(--white);\r\n    border: none;\r\n    border-radius: 8px;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n    cursor: pointer;\r\n    font-family: 'DM Sans', sans-serif;\r\n  }\r\n  @media (max-width: 600px) {\r\n    .cover-inner { padding: 2rem 1.5rem; }\r\n    .cover-title { font-size: 1.8rem; }\r\n    .cover-meta { grid-template-columns: 1fr; }\r\n    .nav-grid { grid-template-columns: repeat(10, 1fr); }\r\n    .score-breakdown { grid-template-columns: 1fr 1fr; }\r\n    .exam-header { flex-wrap: wrap; height: auto; padding: 8px 1rem; gap: 6px; }\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- COVER PAGE -->\r\n<div id=\"cover-page\">\r\n  <div class=\"cover-inner\">\r\n    <div class=\"cover-badge\">Ujian Sertifikasi<\/div>\r\n    <h1 class=\"cover-title\">Junior Konsultan Pajak<\/h1>\r\n    <p class=\"cover-subtitle\">Uji Kompetensi Perpajakan \u2014 100 Soal Pilihan Ganda<\/p>\r\n\r\n    <div class=\"cover-meta\">\r\n      <div class=\"cover-meta-item\">\r\n        <span class=\"cover-meta-icon\">\ud83d\udccb<\/span>\r\n        <div class=\"cover-meta-text\"><strong>100 Soal<\/strong>Pilihan Ganda<\/div>\r\n      <\/div>\r\n      <div class=\"cover-meta-item\">\r\n        <span class=\"cover-meta-icon\">\u23f1\ufe0f<\/span>\r\n        <div class=\"cover-meta-text\"><strong>120 Menit<\/strong>Waktu Ujian<\/div>\r\n      <\/div>\r\n      <div class=\"cover-meta-item\">\r\n        <span class=\"cover-meta-icon\">\ud83d\udcda<\/span>\r\n        <div class=\"cover-meta-text\"><strong>4 Materi<\/strong>KUP \u00b7 PPh Potput \u00b7 PPh OP \u00b7 Adm.<\/div>\r\n      <\/div>\r\n      <div class=\"cover-meta-item\">\r\n        <span class=\"cover-meta-icon\">\ud83c\udfaf<\/span>\r\n        <div class=\"cover-meta-text\"><strong>Nilai Lulus<\/strong>75 \/ 100 \u00b7 Aturan Terbaru (Coretax)<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"form-group\">\r\n      <label>Nama Peserta<\/label>\r\n      <input type=\"text\" id=\"input-nama\" placeholder=\"Masukkan nama lengkap Anda\" autocomplete=\"off\">\r\n    <\/div>\r\n    <div class=\"form-group\">\r\n      <label>Tanggal Ujian<\/label>\r\n      <input type=\"date\" id=\"input-tanggal\">\r\n    <\/div>\r\n\r\n    <button class=\"btn-start\" onclick=\"startExam()\">Mulai Ujian \u2192<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- EXAM PAGE -->\r\n<div id=\"exam-page\">\r\n  <div class=\"exam-header\">\r\n    <div class=\"exam-header-left\">\r\n      <div class=\"exam-logo\">Ujian Pajak<\/div>\r\n      <div class=\"exam-identity\" id=\"header-identity\"><\/div>\r\n    <\/div>\r\n    <div class=\"timer-box\">\r\n      <span class=\"timer-icon\">\u23f1<\/span>\r\n      <span id=\"timer-display\">02:00:00<\/span>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"exam-body\">\r\n    <div class=\"progress-label\">\r\n      <span id=\"progress-text\">Soal 1 dari 100<\/span>\r\n      <span id=\"answered-count\">0 terjawab<\/span>\r\n    <\/div>\r\n    <div class=\"progress-bar-wrap\">\r\n      <div class=\"progress-bar-fill\" id=\"progress-fill\" style=\"width:1%\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"nav-grid\" id=\"nav-grid\"><\/div>\r\n\r\n    <div class=\"question-card\" id=\"question-card\">\r\n      <!-- question rendered here -->\r\n    <\/div>\r\n\r\n    <div class=\"nav-controls\">\r\n      <button class=\"btn-nav\" id=\"btn-prev\" onclick=\"navigate(-1)\">\u2190 Sebelumnya<\/button>\r\n      <button class=\"btn-submit\" onclick=\"confirmSubmit()\">Selesai & Kumpulkan<\/button>\r\n      <button class=\"btn-nav\" id=\"btn-next\" onclick=\"navigate(1)\">Berikutnya \u2192<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- RESULT PAGE -->\r\n<div id=\"result-page\">\r\n  <div class=\"result-inner\">\r\n    <div class=\"result-seal\" id=\"result-seal\"><\/div>\r\n    <h2 class=\"result-title\" id=\"result-title\">Hasil Ujian<\/h2>\r\n    <p class=\"result-name\" id=\"result-name\"><\/p>\r\n    <div class=\"result-score-card\">\r\n      <div class=\"score-number\" id=\"score-number\"><\/div>\r\n      <div class=\"score-label\">Nilai Akhir (skala 100)<\/div>\r\n      <div id=\"pass-label\" style=\"font-size:18px;font-weight:600;margin-bottom:1rem;\"><\/div>\r\n      <div class=\"score-breakdown\">\r\n        <div class=\"breakdown-item\">\r\n          <div class=\"breakdown-num passed\" id=\"correct-count\"><\/div>\r\n          <div class=\"breakdown-lbl\">Benar<\/div>\r\n        <\/div>\r\n        <div class=\"breakdown-item\">\r\n          <div class=\"breakdown-num failed\" id=\"wrong-count\"><\/div>\r\n          <div class=\"breakdown-lbl\">Salah<\/div>\r\n        <\/div>\r\n        <div class=\"breakdown-item\">\r\n          <div class=\"breakdown-num\" style=\"color:rgba(255,255,255,0.5)\" id=\"skip-count\"><\/div>\r\n          <div class=\"breakdown-lbl\">Tidak Dijawab<\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <button class=\"btn-review\" onclick=\"showReview()\">\ud83d\udcc4 Lihat Pembahasan Jawaban<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- REVIEW PAGE -->\r\n<div id=\"review-page\">\r\n  <div class=\"review-header\">\r\n    <h2 class=\"review-title\">Pembahasan Jawaban<\/h2>\r\n    <button class=\"btn-nav\" onclick=\"document.getElementById('review-page').style.display='none';document.getElementById('result-page').style.display='block';\">\u2190 Kembali<\/button>\r\n  <\/div>\r\n  <div id=\"review-content\"><\/div>\r\n<\/div>\r\n\r\n<!-- CONFIRM MODAL -->\r\n<div class=\"modal-overlay\" id=\"modal-submit\">\r\n  <div class=\"modal-box\">\r\n    <div class=\"modal-icon\">\ud83d\udce4<\/div>\r\n    <div class=\"modal-title\">Kumpulkan Jawaban?<\/div>\r\n    <div class=\"modal-text\" id=\"modal-unanswered-msg\"><\/div>\r\n    <div class=\"modal-btns\">\r\n      <button class=\"modal-btn-cancel\" onclick=\"closeModal('modal-submit')\">Lanjut Kerjakan<\/button>\r\n      <button class=\"modal-btn-confirm\" onclick=\"submitExam()\">Ya, Kumpulkan<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- TIME UP MODAL -->\r\n<div class=\"modal-overlay\" id=\"modal-timeup\">\r\n  <div class=\"modal-box\">\r\n    <div class=\"modal-icon\">\u23f0<\/div>\r\n    <div class=\"modal-title\">Waktu Habis!<\/div>\r\n    <div class=\"modal-text\">Waktu ujian Anda telah berakhir. Jawaban akan dikumpulkan secara otomatis.<\/div>\r\n    <div class=\"modal-btns\">\r\n      <button class=\"modal-btn-confirm\" onclick=\"submitExam()\">Lihat Hasil<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/\/ ============================================================\r\n\/\/ DATA SOAL \u2014 100 Soal Perpajakan\r\n\/\/ ============================================================\r\nconst ALL_QUESTIONS = [\r\n  \/\/ ========== KUP (25 soal) ==========\r\n  {cat:\"KUP\", q:\"Berdasarkan UU KUP, jangka waktu penerbitan Surat Ketetapan Pajak Kurang Bayar (SKPKB) adalah...\",\r\n   opts:[\"2 tahun setelah saat terutang pajak\",\"5 tahun setelah saat terutang pajak\",\"3 tahun sejak tanggal SPT disampaikan\",\"10 tahun apabila ada tindak pidana pajak\"],\r\n   ans:1, kunci:\"Pasal 13 ayat (1) UU KUP: SKPKB diterbitkan dalam jangka waktu 5 tahun setelah saat terutang pajak.\"},\r\n  {cat:\"KUP\", q:\"Berdasarkan Pasal 7 UU KUP, sanksi administrasi berupa denda atas keterlambatan penyampaian SPT Tahunan PPh untuk WP Badan dan WP Orang Pribadi masing-masing adalah...\",\r\n   opts:[\"Rp 100.000 untuk Badan dan Rp 1.000.000 untuk OP\",\"Rp 1.000.000 untuk Badan dan Rp 100.000 untuk OP\",\"Rp 500.000 untuk keduanya\",\"Rp 1.000.000 untuk keduanya\"],\r\n   ans:1, kunci:\"Pasal 7 ayat (1) UU KUP: sanksi denda keterlambatan SPT Tahunan PPh Badan sebesar Rp 1.000.000, sedangkan SPT Tahunan PPh Orang Pribadi sebesar Rp 100.000. Denda ini bersifat tetap dan tidak bergantung pada jumlah pajak terutang.\"},\r\n  {cat:\"KUP\", q:\"Wajib Pajak berhak mengajukan keberatan atas SKPKB dalam jangka waktu...\",\r\n   opts:[\"30 hari sejak tanggal SKPKB diterbitkan\",\"60 hari sejak tanggal SKPKB diterbitkan\",\"3 bulan sejak tanggal SKPKB diterbitkan\",\"1 tahun sejak tanggal SKPKB diterbitkan\"],\r\n   ans:2, kunci:\"Pasal 25 ayat (3) UU KUP: Keberatan diajukan paling lama 3 bulan sejak tanggal dikirim SKP atau tanggal pemotongan.\"},\r\n  {cat:\"KUP\", q:\"Tarif bunga penagihan pajak yang berlaku sejak UU HPP berdasarkan suku bunga acuan ditetapkan oleh...\",\r\n   opts:[\"Menteri Keuangan setiap bulan\",\"Bank Indonesia setiap kuartal\",\"DJP setiap tahun\",\"Bappenas setiap semester\"],\r\n   ans:0, kunci:\"Pasal 19 UU KUP sebagaimana diubah UU HPP: bunga penagihan ditetapkan oleh Menteri Keuangan berdasarkan suku bunga acuan bank sentral.\"},\r\n  {cat:\"KUP\", q:\"Pemeriksaan Pajak untuk menguji kepatuhan pemenuhan kewajiban perpajakan WP dapat dilakukan dalam hal...\",\r\n   opts:[\"WP mengajukan permintaan restitusi\",\"WP melakukan merger perusahaan\",\"WP terlambat menyampaikan SPT Masa\",\"WP dinyatakan pailit oleh pengadilan\"],\r\n   ans:0, kunci:\"Pasal 29 UU KUP: pemeriksaan untuk menguji kepatuhan dapat dilakukan antara lain jika WP mengajukan permohonan pengembalian kelebihan pembayaran pajak.\"},\r\n  {cat:\"KUP\", q:\"Berdasarkan UU KUP, pengajuan banding atas keputusan keberatan pajak diajukan kepada...\",\r\n   opts:[\"Direktorat Jenderal Pajak\",\"Kementerian Keuangan\",\"Pengadilan Pajak\",\"Mahkamah Agung\"],\r\n   ans:2, kunci:\"Pasal 27 UU KUP: WP dapat mengajukan permohonan banding kepada badan peradilan pajak (Pengadilan Pajak).\"},\r\n  {cat:\"KUP\", q:\"NPWP wajib dimiliki oleh setiap orang pribadi yang memperoleh penghasilan di atas batas Penghasilan Tidak Kena Pajak. Batas PTKP untuk WP lajang (TK\/0) tahun 2024 adalah...\",\r\n   opts:[\"Rp 36.000.000\/tahun\",\"Rp 54.000.000\/tahun\",\"Rp 48.000.000\/tahun\",\"Rp 60.000.000\/tahun\"],\r\n   ans:1, kunci:\"PMK 101\/PMK.010\/2016: PTKP untuk WP lajang (TK\/0) adalah Rp 54.000.000 per tahun.\"},\r\n  {cat:\"KUP\", q:\"Berdasarkan Pasal 39 UU KUP, WP yang dengan sengaja tidak menyampaikan SPT atau menyampaikan SPT dengan isi tidak benar sehingga menimbulkan kerugian negara, diancam sanksi...\",\r\n   opts:[\"Sanksi administrasi berupa denda tetap Rp 5.000.000\",\"Sanksi administrasi berupa bunga 2% per bulan\",\"Sanksi pidana penjara paling singkat 6 bulan dan paling lama 6 tahun serta denda paling sedikit 2 kali dan paling banyak 4 kali jumlah pajak terutang\",\"Sanksi administrasi berupa kenaikan 150% dari pajak kurang bayar\"],\r\n   ans:2, kunci:\"Pasal 39 UU KUP sebagaimana diubah UU HPP: WP yang dengan sengaja tidak menyampaikan SPT atau menyampaikan SPT dengan isi tidak benar\/tidak lengkap sehingga menimbulkan kerugian negara dipidana penjara paling singkat 6 bulan dan paling lama 6 tahun serta denda paling sedikit 2 kali dan paling banyak 4 kali jumlah pajak terutang. Ini adalah sanksi PIDANA, bukan sanksi administrasi.\"},\r\n  {cat:\"KUP\", q:\"Daluwarsa penagihan pajak sesuai UU KUP sebagaimana diubah UU HPP adalah...\",\r\n   opts:[\"3 tahun\",\"5 tahun\",\"10 tahun\",\"20 tahun\"],\r\n   ans:1, kunci:\"Pasal 22 UU KUP sebagaimana diubah UU HPP: daluwarsa penagihan pajak dipersingkat dari 10 tahun menjadi 5 tahun sejak saat terutangnya pajak atau berakhirnya masa pajak, bagian tahun pajak, atau tahun pajak yang bersangkutan.\"},\r\n  {cat:\"KUP\", q:\"Surat Tagihan Pajak (STP) diterbitkan dalam hal...\",\r\n   opts:[\"Wajib Pajak tidak melunasi utang pajak dalam SKPKB\",\"Pajak yang terutang dalam SPT tidak atau kurang dibayar\",\"Wajib Pajak tidak menyampaikan SPT\",\"Wajib Pajak tidak mendaftarkan diri untuk memperoleh NPWP\"],\r\n   ans:1, kunci:\"Pasal 14 UU KUP: STP diterbitkan antara lain karena pajak yang terutang dalam SPT tidak atau kurang dibayar.\"},\r\n  {cat:\"KUP\", q:\"Batas waktu penyampaian SPT Tahunan PPh Wajib Pajak Badan adalah...\",\r\n   opts:[\"3 bulan setelah akhir tahun pajak\",\"4 bulan setelah akhir tahun pajak\",\"6 bulan setelah akhir tahun pajak\",\"12 bulan setelah akhir tahun pajak\"],\r\n   ans:1, kunci:\"Pasal 3 ayat (3) UU KUP: SPT Tahunan PPh WP Badan disampaikan paling lama 4 bulan setelah akhir tahun pajak.\"},\r\n  {cat:\"KUP\", q:\"Apa yang dimaksud dengan pembetulan SPT secara sukarela (voluntary disclosure) berdasarkan UU KUP?\",\r\n   opts:[\"WP dapat membetulkan SPT kapan saja tanpa batas waktu\",\"WP dapat membetulkan SPT dalam 2 tahun setelah batas waktu penyampaian\",\"WP dapat membetulkan SPT sebelum dilakukan pemeriksaan atau tindakan verifikasi\",\"WP dapat membetulkan SPT hanya jika mendapat izin DJP\"],\r\n   ans:2, kunci:\"Pasal 8 UU KUP: WP dapat membetulkan SPT yang disampaikan sendiri selama belum dilakukan tindakan pemeriksaan.\"},\r\n  {cat:\"KUP\", q:\"Tarif sanksi bunga untuk SKPKB berdasarkan UU HPP adalah per bulan dengan maksimum...\",\r\n   opts:[\"12 bulan\",\"24 bulan\",\"36 bulan\",\"48 bulan\"],\r\n   ans:1, kunci:\"Pasal 13 ayat (2) UU KUP (UU HPP): bunga dikenakan paling lama 24 bulan.\"},\r\n  {cat:\"KUP\", q:\"Wajib Pajak yang mendaftarkan diri untuk mendapatkan NPWP harus dilakukan paling lambat...\",\r\n   opts:[\"Pada akhir bulan berikutnya setelah terpenuhi syarat subjektif dan objektif\",\"7 hari kerja setelah terpenuhi syarat\",\"30 hari kalender setelah terpenuhi syarat\",\"Pada awal tahun pajak berikutnya\"],\r\n   ans:0, kunci:\"Pasal 2 ayat (1) UU KUP: WP wajib mendaftarkan diri pada kantor DJP paling lambat akhir bulan berikutnya setelah terpenuhi syarat subjektif dan objektif.\"},\r\n  {cat:\"KUP\", q:\"Dalam hal keberatan WP ditolak atau dikabulkan sebagian, WP dapat mengajukan banding ke Pengadilan Pajak dalam jangka waktu...\",\r\n   opts:[\"30 hari sejak keputusan keberatan\",\"3 bulan sejak keputusan keberatan\",\"6 bulan sejak keputusan keberatan\",\"12 bulan sejak keputusan keberatan\"],\r\n   ans:1, kunci:\"Pasal 27 ayat (3) UU KUP: permohonan banding diajukan dalam jangka waktu 3 bulan sejak tanggal keputusan keberatan diterima.\"},\r\n  {cat:\"KUP\", q:\"Kewajiban pembukuan bagi WP Badan minimal meliputi...\",\r\n   opts:[\"Catatan penjualan saja\",\"Neraca dan laporan laba rugi\",\"Catatan penjualan dan pembelian saja\",\"Hanya laporan arus kas\"],\r\n   ans:1, kunci:\"Pasal 28 UU KUP: pembukuan sekurang-kurangnya terdiri dari catatan mengenai harta, kewajiban, modal, penghasilan dan biaya, serta penjualan dan pembelian \u2014 dituangkan dalam neraca dan laporan laba rugi.\"},\r\n  {cat:\"KUP\", q:\"Penghapusan NPWP dapat dilakukan DJP apabila WP orang pribadi...\",\r\n   opts:[\"Tidak aktif selama 2 tahun berturut-turut\",\"Meninggal dunia dan tidak meninggalkan warisan\",\"Pindah ke luar negeri\",\"Penghasilannya turun di bawah PTKP\"],\r\n   ans:1, kunci:\"Pasal 2 ayat (6) UU KUP: penghapusan NPWP dapat dilakukan antara lain karena WP meninggal dunia dan tidak meninggalkan warisan.\"},\r\n  {cat:\"KUP\", q:\"Surat Ketetapan Pajak Lebih Bayar (SKPLB) diterbitkan apabila...\",\r\n   opts:[\"Jumlah kredit pajak lebih besar dari pajak yang terutang\",\"Jumlah pajak terutang lebih besar dari kredit pajak\",\"WP mengajukan keberatan yang dikabulkan\",\"Pajak yang dibayar sama dengan yang terutang\"],\r\n   ans:0, kunci:\"Pasal 17 UU KUP: SKPLB diterbitkan apabila jumlah kredit pajak atau jumlah pajak yang dibayar lebih besar dari jumlah pajak yang terutang.\"},\r\n  {cat:\"KUP\", q:\"Nomor Pokok Wajib Pajak (NPWP) terdiri dari berapa digit?\",\r\n   opts:[\"12 digit\",\"15 digit\",\"16 digit\",\"20 digit\"],\r\n   ans:2, kunci:\"Berdasarkan PMK-112\/PMK.03\/2022, NPWP baru berbasis NIK terdiri dari 16 digit (sejak 2024). NPWP lama 15 digit namun format baru menggunakan 16 digit.\"},\r\n  {cat:\"KUP\", q:\"Bila WP memperoleh bukti WP melakukan tindak pidana di bidang perpajakan, DJP dapat menerbitkan SKPKB melampaui jangka waktu 5 tahun dengan maksimum...\",\r\n   opts:[\"7 tahun\",\"10 tahun\",\"15 tahun\",\"20 tahun\"],\r\n   ans:1, kunci:\"Pasal 13 ayat (5) UU KUP: SKPKB dapat diterbitkan setelah melampaui jangka waktu 5 tahun (paling lama 10 tahun setelah saat terutangnya pajak) bila terdapat indikasi tindak pidana.\"},\r\n  {cat:\"KUP\", q:\"Hak Wajib Pajak untuk meminta pengembalian kelebihan pembayaran pajak (restitusi) daluwarsa setelah...\",\r\n   opts:[\"2 tahun\",\"3 tahun\",\"5 tahun\",\"10 tahun\"],\r\n   ans:2, kunci:\"Pasal 11 ayat (4) jo Pasal 13 UU KUP: hak WP untuk menuntut pengembalian kelebihan pembayaran pajak daluwarsa setelah 5 tahun.\"},\r\n  {cat:\"KUP\", q:\"Berdasarkan Pasal 7 UU KUP, sanksi administrasi berupa denda atas keterlambatan penyampaian SPT Masa PPN adalah...\",\r\n   opts:[\"Rp 100.000 per masa pajak\",\"Rp 500.000 per masa pajak\",\"Rp 1.000.000 per masa pajak\",\"Rp 2.000.000 per masa pajak\"],\r\n   ans:1, kunci:\"Pasal 7 ayat (1) UU KUP: sanksi denda keterlambatan penyampaian SPT Masa PPN adalah Rp 500.000 per masa pajak. Berbeda dengan SPT Masa lainnya (selain PPN) yang dendanya Rp 100.000, dan SPT Tahunan PPh Badan Rp 1.000.000 serta SPT Tahunan PPh OP Rp 100.000.\"},\r\n  {cat:\"KUP\", q:\"WP yang melakukan pembukuan menggunakan bahasa asing dan mata uang asing selain Dollar AS wajib mendapat izin dari...\",\r\n   opts:[\"Dirjen Pajak\",\"Menteri Keuangan\",\"Kepala KPP setempat\",\"Presiden\"],\r\n   ans:1, kunci:\"Pasal 28 ayat (8) UU KUP: penyelenggaraan pembukuan dalam bahasa asing dan mata uang selain rupiah dilakukan setelah mendapat izin Menteri Keuangan.\"},\r\n  {cat:\"KUP\", q:\"Berdasarkan UU KUP, 'Saat terutang pajak' untuk PPh Badan adalah...\",\r\n   opts:[\"Saat diterbitkannya tagihan\",\"Saat akhir tahun pajak\",\"Saat dibayarkan penghasilan\",\"Saat disampaikan SPT Tahunan\"],\r\n   ans:1, kunci:\"PPh Badan umumnya terutang pada akhir tahun pajak.\"},\r\n  {cat:\"KUP\", q:\"Dalam pemeriksaan pajak, WP wajib meminjamkan buku dan dokumen paling lambat...\",\r\n   opts:[\"7 hari kerja\",\"1 bulan\",\"1 bulan yang dapat diperpanjang 1 bulan\",\"3 bulan\"],\r\n   ans:2, kunci:\"Pasal 29 ayat (3) UU KUP: WP yang diperiksa wajib meminjamkan buku dan dokumen paling lambat 1 bulan yang dapat diperpanjang paling lama 1 bulan.\"},\r\n\r\n  \/\/ ========== PPh PEMOTONGAN & PEMUNGUTAN (25 soal) ==========\r\n  {cat:\"PPh Potput\", q:\"KASUS: PT Maju Bersama membayar honorarium sebesar Rp 10.000.000 kepada dr. Santi, seorang dokter yang berpraktik secara mandiri (bukan pegawai PT tersebut), atas jasa konsultasi kesehatan karyawan. PPh yang wajib dipotong PT Maju Bersama adalah...\",\r\n   opts:[\"PPh Pasal 21, karena dr. Santi adalah orang pribadi penerima honorarium\",\"PPh Pasal 23 sebesar 2%, karena merupakan jasa dari WP Badan\",\"PPh Pasal 4 ayat (2) bersifat final\",\"Tidak dipotong PPh karena nilainya di bawah Rp 50 juta\"],\r\n   ans:0, kunci:\"PPh Pasal 21: honorarium yang dibayarkan kepada orang pribadi (dokter, pengacara, konsultan, dll) yang bukan pegawai tetap atas jasa\/kegiatan yang dilakukan dipotong PPh Pasal 21 \u2014 bukan PPh Pasal 23. PPh Pasal 23 berlaku jika penerima penghasilan adalah WP Badan atau BUT.\"},\r\n  {cat:\"PPh Potput\", q:\"KASUS: PT Konstruksi Jaya menyewa sebuah ruko milik Bapak Hendra (WP OP) seharga Rp 60.000.000 per tahun untuk dijadikan kantor cabang. PPh yang wajib dipotong PT Konstruksi Jaya adalah...\",\r\n   opts:[\"PPh Pasal 23 sebesar 2% = Rp 1.200.000\",\"PPh Pasal 21 sesuai tarif progresif\",\"PPh Pasal 4 ayat (2) sebesar 10% = Rp 6.000.000 bersifat final\",\"PPh Pasal 26 sebesar 20%\"],\r\n   ans:2, kunci:\"PP 34 Tahun 2017: sewa tanah dan\/atau bangunan dikenakan PPh Final Pasal 4 ayat (2) sebesar 10% dari nilai bruto persewaan, dipotong oleh penyewa jika penyewa adalah badan atau orang pribadi yang ditunjuk. PPh Pasal 23 tidak berlaku untuk sewa tanah\/bangunan \u2014 ini sering menjadi jebakan ujian.\"},\r\n  {cat:\"PPh Potput\", q:\"KASUS: CV Sentosa membayar jasa desain grafis sebesar Rp 20.000.000 kepada Studio Kreatif (berbentuk CV, memiliki NPWP). PPh yang wajib dipotong CV Sentosa adalah...\",\r\n   opts:[\"PPh Pasal 21 karena merupakan pembayaran jasa\",\"PPh Pasal 23 sebesar 2% = Rp 400.000\",\"PPh Pasal 4 ayat (2) sebesar 10% bersifat final\",\"Tidak ada pemotongan karena penerima adalah CV\"],\r\n   ans:1, kunci:\"PPh Pasal 23: imbalan jasa tertentu (termasuk jasa desain) yang dibayarkan kepada WP Badan dalam negeri (CV, PT, Firma, dll) dikenakan PPh Pasal 23 sebesar 2% dari jumlah bruto tidak termasuk PPN. Berbeda jika penerima adalah orang pribadi \u2014 maka dipotong PPh Pasal 21.\"},\r\n  {cat:\"PPh Potput\", q:\"KASUS: PT Media Nusantara mengadakan kuis berhadiah di media sosialnya. Pemenang pertama, Ibu Rini (WP OP), berhak mendapat hadiah uang tunai Rp 50.000.000. PPh atas hadiah tersebut adalah...\",\r\n   opts:[\"PPh Pasal 21 sesuai tarif TER karena diterima orang pribadi\",\"PPh Pasal 23 sebesar 15% = Rp 7.500.000\",\"PPh Pasal 4 ayat (2) Final sebesar 25% = Rp 12.500.000\",\"PPh Pasal 4 ayat (2) Final sebesar 20% = Rp 10.000.000\"],\r\n   ans:3, kunci:\"Pasal 4 ayat (2) UU PPh jo PP 132 Tahun 2000: hadiah undian dikenakan PPh Final sebesar 20% dari jumlah bruto hadiah. Hadiah undian berbeda dengan hadiah atas prestasi pekerjaan\/kegiatan (PPh 21) atau hadiah yang diterima WP Badan (PPh 23) \u2014 kuncinya adalah sifat 'undian\/kuis' yang berbasis keberuntungan.\"},\r\n  {cat:\"PPh Potput\", q:\"KASUS: PT Properti Indah menerima pembayaran sewa gudang sebesar Rp 100.000.000 dari PT Logistik Cepat. Siapa yang memotong PPh dan berapa jumlahnya?\",\r\n   opts:[\"PT Properti Indah memotong sendiri PPh Pasal 23 sebesar 2%\",\"PT Logistik Cepat memotong PPh Pasal 23 sebesar 2% = Rp 2.000.000\",\"PT Logistik Cepat memotong PPh Pasal 4 ayat (2) Final sebesar 10% = Rp 10.000.000\",\"PT Properti Indah menyetor sendiri PPh Final 10% tanpa pemotongan\"],\r\n   ans:2, kunci:\"PP 34 Tahun 2017: sewa tanah\/bangunan dikenakan PPh Final Pasal 4 ayat (2) sebesar 10%. Jika penyewa adalah WP Badan (PT Logistik Cepat), maka penyewa wajib memotong dan menyetorkan PPh tersebut. Meskipun penerima sewa (PT Properti Indah) juga WP Badan, tetap dikenakan PPh Final \u2014 bukan PPh Pasal 23 sebesar 2%.\"},\r\n  {cat:\"PPh Potput\", q:\"Tarif PPh Pasal 21 untuk pegawai tetap yang tidak memiliki NPWP lebih tinggi sebesar...\",\r\n   opts:[\"10% dari tarif normal\",\"20% lebih tinggi dari tarif normal\",\"50% lebih tinggi dari tarif normal\",\"Sama dengan tarif normal\"],\r\n   ans:1, kunci:\"Pasal 21 ayat (5a) UU PPh: tarif PPh Pasal 21 bagi penerima penghasilan yang tidak memiliki NPWP lebih tinggi 20% daripada tarif yang berlaku.\"},\r\n  {cat:\"PPh Potput\", q:\"Batas Penghasilan Tidak Kena Pajak (PTKP) untuk WP dengan status kawin dan memiliki 3 anak (K\/3) tahun 2024 adalah...\",\r\n   opts:[\"Rp 54.000.000\",\"Rp 67.500.000\",\"Rp 72.000.000\",\"Rp 76.500.000\"],\r\n   ans:2, kunci:\"PTKP K\/3 = PTKP dasar (54jt) + kawin (4,5jt) + 3 anak (3x4,5jt = 13,5jt) = Rp 72.000.000.\"},\r\n  {cat:\"PPh Potput\", q:\"PPh Pasal 22 dipungut atas...\",\r\n   opts:[\"Dividen yang dibayarkan kepada WP dalam negeri\",\"Pembayaran atas pembelian barang oleh bendahara pemerintah\",\"Bunga deposito yang dibayarkan kepada nasabah\",\"Royalti yang dibayarkan kepada WP luar negeri\"],\r\n   ans:1, kunci:\"Pasal 22 UU PPh: PPh Pasal 22 dipungut antara lain atas pembelian barang oleh bendahara pemerintah dan instansi pemerintah lainnya.\"},\r\n  {cat:\"PPh Potput\", q:\"Setelah berlakunya UU HPP, perlakuan PPh atas dividen yang diterima WP orang pribadi dalam negeri dari PT dalam negeri adalah...\",\r\n   opts:[\"Dipotong PPh Pasal 23 sebesar 15% bersifat tidak final\",\"Dipotong PPh Pasal 23 sebesar 10% bersifat tidak final\",\"Dikenakan PPh Final sebesar 10% berdasarkan Pasal 4 ayat (2) UU PPh\",\"Dikecualikan dari PPh apabila diinvestasikan kembali di Indonesia\"],\r\n   ans:2, kunci:\"UU HPP mengubah ketentuan dividen: dividen yang diterima WP orang pribadi dalam negeri tidak lagi dikenakan PPh Pasal 23, melainkan dikenakan PPh Final 10% berdasarkan Pasal 4 ayat (2) UU PPh. Pengecualian berlaku jika dividen tersebut diinvestasikan kembali di Indonesia sesuai ketentuan yang berlaku \u2014 dalam hal ini dikecualikan dari objek PPh.\"},\r\n  {cat:\"PPh Potput\", q:\"PPh Pasal 26 dikenakan atas penghasilan yang diterima oleh...\",\r\n   opts:[\"WP orang pribadi dalam negeri\",\"WP Badan dalam negeri\",\"WP luar negeri selain BUT\",\"Semua WP tanpa pembeda\"],\r\n   ans:2, kunci:\"Pasal 26 UU PPh: PPh Pasal 26 dikenakan atas penghasilan yang diterima WP luar negeri selain BUT dari Indonesia.\"},\r\n  {cat:\"PPh Potput\", q:\"Tarif PPh Pasal 26 atas penghasilan bruto jika tidak ada tax treaty adalah...\",\r\n   opts:[\"10%\",\"15%\",\"20%\",\"25%\"],\r\n   ans:2, kunci:\"Pasal 26 ayat (1) UU PPh: tarif PPh Pasal 26 adalah 20% dari penghasilan bruto jika tidak ada Perjanjian Penghindaran Pajak Berganda (P3B\/tax treaty).\"},\r\n  {cat:\"PPh Potput\", q:\"Berdasarkan PMK-246\/PMK.03\/2024, saat penyetoran PPh Pasal 21 yang dipotong oleh pemotong pajak paling lambat adalah...\",\r\n   opts:[\"Tanggal 10 bulan berikutnya\",\"Tanggal 15 bulan berikutnya\",\"Tanggal 20 bulan berikutnya\",\"Akhir bulan berikutnya\"],\r\n   ans:1, kunci:\"PMK-246\/PMK.03\/2024 (berlaku mulai 2025): batas waktu penyetoran PPh Pasal 21 diubah dari tanggal 10 menjadi tanggal 15 bulan takwim berikutnya setelah masa pajak berakhir. PMK-242\/PMK.03\/2014 yang menyebut tanggal 10 sudah tidak berlaku.\"},\r\n  {cat:\"PPh Potput\", q:\"Biaya jabatan yang dapat dikurangkan untuk menghitung PPh Pasal 21 pegawai tetap adalah...\",\r\n   opts:[\"5% dari penghasilan bruto maksimal Rp 4.800.000\/tahun\",\"5% dari penghasilan bruto maksimal Rp 6.000.000\/tahun\",\"5% dari penghasilan bruto maksimal Rp 3.000.000\/tahun\",\"10% dari penghasilan neto\"],\r\n   ans:1, kunci:\"PMK 252\/PMK.03\/2008: biaya jabatan = 5% dari penghasilan bruto maksimum Rp 6.000.000 per tahun.\"},\r\n  {cat:\"PPh Potput\", q:\"Tarif PPh Pasal 23 atas penghasilan berupa royalti adalah...\",\r\n   opts:[\"5%\",\"10%\",\"15%\",\"20%\"],\r\n   ans:2, kunci:\"Pasal 23 ayat (1) huruf a UU PPh: tarif PPh Pasal 23 atas royalti adalah 15% dari jumlah bruto.\"},\r\n  {cat:\"PPh Potput\", q:\"Pemotong PPh Pasal 21 wajib menyampaikan SPT Masa PPh Pasal 21 paling lambat...\",\r\n   opts:[\"Tanggal 10 bulan berikutnya\",\"Tanggal 15 bulan berikutnya\",\"Tanggal 20 bulan berikutnya\",\"Akhir bulan berikutnya\"],\r\n   ans:2, kunci:\"PMK-242\/PMK.03\/2014 jo PER-03\/PJ\/2022: SPT Masa PPh Pasal 21 dilaporkan paling lambat tanggal 20 bulan takwim berikutnya.\"},\r\n  {cat:\"PPh Potput\", q:\"PPh Pasal 22 atas impor barang dengan API (Angka Pengenal Importir) adalah...\",\r\n   opts:[\"2,5% dari nilai impor\",\"7,5% dari nilai impor\",\"10% dari nilai impor\",\"15% dari nilai impor\"],\r\n   ans:0, kunci:\"PMK-34\/PMK.010\/2017: tarif PPh Pasal 22 impor atas importir yang menggunakan API adalah 2,5% dari nilai impor.\"},\r\n  {cat:\"PPh Potput\", q:\"PPh Pasal 4 ayat (2) atas bunga tabungan\/deposito pada bank yang diterima WP orang pribadi dalam negeri dikenakan tarif...\",\r\n   opts:[\"5%\",\"10%\",\"20%\",\"15%\"],\r\n   ans:2, kunci:\"PP 131 Tahun 2000: bunga deposito dan tabungan yang diterima WP dalam negeri dikenakan PPh Final sebesar 20% dari jumlah bruto. Berbeda dengan WP luar negeri yang dikenakan 20% atau sesuai tarif P3B yang berlaku.\"},\r\n  {cat:\"PPh Potput\", q:\"Siapakah yang wajib memotong PPh Pasal 23?\",\r\n   opts:[\"Pihak yang menerima penghasilan\",\"Hanya bendahara pemerintah\",\"Badan pemerintah, WP Badan dalam negeri, BUT, dan orang pribadi tertentu yang ditunjuk Dirjen Pajak sebagai pemberi penghasilan\",\"Hanya WP yang terdaftar sebagai PKP\"],\r\n   ans:2, kunci:\"Pasal 23 ayat (1) UU PPh: pemotong PPh Pasal 23 adalah badan pemerintah, subjek pajak badan dalam negeri, BUT, serta orang pribadi tertentu yang ditunjuk oleh Dirjen Pajak \u2014 misalnya akuntan, arsitek, dokter, notaris, dan konsultan yang melakukan pekerjaan bebas.\"},\r\n  {cat:\"PPh Potput\", q:\"Tarif PPh Pasal 21 untuk tarif efektif rata-rata (TER) yang berlaku mulai 2024 untuk pegawai tetap dihitung berdasarkan...\",\r\n   opts:[\"Penghasilan bruto bulanan\",\"Penghasilan neto tahunan dibagi 12\",\"Penghasilan bruto tahunan\",\"Penghasilan kena pajak dibagi 12\"],\r\n   ans:0, kunci:\"PMK-168\/PMK.010\/2023: penghitungan PPh Pasal 21 pegawai tetap mulai 2024 menggunakan TER (Tarif Efektif Rata-Rata) berdasarkan penghasilan bruto bulanan.\"},\r\n  {cat:\"PPh Potput\", q:\"Penghasilan yang dikecualikan dari objek PPh Pasal 21 antara lain...\",\r\n   opts:[\"Tunjangan perumahan\",\"Gaji pokok\",\"Pembayaran asuransi dari penanggung asuransi kepada orang pribadi\",\"Uang lembur\"],\r\n   ans:2, kunci:\"Pasal 4 ayat (3) UU PPh: pembayaran dari perusahaan asuransi kepada orang pribadi dikecualikan dari objek PPh.\"},\r\n  {cat:\"PPh Potput\", q:\"Tarif PPh Pasal 22 atas pembelian bahan bakar minyak oleh SPBU non-Pertamina dari Pertamina adalah...\",\r\n   opts:[\"0,3%\",\"0,45%\",\"0,25%\",\"1,5%\"],\r\n   ans:1, kunci:\"PMK-34: tarif PPh Pasal 22 atas penjualan BBM oleh produsen\/importir kepada agen\/SPBU 0,45% dari penjualan tidak termasuk PPN.\"},\r\n  {cat:\"PPh Potput\", q:\"Setelah UU HPP, objek PPh Pasal 23 yang dipotong dari WP badan dalam negeri penerima meliputi...\",\r\n   opts:[\"Dividen ke WP OP dalam negeri, bunga deposito, dan gaji karyawan\",\"Bunga (kecuali bunga simpanan koperasi ke OP), royalti, hadiah, sewa, dan imbalan jasa tertentu\",\"Penghasilan dari penjualan saham di bursa dan dividen ke WP OP\",\"Gaji, upah, dan honorarium pegawai tetap\"],\r\n   ans:1, kunci:\"Pasal 23 UU PPh pasca UU HPP: objek PPh Pasal 23 meliputi bunga (kecuali bunga simpanan koperasi ke OP), royalti, hadiah\/penghargaan, sewa atas penggunaan harta (selain tanah\/bangunan), dan imbalan jasa tertentu. Dividen ke WP OP dalam negeri tidak lagi masuk objek PPh Pasal 23 \u2014 kini dikenakan PPh Final 10% (Pasal 4 ayat 2).\"},\r\n  {cat:\"PPh Potput\", q:\"Dalam P3B (Tax Treaty), prinsip yang mengatur hak pemajakan atas penghasilan dari pekerjaan bebas (independent personal services) adalah...\",\r\n   opts:[\"Place of Effective Management\",\"Permanent Establishment atau Fixed Base\",\"Residence country only\",\"Source country only\"],\r\n   ans:1, kunci:\"Dalam P3B OECD, penghasilan dari independent personal services hanya dapat dipajaki di negara sumber jika terdapat fixed base atau permanent establishment.\"},\r\n  {cat:\"PPh Potput\", q:\"Dalam sistem Coretax, pelaporan SPT Masa PPh Pasal 21\/26 dilakukan oleh pemotong pajak dengan cara...\",\r\n   opts:[\"Mengisi formulir 1721 dan mengirim via pos\",\"Melalui modul Withholding Tax yang terintegrasi di portal Coretax\",\"Menggunakan aplikasi e-SPT PPh 21 yang diinstal terpisah\",\"Mengirim file CSV ke email KPP\"],\r\n   ans:1, kunci:\"Dalam Coretax (berlaku sejak 1 Januari 2025), pelaporan SPT Masa PPh Pasal 21\/26 tidak lagi menggunakan formulir 1721 atau aplikasi e-SPT terpisah, melainkan dilakukan langsung melalui modul Withholding Tax di portal Coretax.\"},\r\n  {cat:\"PPh Potput\", q:\"PPh Pasal 15 dikenakan atas penghasilan yang diterima oleh...\",\r\n   opts:[\"WP yang bergerak di bidang tertentu seperti pelayaran dan penerbangan internasional\",\"WP pengusaha kecil\",\"WP yang baru pertama kali menerima penghasilan\",\"WP yang tidak memiliki NPWP\"],\r\n   ans:0, kunci:\"Pasal 15 UU PPh: norma penghitungan khusus untuk WP tertentu seperti perusahaan pelayaran\/penerbangan internasional, perusahaan asing nonmigas, dan sejenisnya.\"},\r\n\r\n  \/\/ ========== PPh ORANG PRIBADI (25 soal) ==========\r\n  {cat:\"PPh OP\", q:\"Tarif PPh Orang Pribadi yang berlaku berdasarkan UU HPP untuk penghasilan kena pajak di atas Rp 5 miliar adalah...\",\r\n   opts:[\"30%\",\"35%\",\"40%\",\"45%\"],\r\n   ans:1, kunci:\"Pasal 17 ayat (1) huruf a UU PPh (UU HPP): lapisan tertinggi PPh OP untuk PKP di atas Rp 5 miliar adalah 35%.\"},\r\n  {cat:\"PPh OP\", q:\"WP orang pribadi yang menjalankan usaha atau pekerjaan bebas dengan peredaran bruto sampai Rp 4,8 miliar per tahun dapat menggunakan...\",\r\n   opts:[\"Norma Penghitungan Penghasilan Neto (NPPN)\",\"Pembukuan wajib\",\"Tarif flat 1%\",\"Metode pencatatan dan pembukuan gabungan\"],\r\n   ans:0, kunci:\"Pasal 14 UU PPh: WP OP dengan peredaran bruto tidak melebihi Rp 4,8 miliar dapat menggunakan NPPN dengan syarat memberitahu DJP dalam 3 bulan pertama tahun pajak.\"},\r\n  {cat:\"PPh OP\", q:\"WP orang pribadi memiliki peredaran bruto usaha Rp 400 juta setahun dan memilih menggunakan rezim PP 55 Tahun 2022. Bagaimana pengenaan PPh atas penghasilan dari usahanya tersebut?\",\r\n   opts:[\"Tidak dikenakan PPh atas bagian peredaran bruto sampai dengan Rp 500 juta\",\"Dikenakan PPh Final 0,5% dari seluruh peredaran bruto\",\"Dikenakan PPh sesuai tarif progresif Pasal 17\",\"Dikenakan PPh Final 1% dari peredaran bruto\"],\r\n   ans:0, kunci:\"PP 55 Tahun 2022: WP OP yang memilih rezim PP 55 dan memiliki peredaran bruto tidak melebihi Rp 500 juta dalam satu tahun pajak tidak dikenai PPh atas bagian peredaran bruto tersebut. Ini berbeda dengan PP 23\/2018 yang tetap mengenakan PPh Final 0,5% sejak rupiah pertama.\"},\r\n  {cat:\"PPh OP\", q:\"Penghitungan PPh terutang WP orang pribadi menggunakan metode self-assessment, artinya...\",\r\n   opts:[\"Pajak dihitung dan ditetapkan oleh DJP\",\"WP menghitung, menyetor, dan melaporkan sendiri pajaknya\",\"Pajak dipotong oleh pihak ketiga sepenuhnya\",\"Pajak dihitung bersama WP dan DJP\"],\r\n   ans:1, kunci:\"Sistem perpajakan Indonesia menganut self-assessment: WP menghitung, menyetor, dan melaporkan sendiri kewajiban perpajakannya.\"},\r\n  {cat:\"PPh OP\", q:\"WP orang pribadi yang menjalankan usaha atau pekerjaan bebas, dalam sistem Coretax menyampaikan SPT Tahunan PPh OP melalui...\",\r\n   opts:[\"Mengunggah file CSV ke portal Coretax\",\"Modul SPT Tahunan PPh OP terintegrasi di Coretax dengan data penghasilan usaha diisi langsung\",\"Aplikasi e-SPT desktop yang terpisah\",\"Datang langsung ke KPP\"],\r\n   ans:1, kunci:\"Dalam Coretax, seluruh WP OP termasuk yang menjalankan usaha atau pekerjaan bebas menyampaikan SPT Tahunan melalui modul terintegrasi di portal Coretax. Tidak ada lagi perbedaan formulir 1770\/1770S\/1770SS.\"},\r\n  {cat:\"PPh OP\", q:\"Lapisan tarif PPh OP untuk penghasilan kena pajak Rp 60.000.001 hingga Rp 250.000.000 adalah...\",\r\n   opts:[\"5%\",\"15%\",\"25%\",\"30%\"],\r\n   ans:1, kunci:\"Pasal 17 UU PPh (UU HPP): lapisan PKP Rp 60.000.001 - Rp 250.000.000 dikenakan tarif 15%.\"},\r\n  {cat:\"PPh OP\", q:\"Dalam sistem Coretax, WP orang pribadi yang hanya menerima penghasilan dari satu pemberi kerja menyampaikan SPT Tahunan PPh dengan cara...\",\r\n   opts:[\"Mengisi formulir 1770SS dan mengirim via pos ke KPP\",\"Langsung melalui modul SPT Tahunan PPh OP yang terintegrasi di portal Coretax\",\"Menggunakan aplikasi e-SPT yang diinstal di komputer\",\"Menyerahkan hard copy formulir ke KPP\"],\r\n   ans:1, kunci:\"Dalam Coretax (berlaku sejak 1 Januari 2025), tidak ada lagi pemilihan formulir 1770\/1770S\/1770SS secara terpisah. Semua WP OP menyampaikan SPT Tahunan langsung melalui modul SPT Tahunan yang terintegrasi di portal Coretax.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan berupa warisan termasuk dalam kategori...\",\r\n   opts:[\"Objek PPh yang dipotong di sumber\",\"Bukan objek PPh\",\"Objek PPh Final\",\"Objek PPh yang dipotong pihak ketiga\"],\r\n   ans:1, kunci:\"Pasal 4 ayat (3) huruf b UU PPh: warisan bukan merupakan objek Pajak Penghasilan.\"},\r\n  {cat:\"PPh OP\", q:\"Iuran pensiun yang dibayar sendiri oleh WP ke dana pensiun yang pendiriannya disahkan Menteri Keuangan dapat dikurangkan dari...\",\r\n   opts:[\"Penghasilan bruto\",\"Penghasilan neto\",\"Penghasilan kena pajak\",\"Pajak terutang\"],\r\n   ans:0, kunci:\"Pasal 6 ayat (1) huruf c UU PPh: iuran pensiun kepada dana pensiun yang disahkan Menkeu dapat dikurangkan dari penghasilan bruto.\"},\r\n  {cat:\"PPh OP\", q:\"Tarif PPh OP untuk Penghasilan Kena Pajak sampai dengan Rp 60.000.000 adalah...\",\r\n   opts:[\"2%\",\"5%\",\"10%\",\"15%\"],\r\n   ans:1, kunci:\"Pasal 17 UU PPh (UU HPP): tarif terendah PPh OP untuk PKP sampai Rp 60.000.000 adalah 5%.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan dari kegiatan yang dilakukan WP OP yang penghasilan brutonya melebihi Rp 4,8 miliar per tahun...\",\r\n   opts:[\"Wajib menggunakan pembukuan\",\"Boleh menggunakan NPPN atau pembukuan\",\"Wajib menggunakan NPPN\",\"Tidak kena kewajiban pembukuan\"],\r\n   ans:0, kunci:\"Pasal 28 UU KUP: WP OP yang melakukan kegiatan usaha atau pekerjaan bebas yang peredaran brutonya melebihi Rp 4,8 miliar wajib menyelenggarakan pembukuan.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan seorang dokter yang berpraktik di klinik pribadinya termasuk dalam kategori...\",\r\n   opts:[\"Penghasilan dari pekerjaan\",\"Penghasilan dari pekerjaan bebas\",\"Penghasilan dari usaha\",\"Penghasilan dari modal\"],\r\n   ans:1, kunci:\"Pasal 4 ayat (1) huruf a UU PPh: penghasilan dari pekerjaan bebas mencakup kegiatan dokter, notaris, akuntan, dan profesi sejenisnya.\"},\r\n  {cat:\"PPh OP\", q:\"Angsuran PPh Pasal 25 WP Orang Pribadi Pengusaha Tertentu dihitung sebesar...\",\r\n   opts:[\"0,5% dari peredaran bruto tiap bulan\",\"1% dari peredaran bruto tiap bulan\",\"0,75% dari peredaran bruto tiap bulan\",\"2% dari peredaran bruto tiap bulan\"],\r\n   ans:2, kunci:\"PMK-215\/PMK.03\/2018: angsuran PPh Pasal 25 WP OP Pengusaha Tertentu = 0,75% dari peredaran bruto tiap bulan.\"},\r\n  {cat:\"PPh OP\", q:\"Kerugian usaha WP orang pribadi yang menyelenggarakan pembukuan dapat dikompensasikan selama...\",\r\n   opts:[\"3 tahun\",\"5 tahun\",\"8 tahun\",\"10 tahun\"],\r\n   ans:1, kunci:\"Pasal 6 ayat (2) UU PPh: kerugian fiskal dapat dikompensasikan dengan penghasilan mulai tahun pajak berikutnya berturut-turut sampai 5 tahun.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan yang menjadi objek PPh bersifat final bagi WP OP antara lain...\",\r\n   opts:[\"Gaji dari pekerjaan utama\",\"Sewa tanah dan\/atau bangunan\",\"Dividen dari PT dalam negeri setelah UU HPP\",\"Jawaban B dan C benar\"],\r\n   ans:3, kunci:\"Setelah UU HPP: sewa tanah\/bangunan dikenakan PPh final 10%, dividen dari DN juga dikenakan PPh final 10% atas WP OP.\"},\r\n  {cat:\"PPh OP\", q:\"Berdasarkan PMK-168\/PMK.010\/2023 (berlaku mulai 2024), seorang pegawai tetap menerima bonus pada bulan Juli. Bagaimana pengenaan PPh Pasal 21 atas bonus tersebut?\",\r\n   opts:[\"PPh Final 5% dari nilai bonus\",\"Dikecualikan dari pajak karena bukan penghasilan rutin\",\"Dikenakan tarif TER Bulanan atas total penghasilan bruto bulan Juli (gaji + bonus) sesuai kategori PTKP\",\"PPh Pasal 23 sebesar 15%\"],\r\n   ans:2, kunci:\"PMK-168\/PMK.010\/2023: sejak 2024, PPh Pasal 21 pegawai tetap menggunakan TER (Tarif Efektif Rata-Rata). Pada bulan diterimanya bonus, tarif TER Bulanan diterapkan atas total penghasilan bruto bulan tersebut (gaji pokok + bonus + tunjangan lainnya) sesuai kategori PTKP WP.\"},\r\n  {cat:\"PPh OP\", q:\"Pembayaran zakat atas penghasilan yang dibayarkan kepada badan amil zakat yang disahkan pemerintah dapat...\",\r\n   opts:[\"Dikurangkan dari pajak terutang\",\"Dikurangkan dari penghasilan bruto\",\"Dikurangkan dari penghasilan neto\",\"Tidak dapat dikurangkan\"],\r\n   ans:1, kunci:\"Pasal 9 ayat (1) huruf g UU PPh: zakat atas penghasilan yang dibayarkan kepada BAZNAS atau LAZ yang disahkan pemerintah dapat dikurangkan dari penghasilan bruto.\"},\r\n  {cat:\"PPh OP\", q:\"WP orang pribadi dianggap bertempat tinggal di Indonesia apabila berada di Indonesia lebih dari...\",\r\n   opts:[\"90 hari dalam 12 bulan\",\"120 hari dalam satu tahun pajak\",\"183 hari dalam jangka waktu 12 bulan\",\"365 hari\"],\r\n   ans:2, kunci:\"Pasal 2 ayat (3) UU PPh: orang pribadi yang berada di Indonesia lebih dari 183 hari dalam jangka waktu 12 bulan merupakan subjek pajak dalam negeri.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan berupa natura (fasilitas) yang diterima dari bukan WP atau WP yang dikenakan PPh Final adalah...\",\r\n   opts:[\"Objek PPh bagi yang menerima\",\"Bukan objek PPh bagi yang menerima\",\"Objek PPh Final 5%\",\"Dikecualikan dari penghasilan bruto\"],\r\n   ans:0, kunci:\"UU HPP mengubah ketentuan natura: natura yang diterima dari pemberi kerja bukan WP atau WP yang dikenakan PPh Final merupakan objek PPh bagi penerimanya.\"},\r\n  {cat:\"PPh OP\", q:\"Lapisan tarif PPh OP untuk penghasilan kena pajak Rp 250.000.001 sampai Rp 500.000.000 adalah...\",\r\n   opts:[\"20%\",\"25%\",\"30%\",\"35%\"],\r\n   ans:1, kunci:\"Pasal 17 UU PPh (UU HPP): lapisan PKP Rp 250.000.001 - Rp 500.000.000 dikenakan tarif 25%.\"},\r\n  {cat:\"PPh OP\", q:\"WP OP yang melakukan kegiatan usaha UMKM dengan peredaran bruto tidak melebihi Rp 4,8 miliar setahun dan memilih menggunakan PPh Final PP 55\/2022 harus...\",\r\n   opts:[\"Mendaftar ulang NPWP setiap tahun\",\"Menyampaikan pemberitahuan kepada DJP\",\"Membuat laporan keuangan audited\",\"Memiliki sertifikat ISO usaha\"],\r\n   ans:1, kunci:\"PP 55\/2022: WP yang memilih menggunakan tarif PPh Final harus menyampaikan pemberitahuan kepada DJP.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan dari penjualan saham di bursa efek dikenakan PPh...\",\r\n   opts:[\"Progresif sesuai pasal 17\",\"Final 0,1% dari nilai transaksi\",\"Final 10% dari keuntungan\",\"Dikecualikan dari pajak\"],\r\n   ans:1, kunci:\"PP 41 Tahun 1994 jo PP 14 Tahun 1997: penjualan saham di bursa efek dikenakan PPh Final sebesar 0,1% dari nilai transaksi bruto.\"},\r\n  {cat:\"PPh OP\", q:\"Bunga tabungan dan deposito yang diterima WP orang pribadi dalam negeri dari bank dikenakan...\",\r\n   opts:[\"PPh Pasal 23 sebesar 15% tidak final\",\"PPh Final 20% berdasarkan PP 131 Tahun 2000\",\"Bukan objek PPh karena merupakan penghasilan pasif\",\"PPh sesuai tarif progresif Pasal 17 UU PPh\"],\r\n   ans:1, kunci:\"PP 131 Tahun 2000: bunga yang berasal dari tabungan dan deposito serta diskonto SBI dikenakan PPh Final sebesar 20% dari jumlah bruto bagi WP dalam negeri. Perlu diperhatikan: yang dimaksud adalah bunga simpanan (tabungan\/deposito) yang diterima nasabah \u2014 bukan bunga pinjaman yang dibayar nasabah ke bank (yang merupakan biaya, bukan penghasilan).\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan seorang artis dari manggung (bukan hubungan kerja) dipotong PPh berdasarkan...\",\r\n   opts:[\"PPh Pasal 21\",\"PPh Pasal 23\",\"PPh Pasal 4 ayat (2)\",\"PPh Pasal 26\"],\r\n   ans:0, kunci:\"Artis yang bukan pegawai tetap namun menerima honorarium dari penyelenggara kegiatan dipotong PPh Pasal 21 dengan tarif sesuai Pasal 17 UU PPh.\"},\r\n  {cat:\"PPh OP\", q:\"Penghasilan Tidak Kena Pajak (PTKP) tambahan untuk istri yang penghasilannya digabung dengan suami adalah...\",\r\n   opts:[\"Tidak ada tambahan PTKP\",\"Sama dengan PTKP dasar Rp 54.000.000\",\"Rp 54.000.000 tambahan untuk status kawin dan kerja istri\",\"Rp 4.500.000\"],\r\n   ans:2, kunci:\"Pasal 7 UU PPh: apabila penghasilan istri digabung dengan suami, PTKP ditambah sebesar Rp 54.000.000.\"},\r\n\r\n  \/\/ ========== ADMINISTRASI PERPAJAKAN (25 soal) ==========\r\n  {cat:\"Adm. Pajak\", q:\"Sejak 1 Januari 2025, layanan penyampaian SPT dan administrasi perpajakan secara elektronik dilakukan melalui platform baru bernama...\",\r\n   opts:[\"DJP Online\",\"e-Reporting\",\"Coretax (CTAS)\",\"MySPT\"],\r\n   ans:2, kunci:\"Mulai 1 Januari 2025, DJP menggantikan DJP Online dengan sistem Coretax (Core Tax Administration System\/CTAS) yang terintegrasi untuk seluruh layanan perpajakan.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Berdasarkan PER-01\/PJ\/2011, Surat Keterangan Bebas (SKB) pemotongan PPh Pasal 23 dapat diberikan kepada WP yang...\",\r\n   opts:[\"Tidak memiliki utang pajak apapun dan telah terdaftar lebih dari 5 tahun\",\"Omzetnya di bawah Rp 4,8 miliar setahun\",\"Mengalami kerugian fiskal sehingga dapat membuktikan tidak akan terutang PPh dalam tahun berjalan\",\"Baru pertama kali menerima penghasilan dari jasa\"],\r\n   ans:2, kunci:\"PER-01\/PJ\/2011: SKB pemotongan\/pemungutan PPh dapat diberikan antara lain kepada WP yang dalam tahun pajak berjalan dapat membuktikan tidak akan terutang pajak \u2014 misalnya karena mengalami kerugian fiskal berdasarkan laporan keuangan sementara atau proyeksi rugi tahun berjalan. Syaratnya bukan sekadar tidak memiliki utang pajak.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dalam sistem e-Faktur, Faktur Pajak yang sah harus memiliki...\",\r\n   opts:[\"Tanda tangan basah direktur\",\"QR Code dan kode QR yang valid\",\"Nomor seri faktur pajak yang diberikan DJP dan tanda tangan elektronik\",\"Stempel perusahaan berwarna\"],\r\n   ans:2, kunci:\"PER-03\/PJ\/2022: Faktur Pajak elektronik harus memuat NSFP (Nomor Seri Faktur Pajak) yang diberikan DJP dan ditandatangani secara elektronik.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Pembayaran pajak dapat dilakukan melalui...\",\r\n   opts:[\"Hanya di kantor KPP setempat\",\"Bank persepsi, kantor pos, atau saluran elektronik yang ditunjuk Menteri Keuangan\",\"Hanya transfer bank ke rekening DJP\",\"Hanya melalui kasir kantor pajak\"],\r\n   ans:1, kunci:\"PMK-242: pembayaran pajak dilakukan melalui bank persepsi, kantor pos, atau saluran elektronik lainnya yang ditunjuk Menkeu.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dalam sistem Coretax, pembuatan kode billing untuk pembayaran pajak dilakukan melalui...\",\r\n   opts:[\"Langsung di bank persepsi\",\"Modul pembayaran di portal Coretax\",\"Aplikasi mobile DJP\",\"Kantor Pos\"],\r\n   ans:1, kunci:\"Dalam Coretax (CTAS), WP dapat membuat kode billing (ID Billing) melalui modul pembayaran yang terintegrasi di dalam portal Coretax.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Penyanderaan (Gijzeling) dalam hukum pajak adalah...\",\r\n   opts:[\"Penyitaan aset WP\",\"Pengekangan sementara kebebasan seseorang karena utang pajak\",\"Pemblokiran rekening bank\",\"Pencegahan WP bepergian ke luar negeri\"],\r\n   ans:1, kunci:\"Pasal 33 UU PPSP: penyanderaan adalah pengekangan sementara waktu kebebasan penanggung pajak dengan menempatkannya di tempat tertentu karena utang pajak belum dilunasi.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Surat Paksa dalam penagihan pajak mempunyai kekuatan hukum yang sama dengan...\",\r\n   opts:[\"Surat Tagihan Pajak\",\"Putusan pengadilan yang telah berkekuatan hukum tetap\",\"SKPKB\",\"Surat Perintah Membayar\"],\r\n   ans:1, kunci:\"Pasal 7 ayat (1) UU PPSP: Surat Paksa mempunyai kekuatan eksekutorial dan berkedudukan sama seperti grosse akte (putusan hakim yang telah berkekuatan tetap).\"},\r\n  {cat:\"Adm. Pajak\", q:\"Surat Perintah Melaksanakan Penyitaan diterbitkan apabila...\",\r\n   opts:[\"WP tidak melunasi utang pajak dalam 2x24 jam setelah pemberitahuan Surat Paksa\",\"WP tidak melunasi utang pajak dalam 2x24 jam setelah pemberitahuan Surat Paksa namun setelah selesai dilaksanakan\",\"WP tidak menyampaikan SPT\",\"WP mengajukan banding\"],\r\n   ans:0, kunci:\"Pasal 12 UU PPSP: penyitaan dilakukan oleh Jurusita Pajak apabila utang pajak tidak dilunasi dalam 2x24 jam setelah pemberitahuan Surat Paksa.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Konsultan pajak dalam mendampingi klien di hadapan DJP wajib memiliki...\",\r\n   opts:[\"Izin praktik dari IKPI saja\",\"Izin praktik dari Menteri Keuangan\",\"Sertifikat Brevet C\",\"Gelar Doktor Hukum Pajak\"],\r\n   ans:1, kunci:\"PMK-111\/PMK.03\/2014: konsultan pajak wajib memiliki izin praktik dari Menteri Keuangan (yang dilimpahkan ke Dirjen Pajak).\"},\r\n  {cat:\"Adm. Pajak\", q:\"Konfirmasi status Wajib Pajak (KSWP) diperlukan untuk...\",\r\n   opts:[\"Mendaftar usaha baru\",\"Persyaratan layanan publik tertentu yang terintegrasi dengan DJP\",\"Mengajukan pinjaman bank\",\"Mendapatkan izin impor\"],\r\n   ans:1, kunci:\"KSWP: konfirmasi status WP digunakan sebagai syarat mendapatkan layanan tertentu dari instansi pemerintah seperti perizinan usaha.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Berdasarkan Pasal 25 ayat (2) UU PPh, besarnya angsuran PPh Pasal 25 untuk bulan-bulan sebelum batas waktu penyampaian SPT Tahunan PPh (sebelum SPT disampaikan) adalah...\",\r\n   opts:[\"Dihitung ulang berdasarkan estimasi penghasilan tahun berjalan\",\"Sama dengan angsuran bulan terakhir tahun pajak sebelumnya\",\"Ditetapkan oleh KPP berdasarkan data pemeriksaan\",\"Nihil karena menunggu SPT Tahunan selesai dihitung\"],\r\n   ans:1, kunci:\"Pasal 25 ayat (2) UU PPh: sebelum WP menyampaikan SPT Tahunan, besarnya angsuran PPh Pasal 25 untuk bulan-bulan tersebut (termasuk Januari dan Februari bagi WP dengan tahun buku sama dengan tahun kalender) sama dengan angsuran pajak bulan terakhir tahun pajak sebelumnya.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Tax Clearance atau Surat Keterangan Fiskal (SKF) diterbitkan kepada WP yang...\",\r\n   opts:[\"Mengajukan permohonan dan tidak memiliki utang pajak\",\"Memiliki NPWP aktif\",\"Belum pernah diperiksa\",\"Memiliki omzet di atas Rp 1 miliar\"],\r\n   ans:0, kunci:\"SKF diterbitkan kepada WP yang mengajukan permohonan dan tidak memiliki utang pajak yang belum lunas.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Berdasarkan Pasal 17C UU KUP, WP yang dapat diberikan pengembalian pendahuluan kelebihan pembayaran pajak tanpa melalui pemeriksaan adalah...\",\r\n   opts:[\"Semua WP yang mengajukan restitusi\",\"WP Patuh yang telah ditetapkan oleh Dirjen Pajak berdasarkan kriteria tertentu\",\"WP yang belum pernah diperiksa sebelumnya\",\"WP Badan yang omzetnya di bawah Rp 4,8 miliar\"],\r\n   ans:1, kunci:\"Pasal 17C UU KUP: Dirjen Pajak dapat menerbitkan SKPPKP (Surat Keputusan Pengembalian Pendahuluan Kelebihan Pajak) kepada WP Patuh yang telah memenuhi kriteria tertentu \u2014 antara lain tepat waktu menyampaikan SPT, tidak mempunyai tunggakan pajak, dan tidak pernah dipidana di bidang perpajakan dalam 5 tahun terakhir.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Compliance Risk Management (CRM) dalam perpajakan adalah pendekatan DJP untuk...\",\r\n   opts:[\"Meningkatkan jumlah pemeriksaan pajak\",\"Mengidentifikasi dan memitigasi risiko ketidakpatuhan WP secara terstruktur\",\"Menambah jumlah fiskus\",\"Memperbanyak peraturan pajak\"],\r\n   ans:1, kunci:\"DJP menerapkan CRM sebagai pendekatan berbasis risiko untuk mengidentifikasi, menganalisis, dan menangani ketidakpatuhan WP secara lebih efektif.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Nomor Transaksi Penerimaan Negara (NTPN) digunakan sebagai...\",\r\n   opts:[\"Kode untuk mengisi SPT\",\"Bukti sah pembayaran pajak ke kas negara\",\"Nomor identitas WP\",\"Kode pemeriksaan pajak\"],\r\n   ans:1, kunci:\"NTPN adalah nomor yang diterbitkan MPN (Modul Penerimaan Negara) sebagai bukti transaksi penerimaan negara yang sah.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dalam sistem Coretax, perpanjangan jangka waktu penyampaian SPT Tahunan PPh dilakukan dengan cara...\",\r\n   opts:[\"Mengirim surat fisik ke KPP sebelum batas waktu\",\"Mengajukan permohonan perpanjangan langsung melalui modul SPT di portal Coretax sebelum batas waktu\",\"Membayar denda keterlambatan lebih awal\",\"Melapor langsung ke Kepala KPP\"],\r\n   ans:1, kunci:\"Dalam Coretax, pengajuan perpanjangan SPT Tahunan PPh tidak lagi menggunakan surat tertulis atau e-Filing terpisah, melainkan diajukan langsung melalui fitur perpanjangan yang tersedia di modul SPT pada portal Coretax sebelum batas waktu penyampaian.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dalam sistem Coretax, pembuatan bukti pemotongan PPh Pasal 21\/23\/26 dilakukan melalui modul...\",\r\n   opts:[\"e-SPT yang diinstal di komputer lokal\",\"Modul Withholding Tax (Bukti Potong) yang terintegrasi dalam Coretax\",\"Aplikasi e-Bupot terpisah di luar Coretax\",\"Email resmi ke KPP\"],\r\n   ans:1, kunci:\"Dalam Coretax (CTAS), pembuatan bukti pemotongan PPh dan pelaporan SPT Masa dilakukan langsung melalui modul Withholding Tax yang terintegrasi dalam satu platform.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Tata cara pemberian Angka Kredit bagi pejabat fungsional Pemeriksa Pajak mengacu pada...\",\r\n   opts:[\"PMK tentang jabatan fungsional\",\"Peraturan BKN tentang ASN\",\"PMK 17\/PMK.03\/2013 tentang tata cara pemeriksaan\",\"PER DJP tentang standar pemeriksaan\"],\r\n   ans:2, kunci:\"PMK-17\/PMK.03\/2013 mengatur tata cara pemeriksaan pajak termasuk standar dan prosedur bagi pemeriksa pajak.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Sunset Policy atau program pengungkapan sukarela pajak yang dilaksanakan berdasarkan UU HPP disebut...\",\r\n   opts:[\"Tax Amnesty\",\"Program Pengungkapan Sukarela (PPS)\",\"Reinventing Policy\",\"Self-correction Program\"],\r\n   ans:1, kunci:\"UU HPP (Bab VI): Program Pengungkapan Sukarela (PPS) merupakan kebijakan yang memberikan kesempatan WP mengungkapkan harta yang belum dilaporkan.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Mediasi atau Mutual Agreement Procedure (MAP) dalam perpajakan internasional digunakan untuk...\",\r\n   opts:[\"Menghindari pajak berganda antar negara secara unilateral\",\"Menyelesaikan perselisihan penerapan P3B antara dua otoritas pajak\",\"Mendapatkan keringanan pajak import\",\"Negosiasi tarif bea masuk\"],\r\n   ans:1, kunci:\"MAP adalah prosedur yang diatur dalam P3B\/tax treaty yang memungkinkan otoritas pajak dua negara bernegosiasi untuk menyelesaikan perselisihan pengenaan pajak berganda.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dalam sistem Coretax, pembuatan Faktur Pajak elektronik oleh PKP dilakukan dengan cara...\",\r\n   opts:[\"Menggunakan aplikasi e-Faktur desktop yang terinstal di komputer\",\"Langsung melalui modul PPN yang terintegrasi di portal Coretax\",\"Mengirimkan data CSV ke DJP via email\",\"Melalui aplikasi mobile khusus e-Faktur\"],\r\n   ans:1, kunci:\"Dalam Coretax (CTAS), pembuatan Faktur Pajak tidak lagi menggunakan aplikasi e-Faktur desktop terpisah, melainkan langsung melalui modul PPN yang terintegrasi dalam portal Coretax.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Advance Pricing Agreement (APA) adalah kesepakatan antara...\",\r\n   opts:[\"WP dengan pihak afiliasinya\",\"WP dengan DJP mengenai metode transfer pricing untuk transaksi afiliasi\",\"Dua WP yang bertransaksi\",\"DJP dengan DJP negara lain\"],\r\n   ans:1, kunci:\"PMK-22\/PMK.03\/2020: APA adalah perjanjian tertulis antara WP dan DJP mengenai metode penentuan harga transfer untuk transaksi afiliasi di masa mendatang.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Dokumentasi Transfer Pricing (TP Documentation) wajib dibuat oleh WP yang melakukan transaksi afiliasi dengan nilai...\",\r\n   opts:[\"Lebih dari Rp 1 miliar\",\"Lebih dari Rp 5 miliar atau nilai royalti\/bunga lebih dari Rp 1 miliar\",\"Semua nilai transaksi afiliasi\",\"Lebih dari Rp 10 miliar\"],\r\n   ans:1, kunci:\"PMK-213\/PMK.03\/2016: threshold kewajiban dokumentasi TP: transaksi afiliasi di atas Rp 50 miliar untuk penjualan barang berwujud dan di atas Rp 5 miliar untuk jasa\/royalti\/bunga.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Pengawasan berbasis kewilayahan oleh DJP bertujuan untuk...\",\r\n   opts:[\"Meningkatkan jumlah pemeriksaan\",\"Menjangkau potensi pajak WP baru yang belum terdaftar di wilayah tertentu\",\"Mengurangi biaya operasional DJP\",\"Memperketat pemberian NPWP\"],\r\n   ans:1, kunci:\"Program pengawasan berbasis kewilayahan (ekstensifikasi) bertujuan menjangkau WP potensial yang belum memiliki NPWP atau belum memenuhi kewajiban perpajakan.\"},\r\n  {cat:\"Adm. Pajak\", q:\"Sengketa pajak yang sudah mencapai tingkat banding di Pengadilan Pajak, langkah hukum berikutnya yang bisa diambil adalah...\",\r\n   opts:[\"Kasasi ke Mahkamah Agung\",\"Peninjauan Kembali ke Mahkamah Agung\",\"Gugatan ke Pengadilan Tata Usaha Negara\",\"Mediasi ulang dengan DJP\"],\r\n   ans:1, kunci:\"Pasal 77 UU Pengadilan Pajak: terhadap putusan Pengadilan Pajak hanya dapat diajukan upaya hukum Peninjauan Kembali (PK) ke Mahkamah Agung.\"}\r\n];\r\n\r\n\/\/ ============================================================\r\n\/\/ STATE\r\n\/\/ ============================================================\r\nlet questions = [];\r\nlet answers = {};\r\nlet currentIdx = 0;\r\nlet timerInterval;\r\nlet timeLeft = 7200; \/\/ 2 hours\r\nlet examStarted = false;\r\nlet pesertaNama = '';\r\nlet pesertaTanggal = '';\r\n\r\nfunction shuffle(arr) {\r\n  const a = [...arr];\r\n  for (let i = a.length - 1; i > 0; i--) {\r\n    const j = Math.floor(Math.random() * (i + 1));\r\n    [a[i], a[j]] = [a[j], a[i]];\r\n  }\r\n  return a;\r\n}\r\n\r\nfunction startExam() {\r\n  pesertaNama = document.getElementById('input-nama').value.trim();\r\n  pesertaTanggal = document.getElementById('input-tanggal').value;\r\n  if (!pesertaNama) { alert('Mohon masukkan nama peserta.'); return; }\r\n  if (!pesertaTanggal) { alert('Mohon masukkan tanggal ujian.'); return; }\r\n\r\n  \/\/ Shuffle questions and options\r\n  questions = shuffle(ALL_QUESTIONS).map(q => {\r\n    const opts = q.opts.map((o, i) => ({ text: o, origIdx: i }));\r\n    const shuffledOpts = shuffle(opts);\r\n    const newAns = shuffledOpts.findIndex(o => o.origIdx === q.ans);\r\n    return { ...q, opts: shuffledOpts.map(o => o.text), ans: newAns };\r\n  });\r\n\r\n  document.getElementById('cover-page').style.display = 'none';\r\n  document.getElementById('exam-page').style.display = 'block';\r\n  document.getElementById('header-identity').innerHTML =\r\n    `<strong>${pesertaNama}<\/strong> \u00b7 ${formatDate(pesertaTanggal)}`;\r\n\r\n  buildNavGrid();\r\n  renderQuestion(0);\r\n  startTimer();\r\n}\r\n\r\nfunction formatDate(d) {\r\n  if (!d) return '';\r\n  const [y, m, day] = d.split('-');\r\n  const months = ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Agu','Sep','Okt','Nov','Des'];\r\n  return `${day} ${months[parseInt(m)-1]} ${y}`;\r\n}\r\n\r\nfunction buildNavGrid() {\r\n  const grid = document.getElementById('nav-grid');\r\n  grid.innerHTML = '';\r\n  questions.forEach((_, i) => {\r\n    const btn = document.createElement('button');\r\n    btn.className = 'nav-btn';\r\n    btn.textContent = i + 1;\r\n    btn.onclick = () => goTo(i);\r\n    btn.id = `nav-${i}`;\r\n    grid.appendChild(btn);\r\n  });\r\n}\r\n\r\nfunction renderQuestion(idx) {\r\n  currentIdx = idx;\r\n  const q = questions[idx];\r\n  updateNavGrid();\r\n  updateProgress();\r\n\r\n  const opts = ['A','B','C','D'];\r\n  const selected = answers[idx];\r\n\r\n  document.getElementById('question-card').innerHTML = `\r\n    <div class=\"q-header\">\r\n      <div style=\"display:flex;gap:8px;align-items:flex-start;flex-wrap:wrap\">\r\n        <span class=\"q-number\">Soal ${idx+1}<\/span>\r\n        <span class=\"q-category\">${q.cat}<\/span>\r\n      <\/div>\r\n    <\/div>\r\n    <p class=\"q-text\" style=\"margin-bottom:1.5rem\">${q.q}<\/p>\r\n    <ul class=\"options-list\">\r\n      ${q.opts.map((o, i) => `\r\n        <li class=\"option-item${selected === i ? ' selected' : ''}\" onclick=\"selectAnswer(${idx}, ${i})\">\r\n          <span class=\"option-letter\">${opts[i]}<\/span>\r\n          <span class=\"option-text\">${o}<\/span>\r\n        <\/li>`).join('')}\r\n    <\/ul>\r\n  `;\r\n\r\n  document.getElementById('btn-prev').disabled = idx === 0;\r\n  document.getElementById('btn-next').disabled = idx === questions.length - 1;\r\n}\r\n\r\nfunction selectAnswer(qIdx, optIdx) {\r\n  answers[qIdx] = optIdx;\r\n  renderQuestion(qIdx);\r\n}\r\n\r\nfunction navigate(dir) {\r\n  const next = currentIdx + dir;\r\n  if (next >= 0 && next < questions.length) renderQuestion(next);\r\n}\r\n\r\nfunction goTo(idx) { renderQuestion(idx); }\r\n\r\nfunction updateNavGrid() {\r\n  questions.forEach((_, i) => {\r\n    const btn = document.getElementById(`nav-${i}`);\r\n    if (!btn) return;\r\n    btn.className = 'nav-btn';\r\n    if (answers[i] !== undefined) btn.classList.add('answered');\r\n    if (i === currentIdx) btn.classList.add('current');\r\n  });\r\n}\r\n\r\nfunction updateProgress() {\r\n  const answered = Object.keys(answers).length;\r\n  const pct = Math.round((currentIdx + 1) \/ questions.length * 100);\r\n  document.getElementById('progress-fill').style.width = pct + '%';\r\n  document.getElementById('progress-text').textContent = `Soal ${currentIdx+1} dari ${questions.length}`;\r\n  document.getElementById('answered-count').textContent = `${answered} terjawab`;\r\n}\r\n\r\nfunction startTimer() {\r\n  timerInterval = setInterval(() => {\r\n    timeLeft--;\r\n    const h = String(Math.floor(timeLeft \/ 3600)).padStart(2,'0');\r\n    const m = String(Math.floor((timeLeft % 3600) \/ 60)).padStart(2,'0');\r\n    const s = String(timeLeft % 60).padStart(2,'0');\r\n    const disp = document.getElementById('timer-display');\r\n    disp.textContent = `${h}:${m}:${s}`;\r\n    if (timeLeft <= 300) disp.className = 'warning';\r\n    if (timeLeft <= 60) disp.className = 'danger';\r\n    if (timeLeft <= 0) {\r\n      clearInterval(timerInterval);\r\n      document.getElementById('modal-timeup').classList.add('active');\r\n    }\r\n  }, 1000);\r\n}\r\n\r\nfunction confirmSubmit() {\r\n  const unanswered = questions.length - Object.keys(answers).length;\r\n  document.getElementById('modal-unanswered-msg').textContent =\r\n    unanswered > 0\r\n      ? `Anda masih memiliki ${unanswered} soal yang belum dijawab. Yakin ingin mengumpulkan?`\r\n      : 'Semua soal telah dijawab. Yakin ingin mengumpulkan jawaban Anda?';\r\n  document.getElementById('modal-submit').classList.add('active');\r\n}\r\n\r\nfunction closeModal(id) { document.getElementById(id).classList.remove('active'); }\r\n\r\nfunction submitExam() {\r\n  clearInterval(timerInterval);\r\n  document.getElementById('modal-submit').classList.remove('active');\r\n  document.getElementById('modal-timeup').classList.remove('active');\r\n  document.getElementById('exam-page').style.display = 'none';\r\n\r\n  let correct = 0, wrong = 0, skipped = 0;\r\n  questions.forEach((q, i) => {\r\n    if (answers[i] === undefined) skipped++;\r\n    else if (answers[i] === q.ans) correct++;\r\n    else wrong++;\r\n  });\r\n\r\n  const score = Math.round(correct \/ questions.length * 100);\r\n  const passed = score >= 75;\r\n\r\n  document.getElementById('result-page').style.display = 'block';\r\n  document.getElementById('result-seal').textContent = passed ? '\ud83c\udfc6' : '\ud83d\udccb';\r\n  document.getElementById('result-title').textContent = passed ? 'Selamat! Anda Lulus' : 'Ujian Selesai';\r\n  document.getElementById('result-name').textContent = pesertaNama + ' \u00b7 ' + formatDate(pesertaTanggal);\r\n  document.getElementById('score-number').textContent = score;\r\n  document.getElementById('pass-label').innerHTML = passed\r\n    ? '<span class=\"passed\">\u2713 LULUS (\u226575)<\/span>'\r\n    : '<span class=\"failed\">\u2717 TIDAK LULUS (<75)<\/span>';\r\n  document.getElementById('correct-count').textContent = correct;\r\n  document.getElementById('wrong-count').textContent = wrong;\r\n  document.getElementById('skip-count').textContent = skipped;\r\n}\r\n\r\nfunction showReview() {\r\n  document.getElementById('result-page').style.display = 'none';\r\n  document.getElementById('review-page').style.display = 'block';\r\n\r\n  const opts = ['A','B','C','D'];\r\n  let html = '';\r\n  questions.forEach((q, i) => {\r\n    const userAns = answers[i];\r\n    let status, badge;\r\n    if (userAns === undefined) { status = 'skipped'; badge = '<span class=\"review-badge badge-skipped\">Tidak Dijawab<\/span>'; }\r\n    else if (userAns === q.ans) { status = 'correct'; badge = '<span class=\"review-badge badge-correct\">\u2713 Benar<\/span>'; }\r\n    else { status = 'wrong'; badge = '<span class=\"review-badge badge-wrong\">\u2717 Salah<\/span>'; }\r\n\r\n    html += `<div class=\"review-card ${status}\">\r\n      ${badge}\r\n      <div class=\"review-q\"><strong>Soal ${i+1} [${q.cat}]:<\/strong> ${q.q}<\/div>\r\n      ${userAns !== undefined ? `<div class=\"review-answer ${status === 'correct' ? 'correct-ans' : 'wrong-ans'}\">Jawaban Anda: <span>${opts[userAns]}. ${q.opts[userAns]}<\/span><\/div>` : ''}\r\n      <div class=\"review-answer correct-ans\">Jawaban Benar: <span>${opts[q.ans]}. ${q.opts[q.ans]}<\/span><\/div>\r\n      <div style=\"margin-top:8px;padding:10px;background:#f8f9fa;border-radius:6px;font-size:13px;color:#5A6E82;line-height:1.6\"><strong>\ud83d\udcd6 Pembahasan:<\/strong> ${q.kunci}<\/div>\r\n    <\/div>`;\r\n  });\r\n  document.getElementById('review-content').innerHTML = html;\r\n  window.scrollTo(0,0);\r\n}\r\n\r\n\/\/ Set today as default date\r\ndocument.getElementById('input-tanggal').value = new Date().toISOString().split('T')[0];\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Ujian Junior Konsultan Pajak Ujian Sertifikasi Junior Konsultan Pajak Uji Kompetensi Perpajakan \u2014 100 Soal Pilihan Ganda \ud83d\udccb 100 SoalPilihan Ganda \u23f1\ufe0f 120 MenitWaktu Ujian \ud83d\udcda 4 MateriKUP \u00b7 PPh Potput \u00b7 PPh OP \u00b7 Adm. \ud83c\udfaf Nilai Lulus75 \/ 100 \u00b7 Aturan Terbaru (Coretax) Nama Peserta Tanggal Ujian Mulai Ujian \u2192 Ujian Pajak \u23f1 02:00:00 Soal 1 dari 100 0 terjawab \u2190 Sebelumnya Selesai &#038; Kumpulkan Berikutnya \u2192 Hasil Ujian Nilai Akhir (skala 100) Benar Salah Tidak Dijawab \ud83d\udcc4 Lihat Pembahasan Jawaban Pembahasan Jawaban \u2190 Kembali \ud83d\udce4 Kumpulkan Jawaban? Lanjut Kerjakan Ya, Kumpulkan \u23f0 Waktu Habis! Waktu ujian Anda telah berakhir. Jawaban akan dikumpulkan secara otomatis. Lihat Hasil<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-791","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/pages\/791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/comments?post=791"}],"version-history":[{"count":10,"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/pages\/791\/revisions"}],"predecessor-version":[{"id":801,"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/pages\/791\/revisions\/801"}],"wp:attachment":[{"href":"https:\/\/agamanand.com\/id\/wp-json\/wp\/v2\/media?parent=791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}