@import url("fonts/fonts.css"); /* local embedded fonts: no network or web-font timing at PDF time */
/* ملمح | Malmah — CV document styles. Shared by the in-app preview and the PDF pipeline (cv.html).
   Black and white, single column, real text, no tables for layout, no images: readable by humans and parsers. */

.cv-page {
  --cv-ink: #0b0b0c;
  --cv-ink-2: #3a3a3d;
  --cv-ink-3: #5f5f64;
  --cv-rule: #0b0b0c;
  --cv-hair: #d9d9dc;
  position: relative;
  width: 210mm;
  min-height: 297mm;
  box-sizing: border-box;
  padding: 15mm 16mm 14mm;
  background: #fff;
  color: var(--cv-ink);
  font-family: "Malmah CV Arabic", "Readex Pro", "Segoe UI", Arial, sans-serif; /* lam-alef-split Readex Pro: see docs/design/pdf-engine-comparison.md */
  font-size: 10pt;
  line-height: 1.5;
  text-align: start;
}
.cv-page[lang="ar"] { line-height: 1.7; font-size: 10pt; }
.cv-page * { box-sizing: border-box; }
.cv-page a { color: inherit; text-decoration: none; }

.cv-head { padding-bottom: 9pt; border-bottom: 1.6pt solid var(--cv-rule); margin-bottom: 10pt; }
.cv-name { font-size: 21pt; font-weight: 700; line-height: 1.2; margin: 0; }
.cv-title { font-size: 11.5pt; font-weight: 500; color: var(--cv-ink-2); margin: 3pt 0 6pt; }
.cv-contact { display: flex; flex-wrap: wrap; gap: 2pt 0; font-size: 9pt; color: var(--cv-ink-2); margin: 0; padding: 0; list-style: none; }
.cv-contact li { white-space: nowrap; }
.cv-contact li + li::before { content: "·"; margin: 0 7pt; color: var(--cv-ink-3); }

.cv-sec { margin-top: 10pt; }
.cv-sec h2 {
  /* No letter-spacing or text-transform: both break text extraction (letters come out spaced). */
  font-size: 11pt; font-weight: 700;
  margin: 0 0 5pt; padding-bottom: 2.5pt; border-bottom: .6pt solid var(--cv-hair);
}

.cv-summary { margin: 0; color: var(--cv-ink); }

