.placement-step1-row { padding: 0 0 0.5rem; }
.placement-two-col {
  display: grid;
  grid-template-columns: minmax(280px, 0.9fr) minmax(320px, 1.1fr);
  gap: 1.5rem;
  align-items: start;
  max-width: 1200px;
  margin: 0 auto;
}
.pt-intro-card { padding: 1.25rem 1.5rem; min-width: 0; }
.placement-step1-row .step1-card { max-width: none; }
.placement-step1-row .placement-step { display: block; }
.placement-step1-row .placement-step .card { margin: 0; }
@media (max-width: 900px) {
  .placement-two-col { grid-template-columns: 1fr; }
}

.placement-stepper { padding: 1.5rem 1.5rem 0; position: relative; z-index: 10; }
.stepper-bar { display: flex; justify-content: center; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.5rem; }
.stepper-bar .step { width: 36px; height: 36px; border-radius: 50%; background: var(--border); color: var(--text-muted); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 0.9rem; transition: background 0.2s, color 0.2s; }
.stepper-bar .step.active { background: var(--primary); color: #fff; }
.stepper-label { text-align: center; font-size: 0.8rem; color: var(--text-muted); }
.placement-main {
  padding: 1.5rem 1.5rem 3rem; position: relative; z-index: 10;
  background: #ffffff;
  min-height: 50vh;
  border-radius: 0 0 12px 12px;
  max-width: 1400px;
  margin: 0 auto;
}
.placement-stepper,
#step3,
#step4,
#step5 { display: none !important; }
.placement-step { display: none; }
.placement-main .card {
  position: relative; z-index: 1;
  background: #fff;
  border-radius: 16px; padding: 1.75rem;
  box-shadow: 0 4px 24px rgba(0,0,0,.08), 0 2px 12px rgba(0,0,0,.04);
  border: 1px solid rgba(214, 40, 40, 0.12);
  max-width: 1200px;
  margin: 0 auto;
}
.placement-main .placement-step.active .card { box-shadow: 0 8px 32px rgba(0,0,0,.1), 0 4px 16px rgba(0,0,0,.05); }
.placement-main button { cursor: pointer; position: relative; z-index: 2; touch-action: manipulation; }
.placement-step.active { display: block; }
.btn-outline {
  background: #fff;
  border: 1px solid #111;
  color: #111;
  padding: 0.65rem 1rem;
  border-radius: 999px;
  font-weight: 600;
}
.btn-outline:hover { border-color: #d62828; color: #d62828; }

.pt-exam-shell {
  border: 1px solid #111;
  border-radius: 14px;
  padding: 1rem;
  background: #fff;
}
.pt-exam-status {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 0.8rem;
  flex-wrap: wrap;
  margin-bottom: 0.55rem;
}
.pt-exam-progress-track {
  width: 100%;
  height: 10px;
  border-radius: 999px;
  border: 1px solid #111;
  background: #f3f4f6;
  overflow: hidden;
  margin-bottom: 1rem;
}
.pt-exam-progress-fill {
  height: 100%;
  background: #d62828;
  transition: width 0.2s ease;
}
.pt-adaptive-banner {
  margin: 0 0 1rem;
  padding: 0.65rem 0.85rem;
  border-radius: 10px;
  border: 1px solid rgba(214, 40, 40, 0.45);
  background: rgba(214, 40, 40, 0.08);
  color: #111;
  font-size: 0.92rem;
  line-height: 1.45;
}
.pt-section-title {
  border: 1px solid #111;
  border-radius: 10px;
  padding: 0.5rem 0.7rem;
  font-weight: 700;
  color: #111;
  margin-bottom: 0.85rem;
}
.pt-section-title .pt-section-title-skill {
  color: #d62828;
}
.pt-exam-status-right {
  color: #111;
}
.pt-progress-answered {
  color: #111;
  font-weight: 700;
}
.pt-progress-total {
  color: #d62828;
  font-weight: 700;
}
.pt-question-frame {
  border: 1px solid #111;
  border-radius: 10px;
  padding: 0.9rem;
}
.pt-question-counter {
  margin: 0 0 0.65rem;
  color: #111;
  font-weight: 700;
}
.pt-question-actions {
  margin-top: 0.8rem;
  display: flex;
  justify-content: space-between;
  gap: 0.7rem;
}
.pt-question-actions button { flex: 1 1 0; }
/* Previous / Next + submit modal: equal width, white bg, red border, red fill on hover */
.pt-question-actions .pt-exam-nav-btn,
.pt-modal-buttons--exam-nav .pt-exam-nav-btn {
  flex: 1 1 0;
  min-width: 0;
  margin: 0;
  max-width: none;
  width: auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  background: #fff;
  color: #111;
  border: 2px solid #d62828;
  border-radius: 999px;
  padding: 0.75rem 1rem;
  font-size: 1rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.pt-question-actions .pt-exam-nav-btn:hover:not(:disabled),
.pt-modal-buttons--exam-nav .pt-exam-nav-btn:hover:not(:disabled) {
  background: #d62828;
  color: #fff;
  border-color: #d62828;
}
.pt-question-actions .pt-exam-nav-btn:disabled,
.pt-modal-buttons--exam-nav .pt-exam-nav-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.pt-question-actions .pt-exam-nav-btn:disabled:hover,
.pt-modal-buttons--exam-nav .pt-exam-nav-btn:disabled:hover {
  background: #fff;
  color: #111;
}
.pt-modal-buttons--exam-nav {
  justify-content: stretch;
}
.pt-navigator-wrap {
  border: 1px solid #111;
  border-radius: 10px;
  padding: 0.8rem;
  margin-top: 1rem;
}
.pt-navigator-title {
  font-weight: 700;
  margin-bottom: 0.6rem;
}
.pt-navigator-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(44px, 1fr));
  gap: 0.4rem;
}
.pt-nav-btn {
  border: 1px solid #111;
  border-radius: 8px;
  background: #fff;
  padding: 0.45rem 0.2rem;
  font-size: 0.85rem;
  line-height: 1;
}
/* Section colours (Question Navigator): Listening / Grammar / Vocal / Reading */
.pt-nav-btn.sec-listening { --pt-nav-color: #e53935; }   /* red */
.pt-nav-btn.sec-grammar { --pt-nav-color: #c41e3a; }     /* ruby red */
.pt-nav-btn.sec-vocabulary { --pt-nav-color: #8b0000; } /* blood red */
.pt-nav-btn.sec-reading { --pt-nav-color: #ff6347; }    /* tomato */
.pt-nav-btn.current {
  background: #fff;
  border-color: var(--pt-nav-color, #7a7a7a);
  color: var(--pt-nav-color, #333);
  font-weight: 700;
}
.pt-nav-btn.answered {
  background: var(--pt-nav-color, #6b7280);
  border-color: var(--pt-nav-color, #6b7280);
  color: #fff;
}
/* Before any selection: plain white; section tint only after answering */
.pt-nav-btn:not(.current):not(.answered) {
  background: #fff;
  border-color: #c9c9c9;
  color: #111;
}
.pt-navigator-legend {
  margin: 0.7rem 0 0;
  font-size: 0.84rem;
  color: var(--text-muted);
  display: flex;
  gap: 0.8rem;
  flex-wrap: wrap;
}
.pt-bottom-actions {
  display: flex;
  justify-content: center;
  gap: 0.75rem;
  margin-top: 0.9rem;
}
.pt-extra-review-wrap {
  margin-top: 0.9rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.pt-extra-block {
  border: 1px solid #111;
  border-radius: 10px;
  padding: 0.7rem;
  background: #fff;
}
.pt-extra-block h4 { margin: 0 0 0.45rem; color: #111; }
.pt-extra-prompt { margin: 0 0 0.45rem; font-weight: 700; color: #d62828; }
.pt-extra-label { display: block; font-size: 0.88rem; margin-bottom: 0.25rem; }
.pt-extra-block textarea {
  width: 100%;
  border: 1px solid #d1d5db;
  border-radius: 8px;
  padding: 0.55rem;
  box-sizing: border-box;
  font-size: 0.95rem;
}
.pt-extra-meta { margin: 0.45rem 0 0; font-size: 0.84rem; color: #374151; }
.pt-speaking-actions { display: flex; gap: 0.45rem; flex-wrap: wrap; }
.pt-section-next { margin-top: 0.9rem; }
.pt-section-next .btn-pt-next { max-width: 100%; }
@media (max-width: 768px) {
  .pt-extra-review-wrap { grid-template-columns: 1fr; }
  .pt-question-actions,
  .pt-bottom-actions { flex-direction: column; }
}

/* Reading: one question per card – fill-in-blank + option boxes + Next */
.pt-question-text {
  font-size: 1.1rem; line-height: 1.6; color: var(--text); margin-bottom: 1.25rem;
}
/* A/B/C         */
.pt-options {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin-bottom: 1.5rem;
}
.pt-option-box {
  display: flex; align-items: center; gap: 0.75rem; padding: 0.85rem 1rem;
  background: #fff; border: 1px solid var(--border); border-radius: 12px;
  cursor: pointer; transition: background .15s, border-color .15s;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.pt-option-box:hover { background: #fff8f8; border-color: var(--primary); }
.pt-option-box input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.pt-opt-pill {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  background: #e5e7eb;
  color: #111;
  flex-shrink: 0;
  border: 1px solid rgba(0,0,0,.08);
}
.pt-option-box .opt-text { font-size: 1rem; color: var(--text); }
/* Selected: red background + white text */
.pt-option-box:has(input:checked) {
  background: var(--primary);
  border-color: var(--primary);
  color: #fff;
}
.pt-option-box:has(input:checked) .opt-text { color: #fff; }
.pt-option-box:has(input:checked) .pt-opt-pill {
  background: rgba(255,255,255,.16);
  border-color: rgba(255,255,255,.25);
  color: #fff;
}
.pt-option-box:has(input:checked):hover {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
}
.pt-option-box:has(input:checked):hover .pt-opt-pill {
  background: rgba(255,255,255,.18);
  border-color: rgba(255,255,255,.28);
}
.btn-pt-next {
  display: block; width: 100%; max-width: 200px; margin: 0 auto;
  padding: 0.75rem 1.5rem; background: var(--primary-blue); color: #fff;
  border: none; border-radius: 999px; font-size: 1rem; font-weight: 600; cursor: pointer;
  transition: background .2s, transform .1s;
}
.btn-pt-next:hover { background: var(--primary-dark); transform: translateY(-1px); }
.pt-reading-progress { font-size: 0.9rem; color: var(--text-muted); margin-bottom: 1rem; }

/* Listening: two-column layout – left: instructions + audio, right: questions */
.step2-layout {
  display: grid;
  grid-template-columns: minmax(260px, 0.9fr) minmax(300px, 1.1fr);
  gap: 1.5rem;
  align-items: start;
  max-width: 900px;
  margin: 0 auto;
}
.step2-left { min-width: 0; }
.step2-right { min-width: 0; }
.step2-right .pt-question-block {
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 1rem 1.25rem;
  margin-bottom: 1rem;
  box-shadow: 0 1px 3px rgba(0,0,0,.04);
}
.step2-right .pt-question-block .pt-options { margin-bottom: 0; }
.step2-audio-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-top: 1rem;
  flex-wrap: wrap;
}
.step2-play-btn {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: #d62828;
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background .2s;
}
.step2-play-btn:hover { background: #b91c1c; }
.step2-play-btn svg { width: 24px; height: 24px; margin-left: 2px; }
.step2-audio-meta { font-size: 0.9rem; color: var(--text-muted); }
@media (max-width: 768px) {
  .step2-layout { grid-template-columns: 1fr; }
}

/* Listening intro screen */
.step2-intro-card {
  text-align: center;
  max-width: 520px;
  margin: 0 auto;
}
.step2-intro-card .pt-section-icon {
  width: 64px;
  height: 64px;
  margin: 0 auto 0.5rem;
  border-radius: 50%;
  border: 2px solid var(--primary-blue);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--primary-blue);
}
.step2-intro-card .pt-section-icon svg { width: 32px; height: 32px; }
.step2-intro-card .pt-duration { font-weight: 700; margin-top: 0.25rem; }
.step2-intro-card .pt-instructions-list {
  text-align: left;
  margin: 1.25rem 0;
  padding-left: 1.25rem;
}
.step2-intro-card .pt-instructions-list li { margin-bottom: 0.5rem; }

/* Writing: intro (reuses step2-intro-card) + prompt view */
.step4-tasks-wrap { max-width: 560px; margin: 0 auto; }
.pt-writing-progress { font-size: 0.9rem; color: var(--text-muted); margin-bottom: 1rem; }
.pt-writing-prompt {
  font-weight: 600;
  font-size: 1.1rem;
  line-height: 1.5;
  margin-bottom: 1.25rem;
  color: var(--text);
}
.pt-writing-area-wrap { margin-bottom: 0.75rem; }
.pt-writing-area-wrap textarea {
  width: 100%;
  min-height: 140px;
  padding: 1rem 1.25rem;
  border: 1px solid var(--border);
  border-radius: 12px;
  font-size: 1rem;
  line-height: 1.6;
  resize: vertical;
  transition: border-color .2s;
}
.pt-writing-area-wrap textarea:focus {
  outline: none;
  border-color: var(--primary-blue);
  box-shadow: 0 0 0 2px rgba(214, 40, 40, 0.18);
}
.pt-writing-area-wrap textarea::placeholder { color: var(--text-muted); }
.pt-writing-target {
  text-align: center;
  font-size: 0.95rem;
  color: var(--text-muted);
  margin: 0 0 0.5rem;
}
.pt-writing-separator {
  height: 1px;
  background: var(--border);
  margin: 0 0 1.5rem;
}

/* Step 5: Speaking – intro, mic card, Part 1 intro, task views */
.step5-intro-card { max-width: 520px; margin: 0 auto; }
.step5-mic-card {
  text-align: center;
  max-width: 420px;
  margin: 0 auto;
  padding: 0.5rem 0;
}
.step5-mic-title { font-size: 1.25rem; margin-bottom: 0.5rem; }
.btn-link-skip {
  display: block;
  margin-top: 1rem;
  background: none;
  border: none;
  color: var(--text-muted);
  text-decoration: underline;
  cursor: pointer;
  font-size: 0.95rem;
}
.btn-link-skip:hover { color: var(--text); }
.step5-part-intro {
  max-width: 520px;
  margin: 0 auto;
  text-align: left;
}
.step5-part-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1rem;
}
.step5-part-icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid var(--primary-blue);
  color: var(--primary-blue);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.step5-part-icon svg { width: 24px; height: 24px; }
.step5-part-header h2 { margin: 0; font-size: 1.35rem; }
.step5-task-wrap {
  text-align: center;
  max-width: 520px;
  margin: 0 auto;
  padding: 1rem 0;
}
.step5-task-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 0.5rem;
}
.step5-task-instruction {
  font-size: 1rem;
  color: var(--text);
  margin: 0 0 1.25rem;
}
.step5-question-box-wrap { margin-bottom: 1.25rem; }
.step5-question-box {
  display: inline-block;
  background: var(--primary-blue);
  color: #fff;
  padding: 0.75rem 1.25rem;
  border-radius: 12px;
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0;
}
.step5-countdown-wrap {
  margin: 1.5rem 0;
  min-height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.step5-countdown-num {
  font-size: 4rem;
  font-weight: 700;
  color: var(--primary-blue);
  line-height: 1;
}
.step5-waveform-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 1.5rem 0;
  min-height: 120px;
}
.step5-waveform-bar {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: 80%;
  max-width: 320px;
  height: 60px;
  background: linear-gradient(90deg, transparent 0%, rgba(214, 40, 40, 0.15) 20%, rgba(214, 40, 40, 0.28) 50%, rgba(214, 40, 40, 0.15) 80%, transparent 100%);
  border-radius: 8px;
  clip-path: polygon(0 50%, 2% 30%, 4% 70%, 6% 40%, 8% 60%, 10% 35%, 12% 65%, 14% 45%, 16% 55%, 18% 25%, 20% 75%, 22% 50%, 24% 60%, 26% 40%, 28% 70%, 30% 45%, 32% 55%, 34% 35%, 36% 65%, 38% 50%, 40% 60%, 42% 30%, 44% 70%, 46% 45%, 48% 55%, 50% 40%, 52% 60%, 54% 30%, 56% 70%, 58% 50%, 60% 45%, 62% 65%, 64% 35%, 66% 55%, 68% 50%, 70% 60%, 72% 40%, 74% 70%, 76% 30%, 78% 65%, 80% 45%, 82% 55%, 84% 35%, 86% 60%, 88% 50%, 90% 40%, 92% 70%, 94% 45%, 96% 55%, 98% 60%, 100% 50%);
}
.step5-play-btn {
  position: relative;
  z-index: 1;
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: var(--primary-blue);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s;
  box-shadow: 0 4px 16px rgba(214, 40, 40, 0.35);
}
.step5-play-btn:hover { background: var(--primary-dark); }
.step5-play-btn svg { width: 28px; height: 28px; margin-left: 4px; }
.step5-time-remaining {
  font-size: 0.95rem;
  color: var(--text);
  margin: 1rem 0;
}
.step5-task-wrap .btn-pt-next { margin-top: 0.5rem; }

/* Modal: Go to next task? */
.pt-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.4);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  padding: 1rem;
}
.pt-modal {
  background: #fff;
  border-radius: 16px;
  padding: 1.5rem 1.75rem;
  max-width: 420px;
  width: 100%;
  box-shadow: 0 8px 32px rgba(0,0,0,.15);
  position: relative;
}
.pt-modal h3 { margin: 0 0 0.75rem; font-size: 1.15rem; }
.pt-modal p { margin: 0 0 1.25rem; color: var(--text); font-size: 0.95rem; }
.pt-modal-close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  background: none;
  border: none;
  font-size: 1.25rem;
  cursor: pointer;
  color: var(--text-muted);
  line-height: 1;
  padding: 0.25rem;
}
.pt-modal-close:hover { color: var(--text); }

/* Submit test? modal: centred red title, red × top-right of header strip */
.pt-modal--submit {
  padding-top: 1.35rem;
}
.pt-modal-submit-head {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: 0 0 0.65rem;
  margin: 0 0 0.35rem;
}
.pt-modal-submit-head h3 {
  margin: 0;
  padding: 0 2.5rem;
  text-align: center;
  color: var(--primary);
  font-weight: 800;
  font-size: 1.15rem;
  line-height: 1.25;
}
.pt-modal-submit-head .pt-modal-close--submit {
  position: absolute;
  top: 0;
  right: 0.35rem;
  left: auto;
  margin: 0;
  color: var(--primary);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  padding: 0.2rem 0.45rem;
  z-index: 2;
}
.pt-modal-submit-head .pt-modal-close--submit:hover {
  color: var(--primary-dark);
}
.pt-modal-buttons { display: flex; gap: 0.75rem; justify-content: flex-end; flex-wrap: wrap; }
.pt-modal-buttons .btn-outline {
  background: #fff;
  border: 2px solid var(--primary-blue);
  color: var(--primary-blue);
  padding: 0.6rem 1.25rem;
  border-radius: 999px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.pt-modal-buttons .btn-outline:hover {
  background: var(--primary-dark);
  border-color: var(--primary-dark);
  color: #fff;
}
.pt-modal-buttons .btn-pt-next { margin: 0; }

.passage-box, .prompt-box { background: var(--surface-hover); border-radius: var(--radius-sm); padding: 1rem; margin: 0.5rem 0; border: 1px solid var(--border); }
.opt { display: block; margin: 0.5rem 0; cursor: pointer; }
.opt input { margin-right: 0.5rem; }
.small { font-size: 0.85rem; }
.text-muted { color: var(--text-muted); }
.completion-card { max-width: 480px; margin: 0 auto; }
.completion-card--cert {
  /* Sample-aligned brand red (certificates / highlights) */
  --cert-red: #c00000;
  --cert-red-dark: #9a0000;
  --cert-red-soft: #b01010;
  --cert-ruby: #a00000;
  --cert-cream: #fff8f7;
  max-width: 920px;
  margin: 0 auto;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(158, 24, 24, 0.14);
  border-radius: 20px;
  box-shadow:
    0 16px 48px rgba(91, 33, 182, 0.06),
    0 8px 24px rgba(158, 24, 24, 0.09),
    0 2px 8px rgba(0, 0, 0, 0.05);
  background: #fff;
  /* Match sitewide UI (main.css :root --font) */
  font-family: var(--font, "Times New Roman", Times, serif);
}
.completion-card--cert::before {
  content: "";
  display: block;
  height: 0;
  background: transparent;
}
.pt-cert-document {
  padding: 0;
  position: relative;
  isolation: isolate;
  background-color: #ffffff;
}
.pt-cert-document .pt-cert-stage {
  position: relative;
  z-index: 1;
}
.pt-cert-body { color: #333; line-height: 1.55; font-size: 0.95rem; }

/* Hero (EF-style top) */
.pt-cert-stage--hero {
  padding: 1.65rem 1.75rem 1.1rem;
  text-align: center;
  background: transparent;
  border-radius: 0;
}
.pt-cert-top {
  margin-bottom: 0.75rem;
  text-align: center;
}
.pt-cert-title-line {
  font-size: clamp(1.15rem, 3.4vw, 1.42rem);
  font-weight: 800;
  color: #1a1a1a;
  margin: 0 0 0.4rem;
  letter-spacing: -0.02em;
  text-align: center;
  line-height: 1.25;
}
.pt-cert-org-hero {
  margin: 0;
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--cert-red-soft);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  text-align: center;
}
/* Second line under school name (e.g. "English Certification") — no forced caps */
.pt-cert-subtitle-hero {
  margin: 0;
  font-size: clamp(1.02rem, 2.8vw, 1.28rem);
  font-weight: 600;
  font-style: italic;
  color: #1a1a1a;
  letter-spacing: 0.03em;
  text-align: center;
  font-family: Georgia, "Times New Roman", Times, serif;
}
/* Paper type: "General Test 1" / "General Test 2" in brand red (Test 1 & Test 2 certificate design) */
.pt-cert-paper-line {
  text-align: center;
  font-size: clamp(0.88rem, 2.2vw, 1rem);
  margin: 0.2rem 0 0.4rem;
  line-height: 1.35;
}
.pt-cert-paper-name {
  color: var(--cert-red);
  font-weight: 800;
  letter-spacing: -0.01em;
}
.pt-cert-paper-rest {
  color: #4b5563;
  font-weight: 600;
}
.pt-cert-document[data-cert-form="test1a"] .pt-cert-stage--hero {
  background: linear-gradient(180deg, rgba(192, 0, 0, 0.03) 0%, transparent 42%);
}
.pt-cert-document[data-cert-form="test2a"] .pt-cert-stage--hero {
  background: linear-gradient(180deg, rgba(192, 0, 0, 0.04) 0%, transparent 42%);
}
.pt-cert-student--hero {
  font-size: clamp(1.65rem, 4.5vw, 2.15rem);
  font-weight: 800;
  margin: 1rem 0 0.65rem;
  color: var(--cert-red);
  letter-spacing: -0.03em;
  line-height: 1.15;
  text-align: center;
}
.pt-cert-lead--hero {
  max-width: 38rem;
  margin: 0 auto 0.12rem;
  color: #555;
  font-size: 0.95rem;
  line-height: 1.55;
  text-align: center;
  text-wrap: balance;
}
/* Hero lead under name: force centred block (beats .pt-cert-body .pt-cert-lead margin) */
.pt-cert-stage--hero > .pt-cert-lead--hero {
  margin-left: auto;
  margin-right: auto;
  text-align: center;
  text-wrap: balance;
}
/* Hero lead: keep centered (avoid inheriting left from outer card/body) */
.completion-card--cert .pt-cert-lead.pt-cert-lead--hero {
  text-align: center;
}

/*
 * Large logo + text locked to the logo’s centre (white / negative space).
 * Tweak --cert-diamond-inner-w if your asset’s clear centre differs.
 */
.pt-cert-diamond-stage {
  display: flex;
  justify-content: center;
  margin: 0 0 0;
  min-height: 0;
  align-items: center;
  padding: 0 0.25rem;
}
.pt-cert-diamond {
  --cert-diamond-inner-w: 40%;
  /* Optical vertical centre: nudge whole block up inside logo clearing */
  --cert-diamond-text-nudge-y: 0.88rem;
  /* Logo: slight move left + down (tweak px if art alignment changes) */
  --cert-diamond-logo-nudge-x: -7px;
  --cert-diamond-logo-nudge-y: 9px;
  position: relative;
  width: min(380px, 94vw);
  height: min(380px, 94vw);
  max-width: 420px;
  max-height: 420px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Four-petal floral backdrop (light pink) behind score — matches certificate sample */
.pt-cert-diamond-petals {
  position: absolute;
  inset: -10%;
  z-index: 0;
  border-radius: 50%;
  pointer-events: none;
  background:
    radial-gradient(ellipse 54% 40% at 50% 10%, rgba(252, 214, 220, 0.92) 0%, transparent 68%),
    radial-gradient(ellipse 54% 40% at 50% 90%, rgba(252, 214, 220, 0.92) 0%, transparent 68%),
    radial-gradient(ellipse 40% 54% at 10% 50%, rgba(252, 214, 220, 0.92) 0%, transparent 68%),
    radial-gradient(ellipse 40% 54% at 90% 50%, rgba(252, 214, 220, 0.92) 0%, transparent 68%),
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.98) 0%, rgba(255, 255, 255, 0.98) 28%, rgba(255, 236, 239, 0.65) 52%, rgba(255, 220, 226, 0.35) 72%, transparent 78%);
  box-shadow: inset 0 0 0 1px rgba(192, 0, 0, 0.06);
}
.pt-cert-diamond-logo-stack {
  position: absolute;
  inset: -14%;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  transform: translate(var(--cert-diamond-logo-nudge-x), var(--cert-diamond-logo-nudge-y));
}
.pt-cert-diamond-logo {
  position: absolute;
  width: 108%;
  max-width: none;
  height: auto;
  max-height: 108%;
  object-fit: contain;
  display: block;
  opacity: 0.26;
  filter: drop-shadow(0 2px 8px rgba(0, 0, 0, 0.06));
}
/* Text only inside the logo’s inner clearing (not over the petals) */
.pt-cert-diamond-core {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, calc(-50% - var(--cert-diamond-text-nudge-y)));
  z-index: 5;
  box-sizing: border-box;
  width: var(--cert-diamond-inner-w);
  min-width: 0;
  max-width: min(10.5rem, 44vw);
  padding: 0.12rem 0.2rem;
  text-align: center;
  text-shadow: 0 1px 3px rgba(255, 255, 255, 0.85);
}
.pt-cert-diamond-score {
  display: block;
  font-size: clamp(1.55rem, 4.2vw, 2.05rem);
  font-weight: 800;
  color: #1a1a1a;
  line-height: 1.05;
  letter-spacing: -0.04em;
  font-family: var(--font, "Times New Roman", Times, serif);
}
.pt-cert-diamond-max {
  font-size: 1em;
  font-weight: 800;
  opacity: 1;
}
.pt-cert-diamond-level {
  display: block;
  margin-top: 0.12rem;
  font-size: clamp(0.78rem, 2.15vw, 0.95rem);
  font-weight: 700;
  color: var(--cert-red);
  line-height: 1.2;
  font-family: var(--font, "Times New Roman", Times, serif);
  word-wrap: break-word;
  overflow-wrap: break-word;
}
@media (max-width: 380px) {
  .pt-cert-diamond {
    --cert-diamond-inner-w: 42%;
  }
}

.pt-cert-skills-icons {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.65rem 1.25rem;
  margin: -0.45rem 0 0.12rem;
}
.pt-cert-skill-icon-item {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 0.45rem;
  color: #1a1a1a;
  font-size: 0.82rem;
  font-weight: 700;
  font-family: var(--font, "Times New Roman", Times, serif);
}
.pt-cert-skill-icon-item span {
  line-height: 1.2;
}
.pt-cert-skill-svg {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  color: var(--cert-red);
  display: block;
  filter: drop-shadow(0 1px 2px rgba(192, 0, 0, 0.22));
}

.pt-cert-awarded--center {
  text-align: center;
  margin: 0.35rem 0 1.35rem;
  font-size: 0.88rem;
  color: #666;
}
.pt-cert-h2 {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--cert-red-dark);
  margin: 0 0 0.5rem;
  text-align: center;
  letter-spacing: 0.02em;
  font-family: Georgia, "Times New Roman", Times, serif;
}

/* 3-row band matrix: label column + boxed cells; active column = red */
.pt-cert-band-matrix {
  margin: 0 auto 0.5rem;
  max-width: min(52rem, 100%);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pt-cert-band-row {
  display: grid;
  grid-template-columns: minmax(6.75rem, 10.25rem) minmax(0, 1fr);
  gap: 8px;
  align-items: stretch;
}
.pt-cert-band-label {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0.45rem 0.4rem;
  background: linear-gradient(180deg, #eef2f7 0%, #e2e8f0 100%);
  color: #334155;
  font-size: 0.65rem;
  font-weight: 800;
  line-height: 1.3;
  letter-spacing: 0.02em;
  border-radius: 10px;
  border: 1px solid rgba(15, 23, 42, 0.10);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.65);
}
.pt-cert-band-cells {
  display: grid;
  gap: 6px;
  grid-template-columns: repeat(var(--band-cols, 5), minmax(0, 1fr));
  min-width: 0;
}
.pt-cert-band-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0.5rem 0.3rem;
  min-height: 2.75rem;
  background: #fff;
  border: 1px solid rgba(15, 23, 42, 0.10);
  border-radius: 12px;
  color: #374151;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.pt-cert-band-cell-text {
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.25;
  word-break: break-word;
  hyphens: auto;
}
.pt-cert-band-row--dense .pt-cert-band-cell-text {
  font-size: 0.65rem;
  font-weight: 600;
}
.pt-cert-band-row--cefr .pt-cert-band-cell-text {
  font-size: 0.64rem;
  font-weight: 700;
}
.pt-cert-band-cell--active {
  background: var(--cert-red);
  color: #fff;
  border-color: rgba(154, 0, 0, 0.55);
  box-shadow: 0 4px 16px rgba(192, 0, 0, 0.35);
}
.pt-cert-band-cell--active .pt-cert-band-cell-text {
  color: #fff;
}
@media (max-width: 720px) {
  .pt-cert-band-row {
    grid-template-columns: 1fr;
    gap: 6px;
  }
  .pt-cert-band-label {
    min-height: unset;
    padding: 0.4rem 0.5rem;
  }
  .pt-cert-band-cells {
    grid-template-columns: repeat(var(--band-cols, 5), minmax(3.35rem, 1fr));
    overflow-x: auto;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
  }
}
@media (max-width: 520px) {
  .pt-cert-band-cells {
    grid-template-columns: repeat(var(--band-cols, 5), minmax(4.25rem, 1fr));
  }
}
.pt-cert-explainer {
  font-size: 0.78rem;
  color: #555;
  line-height: 1.45;
  margin: 0 auto 0.2rem;
  max-width: min(50rem, 96vw);
  text-align: center;
}
.pt-cert-explainer-row {
  display: block;
  margin: 0.28em 0 0;
}
.pt-cert-explainer-row:first-child {
  margin-top: 0;
}

/* Lower deck */
.pt-cert-stage--deck {
  position: relative;
  padding: 0.65rem 1.5rem 0.75rem;
  background: transparent;
  border-radius: 28px 28px 0 0;
  margin-top: -18px;
  border-top: 1px solid rgba(214, 40, 40, 0.08);
}
.pt-cert-skill-deck { margin-bottom: 0.25rem; }
.pt-cert-skill-deck-inner {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.35rem;
  background: transparent;
  border-radius: 16px;
  padding: 0.35rem 0.35rem;
  box-shadow: none;
  border: 0;
}
@media (max-width: 720px) {
  .pt-cert-skill-deck-inner { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 400px) {
  .pt-cert-skill-deck-inner { grid-template-columns: 1fr; }
}
.pt-cert-skill-col {
  text-align: center;
  padding: 0.3rem 0.25rem;
  border-radius: 12px;
}
.pt-cert-skill-num {
  font-size: 2rem;
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.03em;
}
.pt-cert-skill-col--a .pt-cert-skill-num { color: #9333ea; }
.pt-cert-skill-col--b .pt-cert-skill-num { color: var(--cert-red); }
.pt-cert-skill-col--c .pt-cert-skill-num { color: #16a34a; }
.pt-cert-skill-col--d .pt-cert-skill-num { color: var(--cert-ruby); }
.pt-cert-skill-label {
  font-size: 0.72rem;
  font-weight: 800;
  color: #333;
  margin-top: 0.1rem;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.25;
}
.pt-cert-skill-level {
  font-size: 0.75rem;
  color: #666;
  margin-top: 0.05rem;
  font-weight: 600;
  line-height: 1.25;
}
.pt-cert-skill-max {
  font-size: 0.65rem;
  color: #999;
  margin-top: 0.02rem;
}

.pt-cert-post-deck { text-align: left; }
.pt-cert-rule { border: 0; border-top: 1px solid rgba(214, 40, 40, 0.14); margin: 1.25rem 0; }
.pt-cert-h3 {
  font-size: 1rem;
  font-weight: 800;
  margin: 0 0 0.65rem;
  color: var(--cert-red-dark);
}
.pt-cert-h3--notice {
  font-size: 0.75rem;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #1a1a1a;
  margin-bottom: 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
.pt-cert-h3--section {
  font-size: 0.8125rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #2c2c2c;
  margin: 1.35rem 0 0.5rem;
}
.pt-cert-h3--section:first-child { margin-top: 0; }
.pt-cert-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; margin: 0 0 1rem; }
.pt-cert-table th,
.pt-cert-table td {
  border: 1px solid rgba(214, 40, 40, 0.18);
  padding: 0.5rem 0.65rem;
}
.pt-cert-table td,
.pt-cert-table th {
  text-align: left;
}
.pt-cert-table thead th {
  text-align: center;
}
.pt-cert-table th {
  background: var(--table-header-bg, #efe6db);
  font-weight: 700;
  color: var(--table-header-text, #3d2914);
}
.pt-cert-table td { background: #fff; }
.pt-cert-highlight {
  background: linear-gradient(90deg, #ffe0e0 0%, #fff5f5 100%) !important;
  font-weight: 700;
  box-shadow: inset 4px 0 0 var(--cert-red);
}
.pt-cert-para { margin: 0 0 0.65rem; color: #444; }
.pt-cert-para--tight { margin-bottom: 0.35rem; line-height: 1.55; max-width: 40rem; }
.pt-cert-notice {
  background: linear-gradient(180deg, #fffefb 0%, #fff5f5 100%);
  border: 1px solid rgba(192, 0, 0, 0.16);
  border-left: 4px solid var(--cert-red);
  border-radius: 0 14px 14px 0;
  padding: 0.85rem 1rem 0.9rem;
  margin: 0 0 0.4rem;
  box-shadow: 0 2px 8px rgba(192, 0, 0, 0.06);
}
.pt-cert-notice-list {
  margin: 0 0 0.65rem;
  padding: 0 0 0 1.15rem;
  color: #2d2d2d;
  font-size: 0.9rem;
  line-height: 1.55;
}
.pt-cert-notice-list li {
  margin: 0 0 0.45rem;
  padding-left: 0.15rem;
}
.pt-cert-notice-list li:last-child { margin-bottom: 0; }
.pt-cert-level-summary {
  margin: 0;
  padding: 0.55rem 0.85rem;
  background: #fff;
  border-radius: 8px;
  border: 1px solid rgba(0, 0, 0, 0.06);
}
.pt-cert-level-row {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem 1rem;
  align-items: baseline;
  margin: 0.5rem 0 0;
  font-size: 0.9rem;
}
.pt-cert-level-row:first-child { margin-top: 0; }
.pt-cert-level-k {
  flex: 0 0 auto;
  min-width: 10.5rem;
  font-size: 0.72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--cert-red-dark);
}
.pt-cert-level-v {
  flex: 1 1 12rem;
  font-weight: 600;
  color: #111;
  line-height: 1.4;
}
.pt-cert-level-v--pending {
  font-style: italic;
  font-weight: 600;
  color: #5c5c5c;
  letter-spacing: 0.02em;
}
.pt-cert-follow {
  margin: 0;
  padding: 0.35rem 0 0;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
}
.pt-cert-follow > .pt-cert-h3--section:first-child {
  margin-top: 0;
  margin-bottom: 0.35rem;
}
.pt-cert-contact-list {
  margin: 0;
  padding: 0.9rem 1rem 0.95rem;
  background: rgba(255, 255, 255, 0.85);
  border: 1px solid rgba(0, 0, 0, 0.07);
  border-radius: 10px;
  font-size: 0.9rem;
  line-height: 1.55;
}
.pt-cert-contact-item {
  display: grid;
  grid-template-columns: minmax(7.5rem, 9.5rem) 1fr;
  gap: 0.25rem 0.85rem;
  margin: 0;
  padding: 0.4rem 0;
  border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  align-items: start;
}
.pt-cert-contact-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.pt-cert-contact-item:first-child { padding-top: 0; }
.pt-cert-contact-item dt {
  margin: 0;
  font-weight: 700;
  font-size: 0.82rem;
  color: var(--cert-red-dark);
}
.pt-cert-contact-item dt::after {
  content: " :";
  font-weight: 700;
  color: #333;
}
.pt-cert-contact-item dd {
  margin: 0;
  color: #333;
  word-break: break-word;
}
@media (max-width: 520px) {
  .pt-cert-contact-item {
    grid-template-columns: 1fr;
    gap: 0.15rem;
  }
  .pt-cert-level-k { min-width: 0; }
}
.pt-cert-status-grid { display: grid; gap: 0.35rem; font-size: 0.9rem; margin: 0 0 1rem; }
.pt-cert-status-grid div { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: baseline; }
.pt-cert-status-grid strong { min-width: 11rem; color: #6b2a2a; font-weight: 700; }
.pt-cert-status-grid span { color: #1a1a1a; font-weight: 600; }
.pt-cert-note { font-size: 0.85rem; color: #6b4040; font-style: italic; margin: 0 0 1rem; }
.pt-cert-contact {
  font-size: 0.9rem;
  line-height: 1.65;
  padding: 0.85rem 1rem;
  background: rgba(255, 255, 255, 0.9);
  border-radius: 12px;
  border: 1px solid rgba(214, 40, 40, 0.14);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
}
.pt-cert-contact p { margin: 0.25rem 0; }
.pt-cert-contact strong { color: var(--cert-red-dark); }
.pt-cert-footer-thanks { font-weight: 700; color: var(--cert-red-dark); }
.pt-cert-footer-org { color: #8b3a3a !important; font-size: 0.9rem; font-weight: 600; font-family: var(--font-brand); }
.pt-cert-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.75rem;
  padding: 0.75rem 1rem 1rem;
  background: #fff;
}
/* Legacy / header variant (unused in EF layout) */
.pt-cert-header-text { min-width: 0; }
.pt-cert-body .pt-cert-org {
  font-size: 1.12rem;
  font-weight: 800;
  color: var(--cert-red-dark);
  margin: 0;
  letter-spacing: -0.01em;
  line-height: 1.25;
}
.pt-cert-body .pt-cert-sub {
  font-size: 0.68rem;
  font-weight: 700;
  color: var(--cert-red-soft);
  margin: 0.35rem 0 0;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.pt-cert-body .pt-cert-student:not(.pt-cert-student--hero) {
  font-size: 1.35rem;
  font-weight: 700;
  margin: 0 0 0.5rem;
  color: #1a1a1a;
}
.pt-cert-body .pt-cert-lead:not(.pt-cert-lead--hero) {
  margin: 0 0 1.25rem;
  color: #5c5c5c;
}
.pt-cert-awarded { margin: 0 0 1.25rem; font-size: 0.9rem; color: #5c5c5c; }
.completion-icon { width: 64px; height: 64px; border-radius: 50%; background: var(--success); color: #fff; font-size: 2rem; display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; line-height: 1; }
.pt-result-summary strong { font-weight: 700; color: #111; }
.pt-status-pass strong { color: #15803d; }
.pt-status-fail strong { color: #dc2626; }

.step1-card { max-width: 860px; margin: 0 auto; }
.placement-two-col .step1-card { max-width: none; margin: 0; }
/* Fixed label width so every control column lines up on the same left edge */
.step1-card .form-group.label-left {
  display: grid;
  grid-template-columns: minmax(11.25rem, 12.5rem) minmax(0, 1fr);
  align-items: center;
  column-gap: 0.65rem;
  row-gap: 0.5rem;
  margin-bottom: 0.9rem;
}
.step1-card .form-group.label-left > :last-child {
  justify-self: stretch;
  width: 100%;
  min-width: 0;
}
.step1-card label { color: #0a0a0a; font-weight: 600; display: inline-flex; align-items: center; gap: 0.55rem; }
.field-icon { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; }
.field-icon svg { width: 22px; height: 22px; }
.field-icon--name svg { stroke: #2563eb !important; }
.field-icon--phone svg { stroke: #10b981 !important; }
.dob-icon svg rect,
.dob-icon svg path { stroke: #f59e0b !important; }
.field-icon--education svg { stroke: #8b5cf6 !important; }
.field-icon--schedule svg { stroke: #ef4444 !important; }
.step1-card input,
.step1-card select {
  box-sizing: border-box;
  width: 100%;
  border: 1px solid rgba(214, 40, 40, 0.18);
  border-radius: 6px;
  background: #fff;
  padding-block: 0.68rem;
  padding-inline: 0.75rem;
  line-height: 1.35;
  min-height: 2.75rem;
}
.step1-card .dob-row { align-items: center; }
.step1-card .dob-label-wrap { display: inline-flex; align-items: center; gap: 0.55rem; color: #0a0a0a; font-weight: 600; }
.step1-card .dob-icon { width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; }
.step1-card .dob-icon svg { width: 22px; height: 22px; }
.step1-card .dob-inputs { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 0.6rem; }
.step1-card .phone-input-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 0.5rem;
  align-items: stretch;
}
.step1-card .phone-input-row input[type="tel"] {
  align-self: stretch;
}
.step1-card .phone-input-row #pPhoneCountry {
  width: 100%;
  max-width: 100%;
}
.step1-card .phone-country-wrap {
  position: relative;
  min-width: 0;
}
.step1-card .phone-flag-chip {
  position: absolute;
  left: 0.6rem;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  line-height: 0;
  pointer-events: none;
}
.step1-card .phone-flag-chip img {
  width: 22px;
  height: 16px;
  object-fit: cover;
  border-radius: 2px;
  border: 1px solid rgba(0,0,0,0.08);
}
.step1-card #pPhoneCountry {
  padding-left: 2.2rem;
}
.step1-card #pPhoneCountry {
  min-width: 0;
}
/* Start Placement Test – centred under the form */
.step1-card #nextTo2 {
  display: flex !important;
  width: fit-content;
  max-width: 100%;
  margin: 1.25rem auto 0;
}
.text-danger { color: #dc2626; }

@media (max-width: 768px) {
  .step1-card .form-group.label-left {
    grid-template-columns: 1fr;
  }
  .step1-card .dob-inputs {
    grid-template-columns: 1fr;
  }
  .step1-card .phone-input-row {
    grid-template-columns: 1fr;
  }
}
