/* ============================================================
   CV Builder — resume document templates (preview + print)
   The A4 page is ALWAYS light, independent of app theme.
   Templates: ats-clear · ats-compact · sidebar-pro · modern-accent
   RTL/LTR driven by dir attribute + logical properties.
   ============================================================ */

.cv-paper-body {
  margin: 0;
  background: #e8eaf0;
  font-family: 'Cairo', 'Inter', 'Segoe UI', Tahoma, sans-serif;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

.cv-sheet-stack {
  display: flex;
  flex-direction: column;
  gap: 1.1rem;
  align-items: center;
}

.cv-page {
  width: 210mm;
  height: 297mm;
  max-height: 297mm;
  max-width: 100%;
  margin: 0 auto;
  background: #fff;
  box-shadow: 0 2px 18px rgba(15, 23, 42, .18);
  overflow: hidden;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}
.cv-page > .cv-doc {
  flex: 1 1 auto;
  min-height: 0;
  height: 100%;
  box-sizing: border-box;
}

.cv-page.cv-page-cont {
  margin-top: 12px;
  page-break-before: always;
  break-before: page;
}

@media screen and (max-width: 840px) {
  .cv-page {
    width: 100%;
    height: auto;
    min-height: 0;
    max-height: none;
    overflow: visible;
  }
}

@media print {
  .cv-sheet-stack { gap: 0; }
  .cv-page {
    width: 210mm;
    height: 297mm;
    min-height: 297mm;
    max-height: 297mm;
    margin: 0;
    box-shadow: none;
    overflow: hidden;
    page-break-after: always;
    break-after: page;
  }
  .cv-page:last-child {
    page-break-after: auto;
    break-after: auto;
  }
}

/* ---------- Document base ---------- */
.cv-doc {
  --cv-accent: #2563eb;
  --cv-ink: #1a202c;
  --cv-muted: #4a5568;
  --cv-rule: #e2e8f0;
  color: var(--cv-ink);
  background: #fff;
  line-height: 1.55;
  font-size: 13px;
  word-wrap: break-word;
  overflow: visible;
  min-width: 0;
}
.cv-doc[lang="en"] { font-family: 'Inter', 'Segoe UI', sans-serif; }
.cv-doc[lang="ar"] { font-family: 'Cairo', Tahoma, sans-serif; }

.cv-fs-1 { font-size: 11.5px; }
.cv-fs-2 { font-size: 13px; }
.cv-fs-3 { font-size: 14.5px; }

.cv-doc h1, .cv-doc h2, .cv-doc p, .cv-doc ul { margin: 0; }
.cv-doc ul { padding: 0; }

.cv-name { font-size: 2em; font-weight: 800; line-height: 1.2; }
.cv-title { font-size: 1.1em; color: var(--cv-muted); font-weight: 600; }
.cv-contact { font-size: .92em; color: var(--cv-muted); }
.cv-sep { opacity: .6; padding: 0 .15em; }

.cv-sec { margin-top: 1.15em; }
.cv-h {
  font-size: 1em;
  font-weight: 800;
  letter-spacing: .02em;
  color: var(--cv-accent);
  margin-bottom: .45em;
  position: relative;
  z-index: 1;
}

.cv-sec-skills .cv-h { margin-bottom: .55em; }
.cv-sec-skills .cv-tags { margin-top: .65em; position: relative; z-index: 0; }
.cv-sec-languages .cv-h,
.cv-sec-certifications .cv-h { margin-bottom: .5em; }

/* Continuation pages (after A4 split) */
.cv-doc-cont {
  min-height: 100%;
  box-sizing: border-box;
  overflow: visible;
}
.cv-doc-cont.tpl-ats-clear,
.cv-doc-cont.tpl-ats-compact { padding: 12mm 13mm; }

/* Sidebar Pro — page 2+ keeps colored sidebar shell + main flow */
.cv-doc-cont.tpl-sidebar-pro .cv-cols-cont {
  display: grid;
  grid-template-columns: 64mm 1fr;
  min-height: 100%;
  align-items: stretch;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont {
  background: color-mix(in srgb, var(--cv-accent) 88%, #000);
  color: #fff;
  padding: 14mm 8mm;
  min-height: 100%;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-side-head,
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-photo {
  text-align: center;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-photo {
  display: flex;
  justify-content: center;
  margin-bottom: 1em;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-photo img {
  border: 3px solid rgba(255,255,255,.55);
  width: 96px;
  height: 96px;
  border-radius: 18px;
  object-fit: cover;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-name {
  font-size: 1.35em;
  color: #fff;
  line-height: 1.25;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-title {
  color: rgba(255,255,255,.85);
  margin-top: .2em;
  font-size: .95em;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-h {
  color: #fff;
  border-bottom: 1px solid rgba(255,255,255,.35);
  padding-bottom: .3em;
  text-transform: uppercase;
  font-size: .85em;
  letter-spacing: .06em;
}
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-contact { color: rgba(255,255,255,.92); }
.cv-doc-cont.tpl-sidebar-pro .cv-side-cont .cv-citem .cv-ci { opacity: .92; }
.cv-doc-cont.tpl-sidebar-pro .cv-main {
  padding: 14mm 10mm;
  min-width: 0;
}

/* Modern Accent — page 2+ is clean main-column continuation (no banner/aside) */
.cv-doc-cont.tpl-modern-accent .cv-cols-cont {
  display: block;
  min-height: 100%;
  padding: 0;
}
.cv-doc-cont.tpl-modern-accent .cv-main {
  padding: 14mm 13mm;
  min-width: 0;
}

.cv-item { margin-bottom: .8em; }
.cv-item:last-child { margin-bottom: 0; }
.cv-item-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1em;
  flex-wrap: wrap;
}
.cv-role { display: block; font-weight: 700; }
.cv-org { display: block; color: var(--cv-muted); font-size: .95em; }
.cv-period { color: var(--cv-muted); font-size: .88em; white-space: nowrap; font-weight: 600; }
.cv-details, .cv-summary { color: var(--cv-ink); }

.cv-bullets { margin-top: .3em; padding-inline-start: 1.2em; }
.cv-bullets li { margin-bottom: .18em; }

.cv-tags { display: flex; flex-wrap: wrap; gap: .4em; margin-top: .55em; }
.cv-tag {
  background: color-mix(in srgb, var(--cv-accent) 10%, #fff);
  border: 1px solid color-mix(in srgb, var(--cv-accent) 30%, #fff);
  color: var(--cv-ink);
  border-radius: 999px;
  padding: .1em .7em;
  font-size: .9em;
  font-weight: 600;
}

.cv-contact-stack {
  display: flex;
  flex-direction: column;
  gap: .45em;
}
.cv-citem {
  display: flex;
  align-items: flex-start;
  gap: .45em;
  line-height: 1.35;
}
.cv-citem .cv-ci { flex: 0 0 auto; margin-top: .15em; opacity: .9; }
.cv-citem-txt { min-width: 0; overflow-wrap: anywhere; }
.cv-phone { unicode-bidi: isolate; direction: ltr; display: inline-block; }
.cv-contact-banner .cv-citem { flex-direction: row; }
.cv-contact-banner .cv-contact-stack {
  flex-direction: row;
  flex-wrap: wrap;
  gap: .35em .9em;
}
.tpl-modern-accent .cv-aside .cv-sec { margin-top: 1em; }
.tpl-modern-accent .cv-aside .cv-h { margin-bottom: .55em; }
.tpl-modern-accent .cv-main .cv-sec-skills .cv-tags,
.tpl-modern-accent .cv-aside .cv-sec-skills .cv-tags { margin-top: .65em; }
.tpl-sidebar-pro .cv-side .cv-sec-skills .cv-h { margin-bottom: .5em; }
.tpl-sidebar-pro .cv-side .cv-tags { margin-top: .65em; }

.cv-lang { display: flex; justify-content: space-between; gap: 1em; padding: .12em 0; }
.cv-lang em { color: var(--cv-muted); font-style: normal; font-size: .92em; }

.cv-cert strong { display: block; }

.cv-photo img {
  width: 108px; height: 108px;
  object-fit: cover;
  border-radius: 18px; /* square with rounded corners */
  display: block;
}

/* ============================================================
   1) ATS Clear — single column, conventional, no photo
   ============================================================ */
.tpl-ats-clear { padding: 16mm 15mm; }
.tpl-ats-clear .cv-head { text-align: center; padding-bottom: .9em; border-bottom: 2px solid var(--cv-ink); }
.tpl-ats-clear .cv-name { color: var(--cv-ink); letter-spacing: .01em; }
.tpl-ats-clear .cv-title { margin-top: .2em; font-weight: 600; }
.tpl-ats-clear .cv-contact {
  margin-top: .55em;
  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;
  gap: .2em .15em;
  line-height: 1.45;
}
.tpl-ats-clear .cv-contact .cv-sep { opacity: .65; }
.tpl-ats-clear .cv-sec { margin-top: 1.05em; }
.tpl-ats-clear .cv-h {
  color: var(--cv-ink);
  text-transform: uppercase;
  letter-spacing: .06em;
  border-bottom: 1px solid var(--cv-rule);
  padding-bottom: .28em;
  margin-bottom: .55em;
}
.tpl-ats-clear .cv-tag { background: none; border: none; padding: 0; border-radius: 0; }
.tpl-ats-clear .cv-tag + .cv-tag::before { content: "· "; color: var(--cv-muted); }
.tpl-ats-clear .cv-tags { gap: .25em .4em; margin-top: .35em; }
.tpl-ats-clear .cv-item { margin-bottom: .7em; }

/* ============================================================
   2) ATS Compact — denser single column with subtle rules
   ============================================================ */
.tpl-ats-compact { padding: 12mm 13mm; line-height: 1.42; }
.tpl-ats-compact .cv-head {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 1em; flex-wrap: wrap;
  border-bottom: 3px double var(--cv-ink); padding-bottom: .55em;
}
.tpl-ats-compact .cv-name { font-size: 1.7em; line-height: 1.15; }
.tpl-ats-compact .cv-title { margin-top: .1em; font-weight: 600; }
.tpl-ats-compact .cv-contact {
  text-align: end; max-width: 48%;
  display: flex; flex-direction: column; align-items: flex-end; gap: .12em;
  font-size: .92em; line-height: 1.4;
}
.tpl-ats-compact .cv-contact .cv-sep { display: none; }
.tpl-ats-compact .cv-sec { margin-top: .85em; }
.tpl-ats-compact .cv-h {
  color: var(--cv-ink);
  font-size: .92em;
  text-transform: uppercase;
  letter-spacing: .08em;
  display: flex; align-items: center; gap: .6em;
  margin-bottom: .4em;
}
.tpl-ats-compact .cv-h::after { content: ""; flex: 1; border-top: 1px solid var(--cv-rule); }
.tpl-ats-compact .cv-item { margin-bottom: .55em; }
.tpl-ats-compact .cv-bullets li { margin-bottom: .08em; }
.tpl-ats-compact .cv-tag { background: none; border: 1px solid var(--cv-rule); border-radius: 4px; padding: .08em .55em; }
.tpl-ats-compact .cv-tags { gap: .3em .35em; margin-top: .3em; }

@media screen and (max-width: 640px) {
  .tpl-ats-compact .cv-head { flex-direction: column; align-items: flex-start; }
  .tpl-ats-compact .cv-contact { text-align: start; max-width: 100%; }
}

/* ============================================================
   3) Sidebar Pro — colored sidebar + main column (Design)
   ============================================================ */
.tpl-sidebar-pro .cv-cols {
  display: grid;
  grid-template-columns: 64mm 1fr;
  min-height: 100%;
  height: 100%;
  align-items: stretch;
}
.tpl-sidebar-pro .cv-side {
  background: color-mix(in srgb, var(--cv-accent) 88%, #000);
  color: #fff;
  padding: 12mm 7.5mm 12mm;
  min-width: 0;
  height: 100%;
  box-sizing: border-box;
  overflow: hidden;
}
.tpl-sidebar-pro .cv-side .cv-side-head {
  text-align: center;
  margin-bottom: .15em;
}
.tpl-sidebar-pro .cv-side .cv-photo {
  display: flex;
  justify-content: center;
  margin-bottom: 1.05em;
}
.tpl-sidebar-pro .cv-side .cv-photo img {
  border: 3px solid rgba(255,255,255,.55);
  width: 108px;
  height: 108px;
  border-radius: 18px;
  object-fit: cover;
  display: block;
  flex-shrink: 0;
}
.tpl-sidebar-pro .cv-side .cv-name {
  font-size: 1.45em;
  color: #fff;
  line-height: 1.22;
  letter-spacing: .01em;
}
.tpl-sidebar-pro .cv-side .cv-title {
  color: rgba(255,255,255,.88);
  margin-top: .25em;
  font-size: .98em;
  font-weight: 600;
  line-height: 1.35;
}
.tpl-sidebar-pro .cv-side .cv-h {
  color: #fff;
  border-bottom: 1px solid rgba(255,255,255,.35);
  padding-bottom: .32em;
  text-transform: uppercase;
  font-size: .88em;
  letter-spacing: .06em;
  margin-bottom: .5em;
}
.tpl-sidebar-pro .cv-side .cv-contact-stack { gap: .55em; }
.tpl-sidebar-pro .cv-side .cv-citem {
  align-items: flex-start;
  gap: .5em;
}
.tpl-sidebar-pro .cv-side .cv-citem .cv-ci {
  opacity: .95;
  flex-shrink: 0;
  width: 15px;
  height: 15px;
  margin-top: .12em;
}
.tpl-sidebar-pro .cv-side .cv-citem-txt {
  min-width: 0;
  overflow-wrap: anywhere;
  line-height: 1.4;
}
.tpl-sidebar-pro .cv-side .cv-contact { color: rgba(255,255,255,.93); display: block; }
.tpl-sidebar-pro .cv-side .cv-sec { margin-top: 1.1em; }
.tpl-sidebar-pro .cv-side .cv-sec:first-of-type { margin-top: 1.15em; }
.tpl-sidebar-pro .cv-side .cv-sec-skills .cv-h { margin-bottom: .55em; }
.tpl-sidebar-pro .cv-side .cv-sec-skills .cv-tags {
  margin-top: .65em;
  gap: .35em .4em;
}
.tpl-sidebar-pro .cv-side .cv-contact .cv-sep { display: block; height: .25em; overflow: hidden; opacity: 0; }
.tpl-sidebar-pro .cv-side .cv-tag {
  background: rgba(255,255,255,.16);
  border: 1px solid rgba(255,255,255,.38);
  color: #fff;
  font-size: .86em;
  padding: .14em .65em;
  line-height: 1.35;
}
.tpl-sidebar-pro .cv-side .cv-lang {
  padding: .18em 0;
  font-size: .95em;
}
.tpl-sidebar-pro .cv-side .cv-lang em { color: rgba(255,255,255,.82); }
.tpl-sidebar-pro .cv-main {
  padding: 12mm 10mm 12mm 9mm;
  min-width: 0;
  height: 100%;
  box-sizing: border-box;
  overflow: hidden;
}
.tpl-sidebar-pro .cv-main .cv-summary,
.tpl-sidebar-pro .cv-main .cv-details,
.tpl-sidebar-pro .cv-main .cv-bullets li,
.tpl-sidebar-pro .cv-side .cv-citem-txt,
.tpl-sidebar-pro .cv-side .cv-lang {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.tpl-sidebar-pro .cv-main .cv-sec { margin-top: 1.05em; }
.tpl-sidebar-pro .cv-main .cv-sec:first-child { margin-top: 0; }
.tpl-sidebar-pro .cv-main .cv-h {
  border-inline-start: 4px solid var(--cv-accent);
  padding-inline-start: .55em;
  margin-bottom: .5em;
}
.tpl-sidebar-pro .cv-main .cv-item { margin-bottom: .75em; }
.tpl-sidebar-pro .cv-main .cv-summary,
.tpl-sidebar-pro .cv-main .cv-details { line-height: 1.58; }

@media screen and (max-width: 640px) {
  .tpl-sidebar-pro .cv-cols { grid-template-columns: 1fr; min-height: auto; }
  .cv-doc-cont.tpl-sidebar-pro .cv-cols-cont { grid-template-columns: 1fr; }
}

/* ============================================================
   4) Modern Accent — accent banner + two-column body (Design)
   ============================================================ */
.tpl-modern-accent .cv-banner {
  background: linear-gradient(120deg, var(--cv-accent), color-mix(in srgb, var(--cv-accent) 70%, #000));
  color: #fff;
  padding: 11mm 13mm;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.25em;
  flex-wrap: nowrap;
}
.tpl-modern-accent .cv-banner-text {
  flex: 1 1 auto;
  min-width: 0;
}
.tpl-modern-accent .cv-banner .cv-name {
  color: #fff;
  font-size: 1.85em;
  line-height: 1.18;
  letter-spacing: .01em;
}
.tpl-modern-accent .cv-banner .cv-title {
  color: rgba(255,255,255,.9);
  margin-top: .2em;
  font-size: 1.02em;
  font-weight: 600;
}
.tpl-modern-accent .cv-banner .cv-contact {
  color: rgba(255,255,255,.88);
  margin-top: .6em;
  font-size: .88em;
}
.tpl-modern-accent .cv-banner .cv-citem {
  align-items: flex-start;
  gap: .45em;
}
.tpl-modern-accent .cv-banner .cv-citem .cv-ci {
  opacity: .94;
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  margin-top: .1em;
}
.tpl-modern-accent .cv-banner .cv-citem-txt {
  min-width: 0;
  overflow-wrap: anywhere;
  line-height: 1.38;
}
.tpl-modern-accent .cv-banner .cv-contact-stack { gap: .42em; }
.tpl-modern-accent .cv-banner .cv-photo {
  flex: 0 0 104px;
  width: 104px;
  height: 104px;
  aspect-ratio: 1 / 1;
  border-radius: 18px;
  overflow: hidden;
  align-self: center;
}
.tpl-modern-accent .cv-banner .cv-photo img {
  border: 3px solid rgba(255,255,255,.65);
  width: 104px;
  height: 104px;
  max-width: 104px;
  max-height: 104px;
  aspect-ratio: 1 / 1;
  border-radius: 18px;
  object-fit: cover;
  display: block;
}
.tpl-modern-accent {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  height: 100%;
}
.tpl-modern-accent .cv-cols {
  display: grid;
  grid-template-columns: 1fr 56mm;
  gap: 0 7mm;
  padding: 6mm 12mm 10mm;
  align-items: stretch;
  flex: 1 1 auto;
  min-height: 0;
}
.tpl-modern-accent .cv-main {
  min-width: 0;
  padding-inline-end: 1mm;
  overflow: hidden;
}
.tpl-modern-accent .cv-main .cv-summary,
.tpl-modern-accent .cv-main .cv-details,
.tpl-modern-accent .cv-main .cv-bullets li,
.tpl-modern-accent .cv-aside .cv-lang,
.tpl-modern-accent .cv-banner .cv-citem-txt {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.tpl-modern-accent .cv-main .cv-sec { margin-top: 1em; }
.tpl-modern-accent .cv-main .cv-sec:first-child { margin-top: 0; }
.tpl-modern-accent .cv-main .cv-item { margin-bottom: .72em; }
.tpl-modern-accent .cv-main .cv-summary,
.tpl-modern-accent .cv-main .cv-details { line-height: 1.58; }
.tpl-modern-accent .cv-aside {
  min-width: 0;
  align-self: start;
}
.tpl-modern-accent .cv-aside .cv-sec {
  background: color-mix(in srgb, var(--cv-accent) 8%, #fff);
  border: 1px solid color-mix(in srgb, var(--cv-accent) 22%, #fff);
  border-radius: 10px;
  padding: .85em .95em;
  overflow: visible;
}
.tpl-modern-accent .cv-aside .cv-sec + .cv-sec { margin-top: .7em; }
.tpl-modern-accent .cv-aside .cv-h {
  margin-bottom: .5em;
  font-size: .95em;
}
.tpl-modern-accent .cv-aside .cv-tags {
  margin-top: .5em;
  gap: .32em .38em;
}
.tpl-modern-accent .cv-aside .cv-tag {
  font-size: .86em;
  padding: .12em .6em;
  line-height: 1.35;
}
.tpl-modern-accent .cv-aside .cv-lang {
  font-size: .94em;
  padding: .15em 0;
}
.tpl-modern-accent .cv-aside .cv-cert .cv-org {
  margin-top: .12em;
  line-height: 1.4;
}
.tpl-modern-accent .cv-h { position: relative; padding-bottom: .32em; }
.tpl-modern-accent .cv-main .cv-h::after {
  content: "";
  position: absolute;
  inset-inline-start: 0;
  bottom: 0;
  width: 2.5em;
  border-bottom: 3px solid var(--cv-accent);
}
.cv-doc-cont.tpl-modern-accent .cv-main .cv-h::after {
  width: 2.5em;
}

@media screen and (max-width: 640px) {
  .tpl-modern-accent .cv-cols { grid-template-columns: 1fr; }
  .tpl-modern-accent .cv-banner {
    flex-direction: column-reverse;
    text-align: center;
    align-items: center;
  }
  .tpl-modern-accent .cv-banner-text { width: 100%; }
}

/* ============================================================
   Sample watermark (preview + locked print)
   ============================================================ */
.cv-doc.cv-watermarked {
  position: relative;
  /* Do not clip document content — page shell handles A4 crop */
  overflow: visible;
}
.cv-wm {
  position: absolute;
  inset: 0;
  z-index: 40;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  /* Prevent SAMPLE overlay from inflating scrollHeight / pagination */
  contain: paint;
  width: 100%;
  height: 100%;
  max-height: 100%;
}
.cv-wm-grid {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 180%;
  height: 180%;
  display: flex;
  flex-wrap: wrap;
  align-content: center;
  justify-content: center;
  gap: 2.4rem 3.2rem;
  transform: translate(-50%, -50%) rotate(-28deg);
  opacity: 0.14;
  color: #334155;
  font-family: 'Inter', 'Cairo', sans-serif;
  font-size: 1.85rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  line-height: 1;
  pointer-events: none;
}
.cv-wm-grid span { white-space: nowrap; }

/* ============================================================
   PIN unlock gate (locked print/PDF)
   ============================================================ */
.cv-pin-gate-body { position: relative; min-height: 100vh; }
.cv-pin-overlay {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(2px);
}
.cv-pin-card {
  width: min(420px, 100%);
  background: #fff;
  color: #0f172a;
  border-radius: 16px;
  padding: 1.6rem 1.5rem 1.4rem;
  box-shadow: 0 18px 50px rgba(15, 23, 42, .28);
  font-family: 'Cairo', 'Inter', sans-serif;
}
.cv-pin-eyebrow {
  display: inline-block;
  margin: 0 0 .65rem;
  padding: .15rem .65rem;
  border-radius: 999px;
  background: #fef3c7;
  color: #92400e;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .04em;
}
.cv-pin-card h1 {
  margin: 0 0 .45rem;
  font-size: 1.35rem;
  font-weight: 800;
  line-height: 1.3;
}
.cv-pin-hint {
  margin: 0 0 1rem;
  color: #64748b;
  font-size: .92rem;
  line-height: 1.55;
}
.cv-pin-error {
  margin: 0 0 .85rem;
  padding: .55rem .75rem;
  border-radius: 10px;
  background: #fef2f2;
  color: #b91c1c;
  font-size: .9rem;
  font-weight: 600;
}
.cv-pin-form { display: grid; gap: .55rem; }
.cv-pin-label { font-size: .88rem; font-weight: 700; color: #334155; }
.cv-pin-input {
  width: 100%;
  box-sizing: border-box;
  text-align: center;
  letter-spacing: .45em;
  font-size: 1.55rem;
  font-weight: 800;
  font-family: 'Inter', monospace;
  padding: .7rem .8rem;
  border: 2px solid #cbd5e1;
  border-radius: 12px;
  outline: none;
}
.cv-pin-input:focus { border-color: #2563eb; box-shadow: 0 0 0 3px rgba(37, 99, 235, .18); }
.cv-pin-submit {
  margin-top: .35rem;
  border: 0;
  border-radius: 12px;
  background: #2563eb;
  color: #fff;
  font: inherit;
  font-weight: 800;
  padding: .75rem 1rem;
  cursor: pointer;
}
.cv-pin-submit:hover { background: #1d4ed8; }
.cv-pin-preview { filter: blur(.6px) saturate(.85); opacity: .55; pointer-events: none; }

/* ============================================================
   Print toolbar (cv-print.php) + print rules
   ============================================================ */
.cv-print-toolbar {
  position: sticky; top: 0; z-index: 10;
  display: flex; align-items: center; gap: 1rem;
  background: #0f172a; color: #cbd5e1;
  padding: .65rem 1rem; font-size: .9rem;
  font-family: 'Cairo', 'Inter', sans-serif;
}
.cv-print-toolbar button {
  background: #2563eb; color: #fff; border: 0; border-radius: 8px;
  padding: .5rem 1.4rem; font: inherit; font-weight: 700; cursor: pointer;
}
.cv-print-toolbar button:hover { background: #1d4ed8; }

@page { size: A4; margin: 0; }

@media print {
  .cv-paper-body { background: #fff; }
  .cv-print-toolbar,
  .cv-pin-overlay { display: none !important; }
  .cv-page {
    width: 210mm;
    height: 297mm;
    max-height: 297mm;
    margin: 0;
    box-shadow: none;
    page-break-after: always;
    overflow: hidden;
  }
  .cv-page:last-child { page-break-after: auto; }
  .cv-page-cont { margin-top: 0; page-break-before: always; }
  .cv-sheet-stack { display: block; }
  .cv-doc { font-size: 12px; }
  .cv-fs-1 { font-size: 10.5px; }
  .cv-fs-3 { font-size: 13.5px; }
  .cv-item, .cv-sec-skills, .cv-sec-languages, .cv-sec-certifications { break-inside: avoid; }
  .cv-h { break-after: avoid; }
  .cv-sec { break-inside: auto; }
  .tpl-sidebar-pro .cv-cols { min-height: 100%; align-items: stretch; }
  .tpl-sidebar-pro .cv-side { min-height: 100%; }
  .cv-doc-cont.tpl-sidebar-pro .cv-cols-cont { min-height: 296mm; }
  a { color: inherit; text-decoration: none; }

  /* Keep Sample watermark when body/doc is still watermarked */
  body.cv-watermarked .cv-wm,
  .cv-doc.cv-watermarked .cv-wm {
    display: block !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}