.cv-item { break-inside: avoid; page-break-inside: avoid; margin-bottom: 7pt; }
.cv-item:last-child { margin-bottom: 0; }
.cv-row { display: flex; justify-content: space-between; align-items: baseline; gap: 10pt; }
.cv-item-title { font-weight: 700; font-size: 10.5pt; }
.cv-item-date { font-size: 9pt; color: var(--cv-ink-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.cv-item-org { font-size: 9.5pt; color: var(--cv-ink-2); }
.cv-tag { font-weight: 500; font-size: 8.5pt; color: var(--cv-ink-3); }
.cv-bullets { margin: 3pt 0 0; padding-inline-start: 13pt; }
.cv-bullets li { margin: 0 0 2pt; padding-inline-start: 2pt; }
.cv-bullets li::marker { font-size: 8pt; }

.cv-skills { margin: 0; padding: 0; list-style: none; }
.cv-skills li { margin: 0 0 3pt; break-inside: avoid; }
.cv-skills b { font-weight: 700; }

.cv-edit-hint { outline: 1px dashed transparent; border-radius: 2px; }

/* Watermark: a separate layer over the page. Text underneath stays real and selectable.
   Only ever rendered before payment; the paid file is generated without this element. */
.cv-watermark {
  position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 5;
  background-repeat: repeat;
  background-size: 300px 190px;
  opacity: .09;   /* present enough to mark a preview, light enough to read through */
}

@media print {
  @page { size: A4; margin: 14mm 16mm 13mm; }
  html, body { margin: 0; background: #fff; }
  .cv-page { width: auto; min-height: auto; padding: 0; }
  .cv-watermark { position: fixed; }
}

/* v3 machine-readability layout: everything in one reading flow, nothing positioned side by side */
.cv-item-title { display: block; }
.cv-item-date { display: block; font-size: 9pt; color: var(--cv-ink-2); font-variant-numeric: tabular-nums; }
.cv-city { margin: 0; font-size: 9pt; color: var(--cv-ink-2); }
.cv-contact[dir="ltr"] { justify-content: flex-end; }
.cv-skills li { margin-bottom: 4pt; }
.cv-skill-label { display: block; font-weight: 700; }
.cv-skill-items { display: block; }
.nobr { white-space: nowrap; }

/* ───────── ATS templates (cv.js TEMPLATES). Same single reading flow for all five; only typography and spacing
   change here. Rules that every template keeps: no letter-spacing or text-transform on any text, no columns,
   floats, grids or absolute positioning, no colour beyond greys, the same embedded font. ───────── */

/* A heading never ends a page without its content (seen with Technical before this rule). */
.cv-sec h2, .cv-sec h3 { break-after: avoid; page-break-after: avoid; }

/* classic = the base styles above. */

/* modern: centred header, heavier headings with a full rule */
.cv-page.tpl-modern .cv-head { text-align: center; border-bottom: 0; padding-bottom: 4pt; }
.cv-page.tpl-modern .cv-name { font-size: 24pt; }
.cv-page.tpl-modern .cv-title { margin: 2pt 0 5pt; }
.cv-page.tpl-modern .cv-contact { justify-content: center; }
.cv-page.tpl-modern .cv-sec { margin-top: 12pt; }
.cv-page.tpl-modern .cv-sec h2 { font-size: 12pt; border-bottom: 1.2pt solid var(--cv-rule); padding-bottom: 3pt; }
.cv-page.tpl-modern .cv-item-title { font-size: 10.5pt; }

/* compact: smaller type and tighter spacing so dense content stays on one page */
.cv-page.tpl-compact { font-size: 9.5pt; line-height: 1.38; padding: 12mm 14mm 11mm; }
.cv-page.tpl-compact .cv-head { padding-bottom: 6pt; margin-bottom: 6pt; border-bottom-width: 1pt; }
.cv-page.tpl-compact .cv-name { font-size: 18pt; }
.cv-page.tpl-compact .cv-title { font-size: 10.5pt; margin: 2pt 0 4pt; }
.cv-page.tpl-compact .cv-sec { margin-top: 7pt; }
.cv-page.tpl-compact .cv-sec h2 { font-size: 10.5pt; margin-bottom: 3pt; padding-bottom: 1.5pt; }
.cv-page.tpl-compact .cv-item { margin-bottom: 5pt; }
.cv-page.tpl-compact .cv-item-title { font-size: 10pt; }
.cv-page.tpl-compact .cv-bullets { margin-top: 2pt; }
.cv-page.tpl-compact .cv-bullets li { margin-bottom: 1pt; }

/* technical: skills come first (cv.js), shown as "Label: items" lines; headings with a left bar */
.cv-page.tpl-technical .cv-sec h2 { border-bottom: 0; border-inline-start: 3pt solid var(--cv-rule); padding: 0 0 0 6pt; margin-bottom: 4pt; }
.cv-page.tpl-technical .cv-head { border-bottom-width: 1pt; }

/* Inline skill rows (compact, technical): label and items on one line, separated by a real ": " */
.cv-page.tpl-compact .cv-skill-label, .cv-page.tpl-technical .cv-skill-label,
.cv-page.tpl-compact .cv-skill-items, .cv-page.tpl-technical .cv-skill-items { display: inline; }
.cv-page.tpl-compact .cv-skills li, .cv-page.tpl-technical .cv-skills li { margin-bottom: 2pt; }

/* practitioner: certifications and practical training first (cv.js); quiet, document-like headings */
.cv-page.tpl-practitioner .cv-head { border-bottom: .8pt solid var(--cv-rule); }
.cv-page.tpl-practitioner .cv-name { font-size: 20pt; }
.cv-page.tpl-practitioner .cv-sec h2 { font-size: 10.5pt; border-bottom: .6pt solid var(--cv-rule); }
.cv-page.tpl-practitioner .cv-item-org { color: var(--cv-ink); }

@media print {
  .cv-page.tpl-compact { padding: 0; }
}
