/* ============================================================
   CraftCV resume documents — THE print stylesheet.
   Consumed by: editor preview, share page, gallery previews,
   and the PDF export (server inlines this file verbatim).
   Contract: font weights 400/600/700 only (static TTFs
   embedded at print time); colors via palette tokens; A4 pages.
   ============================================================ */

/* ---------- page plumbing ---------- */
.cv-doc, .cv-doc *, .cv-doc *::before, .cv-doc *::after { box-sizing: border-box; }
.cv-doc { width: 794px; }
.cv-page {
  width: 794px;
  min-height: 1123px;
  background: #ffffff;
  position: relative;
  overflow: hidden;
  page-break-after: always;
  break-after: page;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
  text-rendering: optimizeLegibility;
  display: flex;
  flex-direction: column;
}
.cv-page:last-child { page-break-after: auto; break-after: auto; }

.cv-doc {
  --ink: #20242b;
  --muted: #697180;
  --pad-y: 46px;
  --pad-x: 52px;
  --sec-gap: 20px;
  --ent-gap: 13px;
  font-family: var(--font-body);
  /* font-scale multiplier — editor control */
  --base-fs: 11.5px;
}

.cv-doc[data-density="compact"] { --pad-y: 36px; --pad-x: 44px; --sec-gap: 14px; --ent-gap: 9px; --base-fs: 11px; }
.cv-doc[data-density="relaxed"] { --pad-y: 54px; --pad-x: 62px; --sec-gap: 26px; --ent-gap: 17px; --base-fs: 12px; }

.cv-page {
  color: var(--ink);
  font-size: calc(var(--base-fs) * var(--f-scale, 1));
  line-height: 1.5;
}

