/* Lebenslauf-Seiten (Vorschau = PDF-Vorlage).
   WICHTIG: keine ::before/::after mit Inhalt, keine list-style-Marker, keine Unterstreichungen, keine Schatten/Verläufe,
   gestrichelte Rahmen werden im PDF durchgezogen. Alles Sichtbare muss echtes DOM sein. */

.cv-page {
  position: relative; width: 210mm; height: 297mm; overflow: hidden; background: #fff; color: #1f2937;
  font-family: var(--font), serif; font-size: var(--fs); line-height: var(--lh);
  font-kerning: none; font-variant-ligatures: none; font-synthesis: none; hyphens: none;
  text-align: left; -webkit-print-color-adjust: exact; print-color-adjust: exact;
  --date-w: 10.6em;
}
.cv-page *, .cv-page *::before, .cv-page *::after { box-sizing: border-box; }
.cv-page p, .cv-page h1 { margin: 0; }
.cv-page a { color: inherit; text-decoration: none; }
.cv-page strong { font-weight: 700; }
.cv-page em { font-style: italic; }
.pg-inner { position: relative; height: 100%; padding: calc(var(--pad) * 0.9) var(--pad) var(--pad); }
.pg-header { margin-bottom: calc(var(--gap) * 0.55); }
.pg-cols { display: block; }
.layout-side-left .pg-cols, .layout-side-right .pg-cols { display: grid; column-gap: var(--col-gap); align-items: start; }
.layout-side-left .pg-cols { grid-template-columns: var(--side-w) minmax(0, 1fr); }
.layout-side-left .col-side { grid-column: 1; grid-row: 1; }
.layout-side-left .col-main { grid-column: 2; grid-row: 1; }
.layout-side-right .pg-cols { grid-template-columns: minmax(0, 1fr) var(--side-w); }
.layout-side-left, .layout-side-right { --date-w: 8.6em; }
.col { min-width: 0; }

/* Blöcke und Abstände */
.b { padding-top: var(--egap); }
.b-sec { padding-top: var(--gap); }
.b-part { padding-top: calc(var(--egap) * 0.22); }
.b-text { padding-top: calc(var(--egap) * 0.45); }
.b-text.is-li { padding-top: calc(var(--egap) * 0.22); }
.b.pg-top { padding-top: 0; }

.sec-title { font-size: var(--fs-h); font-weight: 700; color: var(--accent-ink); line-height: 1.25; letter-spacing: .04em; display: flex; align-items: center; }
.hcase-upper .sec-txt { text-transform: uppercase; }
.sec-mark { display: none; }