/* ---------- palettes ---------- */
.cv-doc[data-palette="iris"]     { --accent: #4c43d8; --accent-2: #8a86f0; --tint: #f2f1fd; --divider: #dfddf2; --on-accent: #ffffff; }
.cv-doc[data-palette="ink"]      { --accent: #1d1f26; --accent-2: #5a5e6b; --tint: #f3f3f5; --divider: #e2e3e7; --on-accent: #ffffff; }
.cv-doc[data-palette="navy"]     { --accent: #1e3a5f; --accent-2: #4a6fa5; --tint: #edf2f8; --divider: #d7e0eb; --on-accent: #ffffff; }
.cv-doc[data-palette="ocean"]    { --accent: #0e7490; --accent-2: #38b6d3; --tint: #e9f7fa; --divider: #cfe9f0; --on-accent: #ffffff; }
.cv-doc[data-palette="forest"]   { --accent: #1a3c34; --accent-2: #3d6b5e; --tint: #eef4f2; --divider: #d5e3de; --on-accent: #ffffff; }
.cv-doc[data-palette="burgundy"] { --accent: #811f3f; --accent-2: #b04a6a; --tint: #fbeef2; --divider: #ecd3db; --on-accent: #ffffff; }
.cv-doc[data-palette="plum"]     { --accent: #6d21b6; --accent-2: #9b5cf0; --tint: #f6f1fc; --divider: #e5dcf4; --on-accent: #ffffff; }
.cv-doc[data-palette="coco"]     { --accent: #5c3d2e; --accent-2: #96705c; --tint: #f6f1ec; --divider: #e5d9cd; --on-accent: #ffffff; }
.cv-doc[data-palette="crimson"]  { --accent: #b3152e; --accent-2: #d95570; --tint: #fcedef; --divider: #f3d3d9; --on-accent: #ffffff; }
.cv-doc[data-palette="slate"]    { --accent: #3f4c5e; --accent-2: #7c8aa0; --tint: #f1f4f8; --divider: #dde3ea; --on-accent: #ffffff; }

/* custom accent via inline --accent: derive companions */
.cv-doc[style*="--accent:"] {
  --accent-2: color-mix(in srgb, var(--accent) 55%, #ffffff);
  --tint: color-mix(in srgb, var(--accent) 7%, #ffffff);
  --divider: color-mix(in srgb, var(--accent) 20%, #ffffff);
  --on-accent: #ffffff;
}

/* ---------- font pairings ---------- */
.cv-doc[data-font="modern"]    { --font-head: 'Inter','Helvetica Neue',sans-serif; --font-body: 'Inter','Helvetica Neue',sans-serif; }
.cv-doc[data-font="classic"]   { --font-head: 'Merriweather',Georgia,serif; --font-body: 'Open Sans','Helvetica Neue',sans-serif; }
.cv-doc[data-font="editorial"] { --font-head: 'Playfair Display',Georgia,serif; --font-body: 'Source Serif 4',Georgia,serif; }
.cv-doc[data-font="humanist"]  { --font-head: 'Lato','Helvetica Neue',sans-serif; --font-body: 'Lato','Helvetica Neue',sans-serif; }
.cv-doc[data-font="display"]   { --font-head: 'Montserrat','Helvetica Neue',sans-serif; --font-body: 'Lato','Helvetica Neue',sans-serif; }
.cv-doc[data-font="book"]      { --font-head: 'Source Serif 4',Georgia,serif; --font-body: 'Source Serif 4',Georgia,serif; }
.cv-doc[data-font="clean"]     { --font-head: 'Open Sans','Helvetica Neue',sans-serif; --font-body: 'Open Sans','Helvetica Neue',sans-serif; }
.cv-doc[data-font="system"]    { --font-head: 'Helvetica Neue',Arial,sans-serif; --font-body: 'Helvetica Neue',Arial,sans-serif; }

/* ============================================================
   Base components (design defaults; d-* classes override)
   ============================================================ */
.cv-doc h1, .cv-doc h2, .cv-doc p, .cv-doc ul { margin: 0; }
.cv-doc ul { padding: 0; list-style: none; }

.cv-hd { position: relative; }
.cv-name {
  font-family: var(--font-head);
  font-weight: 700;
  color: var(--accent);
  font-size: 2.15em;
  line-height: 1.12;
  letter-spacing: -0.01em;
}
.cv-role {
  font-family: var(--font-head);
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  font-weight: 600;
  font-size: 0.92em;
  margin-top: 4px;
}
.cv-contact { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 10px; }
.cv-ci {
  display: inline-flex; align-items: center; gap: 5px;
  color: var(--muted); font-size: 0.82em; white-space: nowrap;
}
.cv-ci svg { color: var(--accent-2); flex: none; }

.cv-photo {
  width: 84px; height: 84px; border-radius: 50%;
  background-size: cover; background-position: center top;
  border: 3px solid var(--accent);
  flex: none;
}

.cv-main { padding: var(--pad-y) var(--pad-x); flex: 1; }
.cv-page > .cv-hd { margin: var(--pad-y) var(--pad-x) 0; }
.cv-page > .cv-hd + .cv-main { padding-top: calc(var(--pad-y) * .55); }

.cv-sec { margin-bottom: var(--sec-gap); }
.cv-sec:last-child { margin-bottom: 0; }
.cv-sec-head h2 {
  font-family: var(--font-head);
  font-size: 1em;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--accent);
  margin-bottom: 8px;
}
.cv-sec-head .cont-tag {
  font-size: 0.75em; font-weight: 400; letter-spacing: 0.06em;
  color: var(--muted); text-transform: none; margin-left: 8px;
}
.cv-sec.cont .cv-sec-head h2 { color: var(--muted); }

.cv-entry { margin-bottom: var(--ent-gap); break-inside: avoid; }
.cv-entry:last-child { margin-bottom: 0; }
.cv-entry-head {
  display: flex; justify-content: space-between; align-items: baseline; gap: 14px;
}
.cv-rt { font-weight: 700; color: var(--ink); font-size: 1.02em; }
.cv-pub-n { color: var(--muted); margin-right: 6px; font-weight: 600; }
.cv-dates {
  font-size: 0.82em; color: var(--muted); font-style: normal;
  white-space: nowrap; flex: none; font-variant-numeric: tabular-nums;
}
.cv-entry-sub {
  display: flex; justify-content: space-between; align-items: baseline; gap: 14px;
  color: var(--accent-2); font-size: 0.92em; font-weight: 600; margin-top: 1px;
}
.cv-entry-sub .cv-loc { color: var(--muted); font-weight: 400; flex: none; }
.cv-text { color: var(--ink); margin-top: 3px; }

.cv-bullets { margin: 4px 0 0; }
.cv-bullets li {
  position: relative; padding-left: 14px; margin-bottom: 2.5px;
  color: var(--ink);
}
.cv-bullets li:last-child { margin-bottom: 0; }
.cv-bullets li::before {
  content: ""; position: absolute; left: 0; top: 0.5em;
  width: 4.5px; height: 4.5px; background: var(--accent-2); border-radius: 1px;
}

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

/* skills variants */
.cv-skillpills { display: flex; flex-wrap: wrap; gap: 5px; }
.cv-skillpills .sp {
  padding: 3px 10px; border-radius: 999px; font-size: 0.84em; font-weight: 600;
  background: var(--tint); color: var(--accent); border: 1px solid var(--divider);
}
.cv-skillbars { display: grid; gap: 7px; }
.cv-skillbars .sb-row { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 10px; }
.cv-skillbars .sb-name { font-size: 0.9em; font-weight: 600; color: var(--ink); }
.cv-skillbars .sb-bar { width: 74px; height: 4px; border-radius: 2px; background: var(--divider); position: relative; overflow: hidden; }
.cv-skillbars .sb-fill { position: absolute; inset: 0 auto 0 0; background: var(--accent); border-radius: 2px; }
.cv-skillblocks { display: flex; flex-wrap: wrap; gap: 5px; }
.cv-skillblocks .sb-block {
  padding: 3px 10px; border-radius: 6px; font-size: 0.84em; font-weight: 600;
  background: var(--accent); color: var(--on-accent);
}
.cv-skillinline { color: var(--ink); }
.cv-skillinline .si { }
.cv-skillinline .si-sep { color: var(--accent-2); margin: 0 7px; font-weight: 700; }

.cv-langrows { display: grid; gap: 6px; }
.cv-langrows .lg-row { display: flex; justify-content: space-between; align-items: baseline; }
.cv-langrows .lg-name { font-weight: 600; font-size: 0.92em; }
.cv-langrows .lg-lvl { color: var(--muted); font-size: 0.82em; }

.cv-refs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 20px; }
.cv-refs .rf { display: grid; gap: 1px; }
.cv-refs .rf-name { font-weight: 700; }
.cv-refs .rf-sub, .cv-refs .rf-contact { color: var(--muted); font-size: 0.86em; }

/* ============================================================
   Layouts
   ============================================================ */

/* single / band / timeline share the single-column flow */
.lay-single .cv-main, .lay-timeline .cv-main, .lay-band .cv-main { flex: 1; }

/* band: header becomes a full-width band on page 1 */
.lay-band .cv-page > .cv-hd {
  margin: 0;
  padding: calc(var(--pad-y) * .8) var(--pad-x) calc(var(--pad-y) * .62);
  background: var(--accent);
  color: var(--on-accent);
}
.lay-band .cv-hd .cv-name { color: var(--on-accent); }
.lay-band .cv-hd .cv-role { color: color-mix(in srgb, var(--on-accent) 78%, transparent); }
.lay-band .cv-hd .cv-ci { color: color-mix(in srgb, var(--on-accent) 85%, transparent); }
.lay-band .cv-hd .cv-ci svg { color: color-mix(in srgb, var(--on-accent) 62%, transparent); }

/* sidebar */
.lay-sidebar .cv-page { flex-direction: row; }
.lay-sidebar .cv-side {
  width: 268px; flex: none;
  background: var(--tint);
  padding: var(--pad-y) 26px;
}
.lay-sidebar.side-r .cv-side { order: 2; }
.lay-sidebar .cv-main { padding: var(--pad-y) 34px; }
.lay-sidebar .cv-hd { margin-bottom: 20px; }
.lay-sidebar .cv-hd .cv-name { font-size: 1.5em; }
.lay-sidebar .cv-hd .cv-contact { flex-direction: column; gap: 7px; margin-top: 14px; }
.lay-sidebar .cv-hd .cv-ci { white-space: normal; word-break: break-word; }
.lay-sidebar .cv-photo { margin-bottom: 14px; }
.lay-sidebar .cv-sec-head h2 { font-size: 0.92em; }

/* twocol */
.lay-twocol .cv-page > .cv-hd { margin: 0; padding: var(--pad-y) var(--pad-x) calc(var(--pad-y) * .5); border-bottom: 1px solid var(--divider); }
.lay-twocol .cv-cols { display: grid; grid-template-columns: 1fr 1fr; flex: 1; }
.lay-twocol .cv-col { padding: var(--pad-y) 0; }
.lay-twocol .cv-col-a { padding-left: var(--pad-x); padding-right: 22px; border-right: 1px solid var(--divider); }
.lay-twocol .cv-col-b { padding-right: var(--pad-x); padding-left: 22px; }

/* timeline rail (signal) */
.lay-timeline .cv-sec { position: relative; padding-left: 22px; }
.lay-timeline .cv-sec::before {
  content: ""; position: absolute; left: 4px; top: 8px; bottom: 4px;
  width: 2px; background: color-mix(in srgb, var(--accent) 28%, var(--divider));
}
.lay-timeline .cv-sec-head { position: relative; }
.lay-timeline .cv-sec-head::before {
  content: ""; position: absolute; left: -22px; top: 3px;
  width: 8px; height: 8px; background: var(--accent);
  border-radius: 50%;
}
.lay-timeline .cv-entry { position: relative; }
.lay-timeline .cv-entry::before {
  content: ""; position: absolute; left: -21px; top: 5px;
  width: 5px; height: 5px; background: #fff; border: 2px solid var(--accent-2);
  border-radius: 50%;
}

/* ============================================================
   DESIGNS
   ============================================================ */

/* ---------- MERIDIAN — universal classic ---------- */
.d-meridian .cv-main { }
.d-meridian .cv-hd { padding-bottom: 14px; border-bottom: 2px solid var(--accent); }
.d-meridian .cv-hd .cv-contact { margin-top: 8px; }
.d-meridian .cv-sec-head h2 { letter-spacing: 0.16em; }
.d-meridian .cv-entry-head { border-bottom: none; }

/* ---------- CAPITAL — dense corporate ---------- */
.d-capital { --sec-gap: 15px; }
.d-capital .cv-hd { padding-bottom: 12px; border-bottom: 3px double var(--accent); }
.d-capital .cv-name { font-size: 1.95em; letter-spacing: 0.02em; }
.d-capital .cv-sec-head h2 {
  letter-spacing: 0.2em; font-size: 0.94em;
  padding-bottom: 4px; border-bottom: 1px solid var(--divider);
  display: flex; justify-content: space-between; align-items: baseline;
}
.d-capital .cv-sec-head h2::after { content: ""; flex: 1; margin-left: 12px; border-top: 1px solid var(--divider); position: relative; top: -3px; }
.d-capital .cv-dates { font-style: italic; }

/* ---------- FOLIO — academic ---------- */
.d-folio .cv-hd { text-align: center; padding-bottom: 18px; border-bottom: 1px solid var(--divider); }
.d-folio .cv-hd .cv-contact { justify-content: center; }
.d-folio .cv-name { font-size: 2.1em; font-weight: 600; }
.d-folio .cv-sec-head h2 { font-weight: 600; letter-spacing: 0.1em; border-bottom: 1px solid var(--divider); padding-bottom: 5px; }
.d-folio .cv-entry-head { flex-direction: column; gap: 0; }
.d-folio .cv-entry-head { align-items: flex-start; }
.d-folio .cv-entry-head .cv-dates { order: 2; }
.d-folio .cv-sec--publications .cv-entry { padding-left: 4px; }
.d-folio .cv-venue { font-style: italic; }

/* ---------- AURUM — executive band ---------- */
.d-aurum { --sec-gap: 22px; }
.d-aurum .cv-page > .cv-hd { padding-bottom: calc(var(--pad-y) * .7); }
.d-aurum .cv-page > .cv-hd::after {
  content: ""; position: absolute; left: var(--pad-x); right: var(--pad-x); bottom: 10px;
  height: 2px; background: linear-gradient(90deg, var(--accent-2), transparent);
}
.d-aurum .cv-hd .cv-name { font-family: var(--font-head); font-weight: 600; letter-spacing: 0.04em; }
.d-aurum .cv-sec-head h2 { letter-spacing: 0.22em; font-size: 0.95em; }
.d-aurum .cv-sec-head h2::before { content: "§ "; color: var(--accent-2); }
.d-aurum .cv-rt { letter-spacing: 0.01em; }

/* ---------- SLAB — brutal bold ---------- */
.d-slab { --sec-gap: 18px; }
.d-slab .cv-page > .cv-hd {
  background: var(--ink); color: #fff; padding-bottom: calc(var(--pad-y) * .8);
  border-bottom: 8px solid var(--accent);
}
.d-slab .cv-hd .cv-name {
  color: #fff; text-transform: uppercase; font-weight: 700;
  font-size: 3em; letter-spacing: -0.02em; line-height: 1.02;
  font-family: var(--font-head);
}
.d-slab .cv-hd .cv-role {
  color: var(--accent-2); font-size: 1em; letter-spacing: 0.18em;
}
.d-slab .cv-hd .cv-ci { color: rgba(255,255,255,.75); }
.d-slab .cv-hd .cv-ci svg { color: rgba(255,255,255,.45); }
.d-slab .cv-sec-head h2 {
  font-size: 1.05em; text-transform: uppercase; letter-spacing: 0.08em;
  background: var(--ink); color: #fff; display: inline-block; padding: 3px 12px;
}
.d-slab .cv-bullets li::before { border-radius: 0; width: 6px; height: 6px; top: 0.42em; }
.d-slab .cv-skillblocks .sb-block { border-radius: 0; }

/* ---------- SIGNAL — startup timeline ---------- */
.d-signal .cv-hd { padding-bottom: 16px; }
.d-signal .cv-name { font-size: 2.2em; font-weight: 700; letter-spacing: -0.02em; }
.d-signal .cv-role {
  display: inline-block; text-transform: none; letter-spacing: 0.02em;
  background: var(--tint); color: var(--accent); padding: 4px 14px; border-radius: 999px;
  font-weight: 700; font-size: 0.9em;
}
.d-signal .cv-sec-head h2 { font-size: 1em; letter-spacing: 0.1em; font-weight: 700; }
.d-signal .cv-skillpills .sp { background: #fff; border-color: var(--divider); }
.d-signal .cv-dates { font-style: normal; font-weight: 600; color: var(--accent-2); }

/* ---------- MODE — swiss minimal ---------- */
.d-mode { --sec-gap: 30px; }
.d-mode .cv-name { font-weight: 400; font-size: 2.6em; letter-spacing: -0.02em; color: var(--ink); }
.d-mode .cv-role { color: var(--muted); text-transform: none; letter-spacing: 0.02em; font-size: 1em; }
.d-mode .cv-hd { padding-bottom: 24px; border-bottom: 1px solid var(--ink); }
.d-mode .cv-hd .cv-contact { margin-top: 14px; }
.d-mode .cv-hd .cv-ci svg { display: none; }
.d-mode .cv-sec-head h2 { color: var(--ink); font-weight: 700; letter-spacing: 0.24em; font-size: 0.86em; }
.d-mode .cv-rt { font-weight: 600; }
.d-mode .cv-bullets li::before { border-radius: 50%; width: 4px; height: 4px; }

/* ---------- LINEA — soft sidebar ---------- */
.d-linea .cv-side { background: var(--tint); }
.d-linea .cv-side .cv-sec-head h2 { color: var(--accent); }
.d-linea .cv-main .cv-sec-head h2 {
  padding-bottom: 6px; border-bottom: 1px solid var(--divider);
}
.d-linea .cv-hd .cv-name { color: var(--accent); font-size: 1.55em; }
.d-linea .cv-skillbars .sb-bar { background: #fff; }
.d-linea .cv-sec--summary .cv-sec-head h2 { }

/* ---------- BLOCKS — solid sidebar cards ---------- */
.d-blocks .cv-side { background: var(--accent); color: var(--on-accent); }
.d-blocks .cv-side .cv-hd .cv-name { color: var(--on-accent); }
.d-blocks .cv-side .cv-role { color: color-mix(in srgb, var(--on-accent) 80%, transparent); }
.d-blocks .cv-side .cv-ci { color: color-mix(in srgb, var(--on-accent) 85%, transparent); }
.d-blocks .cv-side .cv-ci svg { color: color-mix(in srgb, var(--on-accent) 60%, transparent); }
.d-blocks .cv-side .cv-photo { border-color: var(--on-accent); }
.d-blocks .cv-side .cv-sec {
  background: color-mix(in srgb, var(--on-accent) 10%, transparent);
  border-radius: 10px; padding: 12px 13px;
}
.d-blocks .cv-side .cv-sec-head h2 { color: var(--on-accent); font-size: 0.85em; margin-bottom: 7px; }
.d-blocks .cv-skillblocks .sb-block { background: var(--on-accent); color: var(--accent); }
.d-blocks .cv-skillbars .sb-bar { background: color-mix(in srgb, var(--on-accent) 25%, transparent); }
.d-blocks .cv-skillbars .sb-fill { background: var(--on-accent); }
.d-blocks .cv-langrows .lg-lvl { color: color-mix(in srgb, var(--on-accent) 75%, transparent); }
.d-blocks .cv-langrows .lg-name { color: var(--on-accent); }
/* sidebar foreground: dark cards need light text */
.d-blocks .cv-side .cv-rt { color: var(--on-accent); }
.d-blocks .cv-side .cv-entry-sub { color: color-mix(in srgb, var(--on-accent) 80%, transparent); }
.d-blocks .cv-side .cv-dates { color: color-mix(in srgb, var(--on-accent) 62%, transparent); }
.d-blocks .cv-side .cv-entry-sub .cv-loc { color: color-mix(in srgb, var(--on-accent) 62%, transparent); }
.d-blocks .cv-side .cv-bullets li { color: var(--on-accent); }
.d-blocks .cv-side .cv-bullets li::before { background: var(--on-accent); }
.d-blocks .cv-side .rf-name { color: var(--on-accent); }
.d-blocks .cv-side .rf-sub, .d-blocks .cv-side .rf-contact { color: color-mix(in srgb, var(--on-accent) 72%, transparent); }
.d-blocks .cv-side .cv-text { color: var(--on-accent); }
.d-blocks .cv-main .cv-sec-head h2 {
  font-size: 0.95em; letter-spacing: 0.14em;
  padding-bottom: 5px; border-bottom: 2px solid var(--accent);
  display: inline-block;
}
.d-blocks .cv-main .cv-sec-head { border-bottom: 1px solid var(--divider); margin-bottom: 9px; }

/* ---------- COLUMN — strict 50/50 ---------- */
.d-column .cv-page > .cv-hd { background: var(--tint); border-bottom: 1px solid var(--divider); }
.d-column .cv-name { font-size: 1.9em; }
.d-column .cv-sec-head h2 { font-size: 0.92em; letter-spacing: 0.12em; padding-bottom: 4px; border-bottom: 1px solid var(--divider); }
.d-column .cv-skillbars .sb-bar { width: 56px; }

/* ---------- PRISM — gradient creative ---------- */
.d-prism .cv-page > .cv-hd {
  background: linear-gradient(115deg, var(--accent) 0%, var(--accent-2) 100%);
  padding-bottom: calc(var(--pad-y) * .75);
}
.d-prism .cv-hd { display: flex; gap: 20px; align-items: center; }
.d-prism .cv-hd .cv-photo { width: 92px; height: 92px; border-color: rgba(255,255,255,.85); box-shadow: 0 4px 18px rgba(0,0,0,.2); }
.d-prism .cv-sec-head h2 {
  display: inline-block; background: var(--tint); color: var(--accent);
  padding: 4px 14px; border-radius: 999px; letter-spacing: 0.1em; font-size: 0.86em;
}
.d-prism .cv-skillpills .sp { border-radius: 999px; }

/* ---------- CANVAS — photo-forward editorial ---------- */
.d-canvas .cv-page > .cv-hd {
  padding-bottom: calc(var(--pad-y) * .75);
  border-bottom: 4px solid var(--accent);
}
.d-canvas .cv-hd { display: flex; flex-direction: row-reverse; justify-content: space-between; gap: 26px; align-items: flex-start; }
.d-canvas .cv-hd-txt { order: 1; }
.d-canvas .cv-hd .cv-photo { width: 128px; height: 128px; border-radius: 14px; border: none; box-shadow: 0 8px 30px rgba(0,0,0,.16); }
.d-canvas .cv-name { font-size: 2.7em; font-weight: 600; letter-spacing: -0.01em; }
.d-canvas .cv-role { text-transform: none; letter-spacing: 0.06em; font-size: 1em; color: var(--accent-2); }
.d-canvas .cv-sec-head h2 { letter-spacing: 0.18em; font-weight: 600; }
.d-canvas .cv-sec-head h2::after { content: ""; display: block; width: 40px; height: 2px; background: var(--accent); margin-top: 6px; }

/* ---------- MONTE — magazine serif ---------- */
.d-monte { --sec-gap: 26px; }
.d-monte .cv-hd { text-align: center; padding-bottom: 22px; border-bottom: 3px double var(--divider); }
.d-monte .cv-hd .cv-contact { justify-content: center; }
.d-monte .cv-name { font-size: 2.6em; font-weight: 600; letter-spacing: 0.02em; }
.d-monte .cv-role { letter-spacing: 0.26em; font-size: 0.86em; }
.d-monte .cv-sec-head h2 { text-align: center; letter-spacing: 0.3em; font-weight: 600; color: var(--accent-2); font-size: 0.88em; }
.d-monte .cv-sec-head h2::before, .d-monte .cv-sec-head h2::after {
  content: "—"; color: var(--divider); margin: 0 12px;
}
.d-monte .cv-sec--summary .cv-summary::first-letter {
  font-family: var(--font-head); font-weight: 700; color: var(--accent);
  font-size: 3.1em; float: left; line-height: 0.86; padding: 2px 8px 0 0;
}
.d-monte .cv-rt { font-weight: 600; }
.d-monte .cv-entry-sub { font-style: italic; }

/* ---------- PLAIN — zero decoration ---------- */
.d-plain .cv-main { }
.d-plain .cv-hd { padding-bottom: 10px; margin-bottom: 2px; }
.d-plain .cv-name { font-size: 1.7em; font-weight: 700; color: var(--ink); }
.d-plain .cv-role { text-transform: none; letter-spacing: 0; font-size: 0.92em; }
.d-plain .cv-sec-head h2 {
  color: var(--ink); font-size: 0.95em; letter-spacing: 0.08em;
  border-bottom: 1px solid var(--ink); padding-bottom: 3px;
}
.d-plain .cv-bullets li::before { background: var(--muted); border-radius: 50%; width: 4px; height: 4px; }
.d-plain .cv-ci svg { display: none; }
.d-plain .cv-ci + .cv-ci::before { content: "·"; margin-right: 10px; color: var(--muted); }

/* ---------- SLATE — centered classic ---------- */
.d-slate .cv-hd { text-align: center; padding-bottom: 16px; border-bottom: 1px solid var(--divider); }
.d-slate .cv-hd .cv-contact { justify-content: center; }
.d-slate .cv-name { font-size: 2.35em; font-weight: 600; letter-spacing: 0.04em; }
.d-slate .cv-sec-head h2 {
  text-align: center; letter-spacing: 0.22em; font-size: 0.9em;
  color: var(--accent); font-weight: 600;
}
.d-slate .cv-sec-head h2::after { content: ""; display: block; width: 34px; height: 1px; background: var(--divider); margin: 8px auto 0; }
.d-slate .cv-entry-head { justify-content: space-between; }
.d-slate .cv-entry-sub { font-style: italic; color: var(--muted); }

/* ---------- QUILL — compact one-pager ---------- */
.d-quill { --ent-gap: 8px; }
.d-quill .cv-hd { padding-bottom: 10px; border-bottom: 2px solid var(--accent); }
.d-quill .cv-name { font-size: 1.8em; }
.d-quill .cv-contact { margin-top: 6px; }
.d-quill .cv-sec-head h2 { font-size: 0.88em; letter-spacing: 0.14em; margin-bottom: 6px; }
.d-quill .cv-entry { margin-bottom: var(--ent-gap); }
.d-quill .cv-bullets li { margin-bottom: 1.5px; }

/* ============================================================
   Print
   ============================================================ */
@media print {
  .cv-page { box-shadow: none !important; margin: 0 !important; }
}