/* Einträge mit Zeitspalte */
.col-main .b-ent, .col-main .b-part, .col-main .b-row, .col-main .b-chips, .col-main .b-inline {
  display: grid; grid-template-columns: var(--date-w) minmax(0, 1fr); column-gap: 14px;
}
.ent-date { color: #4b5563; }
.ent-head { display: block; }
.ent-title { font-weight: 700; color: #111827; }
.ent-sub { color: #4b5563; }
.ent-grade { white-space: nowrap; }
.ent-url { color: var(--accent-ink); font-size: .92em; overflow-wrap: anywhere; }
.date-left .ent-date-r { display: none; }
.date-right .col-main .b-ent, .date-right .col-main .b-part, .date-right .col-main .b-row, .date-right .col-main .b-chips, .date-right .col-main .b-inline { display: block; }
.date-right .col-main .ent-date { display: none; }
.date-right .col-main .row-label { display: block; font-weight: 700; }
.date-right .ent-head { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.date-right .ent-date-r { flex: none; color: #4b5563; font-size: .92em; }
.cv-page .col-side .ent-head { display: block; }
.cv-page .col-side .ent-date-r { display: block; color: #6b7280; font-size: .88em; }

.li { display: flex; gap: .45em; }
.bul { flex: none; }
.li-t { flex: 1; min-width: 0; }
.align-justify .li-t, .align-justify .b-text p, .align-justify .b-part p { text-align: justify; }
.sep { margin: 0 .45em; color: #6b7280; }
.row-label { color: #4b5563; }

.b-langs { display: grid; grid-template-columns: 1fr 1fr; column-gap: 32px; row-gap: 2px; }
.lang { display: flex; justify-content: space-between; gap: 12px; }
.l-name { font-weight: 700; color: #111827; }
.l-lvl { color: #4b5563; text-align: right; }
.l-info { display: block; font-size: .88em; color: #6b7280; }

.chips { display: flex; flex-wrap: wrap; gap: 3px 18px; }
.chip { display: inline-flex; align-items: center; gap: 6px; }
.dots { display: inline-flex; gap: 3px; align-items: center; }
.dot { display: inline-block; width: .5em; height: .5em; border-radius: 50%; background: #e5e7eb; }
.dot.on { background: var(--accent); }

/* Seitenleisten-Inhalte */
.b-skill { padding-top: calc(var(--egap) * 0.55); }
.sk-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.sk-name { font-weight: 700; color: #111827; }
.sk-lvl { color: #4b5563; font-size: .9em; text-align: right; }
.sk-info { color: #4b5563; font-size: .92em; }
.bar { height: 4px; border-radius: 2px; background: var(--accent-mid); margin-top: 3px; }
.bar-on { height: 4px; border-radius: 2px; background: var(--accent); }
.side-photo { display: flex; justify-content: center; margin-bottom: 14px; }
.side-h { font-size: calc(var(--fs-h) * .92); font-weight: 700; color: var(--accent-ink); letter-spacing: .08em; text-transform: uppercase; margin: 10px 0 5px; }
.side-photo + .side-h, .b-side-top > .side-h:first-child { margin-top: 0; }
.side-list { font-size: .93em; }
.si { padding: 2px 0; }
.si .ci { display: flex; gap: 7px; align-items: flex-start; }
.si .ico { margin-top: .22em; }
.si-l { display: block; font-size: .86em; color: #6b7280; }
.si-v { display: block; }
.ci-t { min-width: 0; overflow-wrap: anywhere; }

/* Kopf */
.hdr { display: flex; align-items: center; gap: 22px; }
.hdr-text { flex: 1; min-width: 0; }
.name { font-size: calc(var(--fs-h) * 2.15); font-weight: 700; line-height: 1.15; color: #111827; }
.name .ph { color: #9ca3af; }
.job { font-size: 1.1em; color: #4b5563; margin-top: 2px; }
.contact, .pers { margin-top: 6px; color: #4b5563; font-size: .93em; }
.contact .ci, .pers .ci { white-space: nowrap; }
.pers { margin-top: 2px; }
.ico { width: 1em; height: 1em; flex: none; fill: var(--accent-ink); }
.contact .ico, .pers .ico { display: none; }
.photo { display: block; width: var(--photo); height: var(--photo); object-fit: cover; }
.photo.shape-portrait { height: calc(var(--photo) * 1.28); }

/* Fußzeile */
.pg-foot { position: absolute; left: var(--pad); right: var(--pad); bottom: calc(var(--pad) * .38); display: flex; justify-content: space-between; font-size: .78em; color: #9ca3af; }

/* Unterschrift */
.b-sig { padding-top: calc(var(--gap) * 1.2); }
.sig-img { display: block; height: 48px; width: auto; max-width: 220px; margin-top: 4px; }
.sig-space { height: 40px; }
.sig-line { width: 210px; border-top: 1px solid #9ca3af; margin-top: 2px; }
.sig-name { font-size: .9em; color: #4b5563; }

/* ---------- Klassisch ---------- */
.tpl-klassisch .hdr { padding-bottom: 12px; border-bottom: 1.5px solid var(--accent); }
.tpl-klassisch .hdr-text { text-align: center; }
.tpl-klassisch .hdr.has-photo .hdr-text { text-align: left; }
.tpl-klassisch .name { color: var(--accent-ink); }
.tpl-klassisch .job { font-style: italic; }
.tpl-klassisch .b-sec { padding-top: calc(var(--gap) * .75); }
.tpl-klassisch .sec-title { font-weight: 400; color: #111827; font-size: calc(var(--fs-h) * .92); border-top: 1px solid var(--accent); padding-top: calc(var(--gap) * .6); }
.tpl-klassisch .sec-first .sec-title, .tpl-klassisch .pg-top .sec-title { border-top: 0; padding-top: 0; }
.tpl-klassisch .b-sec.sec-first { padding-top: 0; }

/* ---------- Modern ---------- */
.tpl-modern .name { color: var(--accent-ink); font-size: calc(var(--fs-h) * 2.35); }
.tpl-modern .job { font-weight: 700; color: #374151; }
.tpl-modern .contact, .tpl-modern .pers { display: flex; flex-wrap: wrap; gap: 3px 16px; margin-top: 8px; }
.tpl-modern .contact .sep, .tpl-modern .pers .sep { display: none; }
.tpl-modern .ci { display: inline-flex; align-items: center; gap: 5px; }
.tpl-modern .contact .ico, .tpl-modern .pers .ico { display: block; }
.tpl-modern .sec-title { font-size: calc(var(--fs-h) * 1.1); border-bottom: 2px solid var(--accent-mid); padding-bottom: 3px; }
.tpl-modern .ent-title { color: #111827; }
.tpl-modern .ent-sub { color: var(--accent-ink); }

/* ---------- Sand-Seitenleiste ---------- */
.pg-sidebg { position: absolute; left: 0; top: 0; bottom: 0; width: calc(var(--pad) + var(--side-w) + var(--col-gap) / 2); background: var(--accent-soft); }
.tpl-seitenleiste .name { font-size: calc(var(--fs-h) * 2.4); }
.tpl-seitenleiste .job { color: var(--accent-ink); font-size: 1.15em; }
.tpl-seitenleiste .col-main .sec-title { font-size: calc(var(--fs-h) * 1.1); border-bottom: 1px solid var(--accent-mid); padding-bottom: 3px; }
.tpl-seitenleiste .col-side .sec-title, .tpl-zweispaltig .col-side .sec-title { font-size: calc(var(--fs-h) * .92); letter-spacing: .08em; }
.tpl-seitenleiste .col-side .b-sec { padding-top: calc(var(--gap) * .9); }

/* ---------- Geometrisch ---------- */
.tpl-geometrisch .pg-header { margin: calc(var(--pad) * -.9) calc(var(--pad) * -1) var(--gap); padding: calc(var(--pad) * .7) var(--pad) calc(var(--pad) * .45); background: var(--accent); color: var(--on-accent); }
.tpl-geometrisch .name, .tpl-geometrisch .job, .tpl-geometrisch .contact, .tpl-geometrisch .pers, .tpl-geometrisch .hdr .sep { color: var(--on-accent); }
.tpl-geometrisch .name { text-transform: uppercase; letter-spacing: .03em; }
.tpl-geometrisch .sec-title { text-transform: uppercase; font-size: calc(var(--fs-h) * .98); border-bottom: 1px solid #d1d5db; padding-bottom: 3px; }
.tpl-geometrisch .sec-mark { display: block; width: .6em; height: .6em; background: var(--accent); margin-right: .5em; flex: none; }

/* ---------- Modern Minimalist ---------- */
.tpl-minimal .name { text-transform: uppercase; letter-spacing: .12em; font-size: calc(var(--fs-h) * 2); }
.tpl-minimal .job { text-transform: uppercase; letter-spacing: .12em; color: var(--accent-ink); font-size: .95em; margin-top: 4px; }
.tpl-minimal .contact .sep, .tpl-minimal .pers .sep { color: var(--accent); }
.tpl-minimal .sec-title { color: #111827; letter-spacing: .14em; font-size: calc(var(--fs-h) * .95); }
.tpl-minimal .sec-mark { display: block; width: .45em; height: .45em; background: var(--accent); margin-right: .6em; flex: none; }
.tpl-minimal .ent-date { color: #6b7280; font-size: .92em; }

/* ---------- Zweispaltig ---------- */
.tpl-zweispaltig .hdr { border-bottom: 3px solid var(--accent); padding-bottom: 10px; }
.tpl-zweispaltig .name { color: var(--accent-ink); }
.tpl-zweispaltig .col-main .sec-title { font-size: calc(var(--fs-h) * 1.08); border-bottom: 1px solid var(--accent-mid); padding-bottom: 2px; }

/* ---------- Anschreiben (alle Vorlagen) ---------- */
.b-lt-addr { padding-top: calc(var(--gap) * .6); line-height: 1.4; }
.b-lt-addr.pg-top, .b-lt-addr.lt-first { padding-top: calc(var(--gap) * .2); }
.b-lt-addr .ph { color: #9ca3af; }
.b-lt-date { padding-top: calc(var(--gap) * .9); text-align: right; }
.b-lt-subj { padding-top: calc(var(--gap) * 1.1); }
.lt-subject { font-weight: 700; color: #111827; font-size: 1.05em; }
.lt-ref { color: #4b5563; font-size: .92em; }
.b-lt-sal { padding-top: calc(var(--gap) * 1.05); }
.b-lt-p.is-p { padding-top: calc(var(--lh) * 0.62em); }
.b-lt-p.is-li { padding-top: calc(var(--egap) * .25); }
.b-lt-close { padding-top: calc(var(--lh) * 0.9em); }
.b-lt-close .sig-img { margin: 6px 0 2px; }
.b-lt-close .sig-space { height: 34px; }
.b-lt-encl { padding-top: calc(var(--gap) * 1.1); font-size: .94em; color: #374151; }
.lt-encl-h { font-weight: 700; color: #111827; }
.align-justify .b-lt-p p, .align-justify .b-lt-p .li-t { text-align: justify; }
.tpl-seitenleiste .col-main .b-lt-addr.lt-first { padding-top: calc(var(--gap) * 1.2); }
.tpl-seitenleiste .b-name + .b-lt-addr { padding-top: calc(var(--gap) * 1.4); }

/* Messbereich */
.cv-measure { position: fixed; left: -12000px; top: 0; visibility: hidden; pointer-events: none; }
