/* ===== Shared CV document ===== */
.cv {
  --cv-accent: #1e2a63;
  --cv-ink: #1f2430;
  --cv-muted: #6b7280;
  --cv-line: #e3e6ef;
  font-family: "Inter", system-ui, sans-serif;
  color: var(--cv-ink);
  font-size: calc(13px * var(--cv-fs, 1));
  line-height: 1.5;
  padding: 0 0 24mm;
}

/* Free-plan watermark overlay. Rendered only in read-only preview / PDF.
   An absolutely-positioned layer that spans the whole (multi-page) document; a
   tiled SVG repeats the wordmark diagonally across every printed page. */
.cv--watermark { position: relative; }
.cv-wm {
  position: absolute; inset: 0; z-index: 20; pointer-events: none;
  background-repeat: repeat;
  background-position: 0 0;
  background-size: 320px 220px;
  opacity: 0.5;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='320' height='220'><text x='160' y='120' font-family='DM Sans, Arial, sans-serif' font-size='30' font-weight='700' fill='%23007fff' fill-opacity='0.12' text-anchor='middle' transform='rotate(-30 160 110)'>CVSlate</text></svg>");
}

/* Header band. A column so the optional logo row sits above the name/photo. */
.cv-head {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  padding: 22px 26px;
  background: color-mix(in srgb, var(--cv-accent) 8%, #fff);
  border-bottom: 3px solid var(--cv-accent);
}
.cv-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
}
.cv-head-main { min-width: 0; }

/* ---- Free positioning of header elements (name / job title / photo / logo) ----
   The wrapper carries a CSS translate offset so the element can be nudged
   anywhere without reflowing the rest of the header. In the editor a small drag
   grip appears on hover; it never renders in the read-only preview / PDF. */
.cv-movable { position: relative; display: block; }
.cv-move-grip {
  position: absolute; top: -3px; left: -22px; z-index: 6;
  width: 18px; height: 18px; line-height: 17px; text-align: center;
  font-size: 12px; color: #64748b; background: #fff;
  border: 1px solid #cbd5e1; border-radius: 4px; cursor: move;
  opacity: 0; transition: opacity .12s ease; box-shadow: 0 1px 2px rgba(0,0,0,.12);
  user-select: none; -webkit-user-select: none; touch-action: none;
}
.cv-movable:hover > .cv-move-grip,
.cv-photo:hover > .cv-move-grip,
.cv-logo:hover > .cv-move-grip { opacity: 1; }
.cv-move-grip:hover { color: #0f172a; border-color: #94a3b8; }
/* Photo / logo grips sit just inside the top-left corner of the box. */
.cv-photo > .cv-move-grip,
.cv-logo > .cv-move-grip { left: 2px; top: 2px; }

/* Optional letterhead logo on its own full-width row above the name. The row's
   justify-content sets left / centre / right; the image height is set inline. */
.cv-logo { display: flex; width: 100%; margin-bottom: 12px; }
.cv-logo--left { justify-content: flex-start; }
.cv-logo--center { justify-content: center; }
.cv-logo--right { justify-content: flex-end; }
.cv-logo-inner { position: relative; display: inline-flex; align-items: center; max-width: 100%; }
.cv-logo img { display: block; height: 30px; width: auto; max-width: 360px; object-fit: contain; }
.cv-logo-file { display: none; }
/* Placeholder affordance shown only in the editor when no logo is set */
.cv-logo-hint {
  display: inline-flex; align-items: center;
  border: 1px dashed var(--cv-accent); color: var(--cv-accent);
  border-radius: 8px; padding: 6px 12px;
  font-family: "DM Sans", sans-serif; font-size: calc(12px * var(--cv-fs, 1)); font-weight: 600;
  cursor: pointer; opacity: .85;
}
.cv-logo[data-logo] { cursor: pointer; }
.cv-logo-x {
  position: absolute; top: -8px; right: -8px;
  width: 20px; height: 20px; line-height: 1;
  border: none; border-radius: 50%;
  background: #fef2f2; color: #b91c1c;
  font-size: calc(15px * var(--cv-fs, 1)); cursor: pointer;
  opacity: 0; transition: opacity .12s;
}
.cv-logo:hover .cv-logo-x { opacity: 1; }
.cv-logo-x:hover { background: #fee2e2; }
.cv-logo-align {
  position: absolute; top: -8px; left: -8px;
  height: 20px; padding: 0 7px; line-height: 18px;
  border: none; border-radius: 999px;
  background: rgba(10, 14, 23, 0.78); color: #fff;
  font-size: calc(12px * var(--cv-fs, 1)); cursor: pointer;
  opacity: 0; transition: opacity .12s;
}
.cv-logo:hover .cv-logo-align { opacity: 1; }
.cv-logo-resize {
  position: absolute; right: -6px; bottom: -6px;
  width: 15px; height: 15px; border-radius: 50%;
  background: var(--cv-accent); border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.3);
  cursor: nwse-resize; opacity: 0; transition: opacity .12s;
  touch-action: none;
}
.cv-logo:hover .cv-logo-resize { opacity: 1; }

.cv-name {
  display: block;
  font-family: "Poppins", sans-serif;
  font-weight: 800;
  font-size: calc(30px * var(--cv-fs, 1));
  line-height: 1.1;
  color: var(--cv-accent);
}
.cv-headline {
  display: block;
  font-weight: 600;
  font-size: calc(13px * var(--cv-fs, 1));
  color: var(--cv-accent);
  opacity: .85;
  margin-top: 4px;
}
.cv-photo {
  position: relative;
  flex: 0 0 auto;
  width: 96px; height: 96px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--cv-accent);
  display: flex; align-items: center; justify-content: center;
}
/* Clip layer: masks the picture to the frame so zoom/pan stay inside it.
   Sits inside the 2px border (inset:0 = padding box) and inherits the frame's
   rounded shape. Controls (resize handle, buttons) live outside this layer so
   they aren't clipped. */
.cv-photo-clip {
  position: absolute; inset: 0; overflow: hidden;
  border-radius: inherit; display: block; z-index: 0;
}
.cv-photo img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transform-origin: center center;
}
.cv-photo.has-img .cv-photo-clip { cursor: move; touch-action: none; }
.cv-photo-hint { font-size: calc(11px * var(--cv-fs, 1)); color: var(--cv-muted); text-align: center; padding: 0 6px; position: relative; z-index: 1; }

/* Photo shape: circle (default) or portrait rectangle */
.cv-photo--rect { border-radius: 10px; }
.cv-photo--circle { border-radius: 50%; }

.cv-photo-shape {
  position: absolute; left: 50%; top: 4px; transform: translateX(-50%);
  background: rgba(10, 14, 23, 0.78); color: #fff; border: none;
  font-family: "DM Sans", sans-serif; font-size: calc(12px * var(--cv-fs, 1)); line-height: 1;
  padding: 3px 9px; border-radius: 999px; cursor: pointer;
  opacity: 0; transition: opacity .12s; z-index: 3;
}
.cv-photo:hover .cv-photo-shape { opacity: 1; }

/* Zoom slider — appears on hover along the bottom edge of the frame. Zoom
   sizes the picture within the frame; dragging the picture repositions it. */
.cv-photo-zoom {
  position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%);
  width: 74%; height: 4px; margin: 0; padding: 0;
  -webkit-appearance: none; appearance: none;
  background: rgba(255, 255, 255, 0.55); border-radius: 999px; cursor: pointer;
  opacity: 0; transition: opacity .12s; z-index: 3;
}
.cv-photo.has-img:hover .cv-photo-zoom { opacity: 1; }
.cv-photo-zoom::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--cv-accent); border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.4); cursor: pointer;
}
.cv-photo-zoom::-moz-range-thumb {
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--cv-accent); border: 2px solid #fff; cursor: pointer;
}

/* Editing controls (present only in the editor) */
.cv-photo[data-photo] { cursor: pointer; }
.cv-photo-file { display: none; }
.cv-photo-edit {
  position: absolute; left: 50%; bottom: 4px; transform: translateX(-50%);
  background: rgba(10, 14, 23, 0.78); color: #fff; border: none;
  font-family: "DM Sans", sans-serif; font-size: calc(10px * var(--cv-fs, 1)); font-weight: 600;
  padding: 2px 9px; border-radius: 999px; cursor: pointer;
  opacity: .82; transition: opacity .12s; white-space: nowrap; z-index: 3;
}
.cv-photo:hover .cv-photo-edit { opacity: 1; }
.cv-photo-resize {
  position: absolute; right: -5px; bottom: -5px;
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--cv-accent); border: 2px solid #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.3);
  cursor: nwse-resize; opacity: 0; transition: opacity .12s;
  touch-action: none; z-index: 3;
}
.cv-photo:hover .cv-photo-resize { opacity: 1; }

/* Section rows: label column + body column */
.cv-row {
  position: relative;
  display: grid;
  grid-template-columns: 150px 1fr;
  gap: 20px;
  padding: 16px 26px;
  border-bottom: 1px solid var(--cv-line);
}
.cv-row:last-child { border-bottom: none; }
.cv-label {
  font-family: "Poppins", sans-serif;
  font-weight: 700;
  font-size: calc(12px * var(--cv-fs, 1));
  letter-spacing: .06em;
  color: var(--cv-accent);
  text-transform: uppercase;
}
.cv-body { min-width: 0; }
.cv-summary { display: block; }
.cv-section-body { display: block; white-space: pre-wrap; }

/* ---- Rich text content (inline b/i/u + block lists/align) ----
   Applies inside any field the editor marks rich. Block fields hold
   paragraphs/lists; inline fields only ever hold b/strong/i/em/u/br. */
.cv [data-rich="block"] { display: block; white-space: normal; }
.cv [data-rich] b, .cv [data-rich] strong { font-weight: 700; }
.cv [data-rich] i, .cv [data-rich] em { font-style: italic; }
.cv [data-rich] u { text-decoration: underline; }
.cv [data-rich="block"] p,
.cv [data-rich="block"] div { margin: 0 0 4px; }
.cv [data-rich="block"] p:last-child,
.cv [data-rich="block"] div:last-child { margin-bottom: 0; }
.cv [data-rich="block"] ul,
.cv [data-rich="block"] ol { margin: 4px 0; padding-left: 20px; }
.cv [data-rich="block"] ul { list-style: disc; }
.cv [data-rich="block"] ol { list-style: decimal; }
.cv [data-rich="block"] li { margin-bottom: 2px; }
.cv [data-rich="block"] li::marker { color: var(--cv-accent); }

/* Per-section move / remove controls, tucked into the right gutter */
.cv-sec-tools {
  position: absolute;
  top: 12px;
  right: 3px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  opacity: 0;
  transition: opacity .12s;
}
.cv-row:hover .cv-sec-tools { opacity: 1; }
.cv-move {
  width: 20px; height: 20px; padding: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--cv-line); border-radius: 6px;
  background: #fff; color: var(--cv-accent);
  font-size: calc(10px * var(--cv-fs, 1)); line-height: 1; cursor: pointer;
}
.cv-move:hover { background: color-mix(in srgb, var(--cv-accent) 12%, #fff); }
.cv-move:disabled { opacity: .35; cursor: default; }
.cv-move-x { color: #b91c1c; border-color: #fecaca; font-size: calc(14px * var(--cv-fs, 1)); }
.cv-move-x:hover { background: #fee2e2; }

/* "Add section" button row at the foot of the document */
.cv-add-section { padding: 14px 26px; }

/* Key-value rows (contact, skills, experience meta) */
.kv { display: flex; gap: 6px; align-items: baseline; position: relative; margin-bottom: 5px; }
/* flex-shrink:0 keeps a nowrap label from being squeezed narrower than its
   text when the value is long — otherwise the label overflows and overlaps
   the value (seen with long skill labels + multi-line values). */
.kv-k { font-weight: 700; color: var(--cv-ink); white-space: nowrap; flex-shrink: 0; }
.kv-k::after { content: ":"; }
.kv-v { color: var(--cv-ink); }
.kv--sm { font-size: calc(12.5px * var(--cv-fs, 1)); }
.skills .kv-k { min-width: 130px; }

/* Stacked section: label sits above, items carry their own left gutter */
.cv-row--stack { display: block; }
.cv-row--stack > .cv-label { margin-bottom: 12px; }

/* Experience / Education: left aside (location + dates) + main content */
.exp, .edu {
  position: relative;
  display: grid;
  grid-template-columns: 130px 1fr;
  gap: 20px;
}
.exp { padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px dashed var(--cv-line); }
.exp:last-of-type { border-bottom: none; }
.edu { margin-bottom: 12px; }
.exp-aside { min-width: 0; }
.exp-loc { display: block; font-weight: 700; color: var(--cv-accent); font-size: calc(12.5px * var(--cv-fs, 1)); }
.exp-dates { display: block; font-size: calc(12px * var(--cv-fs, 1)); color: var(--cv-accent); opacity: .8; font-style: italic; margin-top: 2px; }
.exp-main { min-width: 0; }
.exp-role { display: block; font-weight: 700; font-size: calc(14px * var(--cv-fs, 1)); color: var(--cv-accent); }
.exp-org { display: block; font-weight: 600; margin: 1px 0 6px; }
.edu-degree { display: block; }
.edu-school { display: block; }
.exp-meta { margin-bottom: 6px; }
.exp-bullets { margin: 0; padding-left: 18px; }
.exp-bullets li { margin-bottom: 3px; position: relative; }
.exp-bullets li::marker { color: var(--cv-accent); }
/* A line with its dot toggled off reads as a plain paragraph. */
.exp-bullets li.no-bullet { list-style: none; margin-left: -18px; }

/* Education */
.edu-degree { display: block; font-weight: 700; color: var(--cv-accent); }
.edu-school { display: block; font-weight: 600; }

/* ===== Editing affordances (only meaningful when contenteditable present) ===== */
[contenteditable] { border-radius: 4px; transition: box-shadow .12s, background .12s; outline: none; }
.paper [contenteditable]:hover { box-shadow: 0 0 0 2px rgba(47,63,143,.18); }
.paper [contenteditable]:focus { box-shadow: 0 0 0 2px var(--cv-accent); background: #fff; }
[contenteditable]:empty::before {
  content: attr(data-placeholder);
  color: #9aa1b2;
}

.cv-add {
  display: inline-flex; align-items: center;
  background: #fff; border: 1px dashed var(--cv-accent);
  color: var(--cv-accent); border-radius: 999px;
  padding: 3px 12px; font-size: calc(12px * var(--cv-fs, 1)); font-weight: 600;
  cursor: pointer; margin-top: 6px;
}
.cv-add:hover { background: color-mix(in srgb, var(--cv-accent) 8%, #fff); }
.cv-add-row { list-style: none; margin-left: -18px; }

.cv-x {
  position: absolute; top: 0; right: -6px;
  width: 20px; height: 20px; line-height: 1;
  border: none; border-radius: 50%;
  background: #fef2f2; color: #b91c1c;
  font-size: calc(15px * var(--cv-fs, 1)); cursor: pointer;
  opacity: 0; transition: opacity .12s;
}
.exp > .cv-x, .edu > .cv-x { top: 2px; right: 2px; }
.kv:hover > .cv-x,
.exp-bullets li:hover > .cv-x,
.exp:hover > .cv-x,
.edu:hover > .cv-x { opacity: 1; }
.cv-x:hover { background: #fee2e2; }

/* Reorder a bullet: up / down controls that appear beside the × on hover. */
.bul-move {
  position: absolute; top: 0;
  width: 16px; height: 18px; line-height: 16px;
  padding: 0; text-align: center;
  border: none; border-radius: 4px;
  background: #eef2ff; color: var(--cv-accent);
  font-size: calc(8px * var(--cv-fs, 1)); cursor: pointer;
  opacity: 0; transition: opacity .12s;
}
.bul-move[data-bullet-down] { right: 16px; }
.bul-move[data-bullet-up] { right: 34px; }
.bul-move[data-bullet-toggle] { right: 52px; }
.bul-move[data-bullet-insert] { right: 70px; }
.exp-bullets li:hover > .bul-move { opacity: 1; }
.bul-move:hover { background: color-mix(in srgb, var(--cv-accent) 15%, #fff); }
/* Active (dot-off) state for the toggle so its status is visible. */
.exp-bullets li.no-bullet > .bul-move[data-bullet-toggle] {
  background: var(--cv-accent); color: #fff;
}

/* ===== Theme: Sky Blue ===== */
.cv--sky { --cv-accent: #007fff; font-family: "Open Sans", system-ui, sans-serif; }
.cv--sky .cv-name,
.cv--sky .cv-headline,
.cv--sky .cv-label,
.cv--sky .exp-role,
.cv--sky .edu-degree { font-family: "DM Sans", sans-serif; }
.cv--sky .cv-head { background: #007fff; border-bottom: none; }
.cv--sky .cv-name { color: #fff; letter-spacing: -0.01em; }
.cv--sky .cv-headline { color: #dbeeff; opacity: 1; }
.cv--sky .cv-photo { border-color: #fff; }
.cv--sky .cv-label { letter-spacing: .08em; }

/* ===== Theme: Slate Modern ===== */
.cv--slate { --cv-accent: #0f766e; }
.cv--slate .cv-head { background: #0f766e; border-bottom: none; }
.cv--slate .cv-name { color: #fff; }
.cv--slate .cv-headline { color: #d1fae5; opacity: 1; }
.cv--slate .cv-photo { border-color: #fff; }
.cv--slate .cv-label { letter-spacing: .08em; }

/* ===== Theme: Mono Classic ===== */
.cv--mono { --cv-accent: #111827; font-family: Georgia, "Times New Roman", serif; }
.cv--mono .cv-name { font-family: Georgia, serif; letter-spacing: -.5px; }
.cv--mono .cv-head { background: #fff; border-bottom: 2px solid #111827; }
.cv--mono .cv-headline { opacity: 1; color: var(--cv-muted); font-family: "Inter", sans-serif; }
.cv--mono .cv-label { font-family: Georgia, serif; }

/* ===== Theme: Minimal Ink ===== */
/* Clean black-on-white, no colour bands — ATS-friendly. */
.cv--ink { --cv-accent: #1a1a1a; --cv-line: #d9d9d9; font-family: "Inter", system-ui, sans-serif; }
.cv--ink .cv-head { background: #fff; border-bottom: 1.5px solid #1a1a1a; }
.cv--ink .cv-name { color: #1a1a1a; font-family: "Inter", sans-serif; font-weight: 800; letter-spacing: -.01em; }
.cv--ink .cv-headline {
  color: #4b5563; opacity: 1; font-weight: 500;
  text-transform: uppercase; letter-spacing: .12em; font-size: calc(11px * var(--cv-fs, 1)); margin-top: 6px;
}
.cv--ink .cv-photo { border-color: #1a1a1a; }
.cv--ink .cv-label { color: #1a1a1a; letter-spacing: .1em; font-family: "Inter", sans-serif; }
.cv--ink .exp-role,
.cv--ink .edu-degree { color: #1a1a1a; }
.cv--ink .exp-loc { color: #1a1a1a; }
.cv--ink .exp-dates { color: #6b7280; }
.cv--ink .exp-bullets li::marker,
.cv--ink [data-rich="block"] li::marker { color: #1a1a1a; }

/* ===== Theme: Executive Serif ===== */
/* Serif, centred name, burgundy accent and thin rules for a formal look. */
.cv--executive { --cv-accent: #7a1f2b; font-family: Georgia, "Times New Roman", serif; }
.cv--executive .cv-name,
.cv--executive .cv-label,
.cv--executive .exp-role,
.cv--executive .edu-degree { font-family: Georgia, "Times New Roman", serif; }
.cv--executive .cv-head { background: #fff; border-bottom: 2px solid var(--cv-accent); }
.cv--executive .cv-head-row { justify-content: center; }
.cv--executive .cv-head-main { text-align: center; }
.cv--executive .cv-name { color: var(--cv-accent); font-weight: 700; letter-spacing: .02em; font-size: calc(32px * var(--cv-fs, 1)); }
.cv--executive .cv-headline {
  color: var(--cv-muted); opacity: 1;
  text-transform: uppercase; letter-spacing: .18em;
  font-family: "Inter", sans-serif; font-size: calc(11px * var(--cv-fs, 1)); margin-top: 8px;
}
.cv--executive .cv-label { letter-spacing: .1em; font-weight: 700; }

/* ===== Theme: Timeline ===== */
/* Experience entries render as a vertical timeline: dates on the left, a
   coloured spine with a node dot beside each role. */
.cv--timeline { --cv-accent: #4f46e5; font-family: "Inter", system-ui, sans-serif; }
.cv--timeline .cv-head { background: color-mix(in srgb, #4f46e5 8%, #fff); border-bottom: 3px solid #4f46e5; }
.cv--timeline .cv-name { color: #4f46e5; }
.cv--timeline .cv-headline { color: #4f46e5; opacity: .85; }
.cv--timeline .cv-photo { border-color: #4f46e5; }
.cv--timeline .exp { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.cv--timeline .exp-main {
  position: relative;
  border-left: 2px solid color-mix(in srgb, #4f46e5 35%, #fff);
  padding-left: 20px;
  padding-bottom: 18px;
}
.cv--timeline .exp:last-of-type .exp-main { border-left-color: transparent; }
.cv--timeline .exp-main::before {
  content: "";
  position: absolute; left: -6px; top: 4px;
  width: 10px; height: 10px; border-radius: 50%;
  background: #4f46e5; border: 2px solid #fff;
  box-shadow: 0 0 0 1px #4f46e5;
}

/* ===== Two-column sidebar layout ===== */
/* Structural layout shared by all sidebar templates. A full-width header sits
   above a grid of a coloured aside (contact / skills / education) beside the
   main column (summary / experience / custom sections). Colours come from the
   --cv-sidebar-* variables each theme sets. */
.cv-layout--sidebar {
  --cv-sidebar-bg: #1e2a63;
  --cv-sidebar-ink: #eef1fb;
  --cv-sidebar-accent: #ffffff;
}
.cv-layout--sidebar .cv-columns {
  display: grid;
  grid-template-columns: var(--cv-aside-w, 34%) 1fr;
  align-items: stretch;
}
.cv-layout--sidebar .cv-aside {
  background: var(--cv-sidebar-bg);
  color: var(--cv-sidebar-ink);
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.cv-layout--sidebar .cv-main { min-width: 0; }
/* Full-page sidebar colour fill: only rendered in print (see @media print). */
.cv-side-fill { display: none; }

/* Sections stack (label above body) in both columns since they are narrow. */
.cv-layout--sidebar .cv-row { display: block; padding: 16px 22px; }
.cv-layout--sidebar .cv-row > .cv-label { margin-bottom: 8px; }
.cv-layout--sidebar .cv-aside .cv-row { border-bottom-color: rgba(255, 255, 255, 0.16); }

/* Aside text + labels use the sidebar palette. */
.cv-layout--sidebar .cv-aside .cv-label { color: var(--cv-sidebar-accent); }
.cv-layout--sidebar .cv-aside .kv-k,
.cv-layout--sidebar .cv-aside .kv-v,
.cv-layout--sidebar .cv-aside .edu-degree,
.cv-layout--sidebar .cv-aside .edu-school,
.cv-layout--sidebar .cv-aside .exp-loc,
.cv-layout--sidebar .cv-aside .exp-dates { color: var(--cv-sidebar-ink); }
/* Stack key/value pairs vertically to fit the narrow column. */
.cv-layout--sidebar .cv-aside .kv { flex-direction: column; align-items: flex-start; gap: 0; margin-bottom: 9px; }
.cv-layout--sidebar .cv-aside .kv-k { white-space: normal; }
.cv-layout--sidebar .cv-aside .skills .kv-k { min-width: 0; }
.cv-layout--sidebar .cv-aside .edu { display: block; margin-bottom: 10px; }
.cv-layout--sidebar .cv-aside .exp-bullets li::marker,
.cv-layout--sidebar .cv-aside [data-rich] li::marker { color: var(--cv-sidebar-accent); }

/* ===== Theme: Aspen Double (teal sidebar) ===== */
.cv--aspen { --cv-accent: #0f766e; --cv-sidebar-bg: #0f766e; --cv-sidebar-ink: #e6fffb; --cv-sidebar-accent: #ffffff; }
.cv--aspen .cv-head { background: #fff; border-bottom: 3px solid #0f766e; }
.cv--aspen .cv-name { color: #0f766e; }
.cv--aspen .cv-headline { color: #0f766e; opacity: .8; }
.cv--aspen .cv-photo { border-color: #0f766e; }

/* ===== Theme: Coral Creative (coral sidebar) ===== */
.cv--coral { --cv-accent: #e2574c; --cv-sidebar-bg: #e2574c; --cv-sidebar-ink: #fff1ef; --cv-sidebar-accent: #ffffff; }
.cv--coral .cv-head { background: #fff; border-bottom: 3px solid #e2574c; }
.cv--coral .cv-name { color: #e2574c; }
.cv--coral .cv-headline { color: #e2574c; opacity: .85; }
.cv--coral .cv-photo { border-color: #e2574c; }

/* ===== Theme: Orchid Elegant (purple sidebar, serif) ===== */
.cv--orchid { --cv-accent: #6d28d9; --cv-sidebar-bg: #4c1d95; --cv-sidebar-ink: #ede9fe; --cv-sidebar-accent: #ffffff; font-family: Georgia, "Times New Roman", serif; }
.cv--orchid .cv-name,
.cv--orchid .cv-label,
.cv--orchid .exp-role,
.cv--orchid .edu-degree { font-family: Georgia, "Times New Roman", serif; }
.cv--orchid .cv-head { background: #fff; border-bottom: 2px solid #6d28d9; }
.cv--orchid .cv-name { color: #4c1d95; }
.cv--orchid .cv-headline { color: #6d28d9; opacity: .85; }
.cv--orchid .cv-photo { border-color: #6d28d9; }

/* ===== Theme: Ivy League (centred serif, traditional) ===== */
.cv--ivy { --cv-accent: #1a1a1a; --cv-line: #d9d9d9; font-family: Georgia, "Times New Roman", serif; }
.cv--ivy .cv-name,
.cv--ivy .cv-label,
.cv--ivy .exp-role,
.cv--ivy .edu-degree { font-family: Georgia, "Times New Roman", serif; }
.cv--ivy .cv-head { background: #fff; border-bottom: 2px solid #1a1a1a; }
.cv--ivy .cv-head-row { justify-content: center; }
.cv--ivy .cv-head-main { text-align: center; }
.cv--ivy .cv-name { color: #1a1a1a; font-weight: 700; letter-spacing: .02em; }
.cv--ivy .cv-headline {
  color: #444; opacity: 1; text-transform: uppercase;
  letter-spacing: .16em; font-size: calc(11px * var(--cv-fs, 1)); font-family: "Inter", sans-serif; margin-top: 6px;
}
.cv--ivy .cv-label { color: #1a1a1a; letter-spacing: .1em; }
.cv--ivy .exp-role,
.cv--ivy .edu-degree { color: #1a1a1a; }
.cv--ivy .exp-loc,
.cv--ivy .exp-dates { color: #555; }
.cv--ivy .exp-bullets li::marker,
.cv--ivy [data-rich="block"] li::marker { color: #1a1a1a; }

/* ===== Theme: Classic (conservative serif, no colour) ===== */
.cv--classic { --cv-accent: #333333; --cv-line: #dcdcdc; font-family: Georgia, "Times New Roman", serif; }
.cv--classic .cv-name,
.cv--classic .cv-label,
.cv--classic .exp-role,
.cv--classic .edu-degree { font-family: Georgia, "Times New Roman", serif; }
.cv--classic .cv-head { background: #fff; border-bottom: 1.5px solid #333; }
.cv--classic .cv-name { color: #222; font-weight: 700; }
.cv--classic .cv-headline { color: #555; opacity: 1; }
.cv--classic .cv-label { color: #333; }
.cv--classic .exp-role,
.cv--classic .edu-degree { color: #222; }
.cv--classic .exp-loc,
.cv--classic .exp-dates { color: #555; }
.cv--classic .exp-bullets li::marker,
.cv--classic [data-rich="block"] li::marker { color: #333; }

/* ===== Theme: Single Column (full-width labels above body) ===== */
.cv--single { --cv-accent: #2563eb; font-family: "Inter", system-ui, sans-serif; }
.cv--single .cv-row { display: block; border-bottom: none; }
.cv--single .cv-row > .cv-label {
  margin-bottom: 8px; padding-bottom: 4px;
  border-bottom: 2px solid color-mix(in srgb, #2563eb 30%, #fff);
}
.cv--single .cv-head { background: #fff; border-bottom: 3px solid #2563eb; }
.cv--single .cv-name { color: #2563eb; }
.cv--single .cv-headline { color: #2563eb; opacity: .85; }
.cv--single .cv-photo { border-color: #2563eb; }

/* ===== Theme: Compact (tight, small type) ===== */
.cv--compact { --cv-accent: #0f172a; font-family: "Inter", system-ui, sans-serif; font-size: calc(12px * var(--cv-fs, 1)); line-height: 1.4; }
.cv--compact .cv-head { padding: 16px 26px; background: #fff; border-bottom: 2px solid #0f172a; }
.cv--compact .cv-name { font-size: calc(24px * var(--cv-fs, 1)); color: #0f172a; }
.cv--compact .cv-headline { color: #475569; opacity: 1; font-size: calc(12px * var(--cv-fs, 1)); }
.cv--compact .cv-row { padding: 10px 26px; grid-template-columns: 120px 1fr; gap: 14px; }
.cv--compact .cv-label { color: #0f172a; font-size: calc(11px * var(--cv-fs, 1)); }
.cv--compact .exp { padding-bottom: 8px; margin-bottom: 8px; }
.cv--compact .exp-role { font-size: calc(13px * var(--cv-fs, 1)); color: #0f172a; }
.cv--compact .edu-degree { color: #0f172a; }
.cv--compact .exp-loc,
.cv--compact .exp-dates { color: #475569; }
.cv--compact .exp-bullets li::marker,
.cv--compact [data-rich="block"] li::marker { color: #0f172a; }

/* ===== Theme: Polished (navy + gold) ===== */
.cv--polished { --cv-accent: #c8a24a; font-family: "Inter", system-ui, sans-serif; }
.cv--polished .cv-name,
.cv--polished .cv-label,
.cv--polished .exp-role,
.cv--polished .edu-degree { font-family: "DM Sans", sans-serif; }
.cv--polished .cv-head { background: #0b1f3a; border-bottom: 3px solid #c8a24a; }
.cv--polished .cv-name { color: #fff; }
.cv--polished .cv-headline { color: #c8a24a; opacity: 1; }
.cv--polished .cv-photo { border-color: #c8a24a; }
.cv--polished .cv-label { color: #0b1f3a; }
.cv--polished .exp-role,
.cv--polished .edu-degree { color: #0b1f3a; }
.cv--polished .exp-loc,
.cv--polished .exp-dates { color: #8a6d1f; }
.cv--polished .exp-bullets li::marker,
.cv--polished [data-rich="block"] li::marker { color: #c8a24a; }

/* ===== Theme: Sage Warm (cream paper, forest-green headings, warm serif) ===== */
/* Inspired by warm classic technical CVs: a cream page, forest-green name and
   section titles with a thin green rule under each label, and warm-brown body
   ink. Serif throughout for a calm, print-friendly feel. */
.cv--sage {
  --cv-accent: #3a6b4a;
  --cv-ink: #4a3f33;
  --cv-muted: #7a6a55;
  --cv-line: #d8ccb4;
  font-family: "Lora", Georgia, "Times New Roman", serif;
  background: #f7f2e7;
}
.cv--sage .cv-name,
.cv--sage .cv-label,
.cv--sage .exp-role,
.cv--sage .edu-degree { font-family: "Lora", Georgia, serif; }
.cv--sage .cv-head { background: #f7f2e7; border-bottom: 2px solid var(--cv-accent); }
.cv--sage .cv-name { color: var(--cv-accent); font-weight: 700; letter-spacing: .01em; }
.cv--sage .cv-headline { color: #6b7f5a; opacity: 1; font-weight: 500; }
.cv--sage .cv-photo { border-color: var(--cv-accent); }
.cv--sage .cv-body,
.cv--sage .cv-summary,
.cv--sage .kv-k,
.cv--sage .kv-v,
.cv--sage .exp-org,
.cv--sage .edu-school,
.cv--sage .exp-bullets li,
.cv--sage .cv-section-body { color: var(--cv-ink); }
/* Section titles: forest green. (No underline — it only spanned the narrow label
   column, reading as a stray part-width grey line.) */
.cv--sage .cv-label {
  color: var(--cv-accent); font-weight: 700; letter-spacing: .06em;
}
.cv--sage .exp-role,
.cv--sage .edu-degree { color: var(--cv-accent); font-weight: 700; }
.cv--sage .exp-loc,
.cv--sage .exp-dates { color: #97835f; }
.cv--sage .exp-bullets li::marker,
.cv--sage [data-rich="block"] li::marker { color: var(--cv-accent); }

/* ===== Theme: Beacon (navy name, azure accent, bold ruled headings) ===== */
.cv--beacon { --cv-accent: #2f6bff; --cv-line: #e6e9f2; font-family: "Inter", system-ui, sans-serif; }
.cv--beacon .cv-name {
  color: #12233f; font-family: "Poppins", sans-serif; font-weight: 800;
  text-transform: uppercase; letter-spacing: -.005em;
}
.cv--beacon .cv-headline { color: #2f6bff; opacity: 1; font-weight: 700; }
.cv--beacon .cv-head { background: #fff; border-bottom: none; padding-bottom: 10px; }
.cv--beacon .cv-photo { border-color: #12233f; }
.cv--beacon .cv-row { display: block; border-bottom: none; }
.cv--beacon .cv-row > .cv-label {
  margin-bottom: 10px; padding-bottom: 5px; border-bottom: 2px solid #12233f;
  color: #12233f; font-size: calc(15px * var(--cv-fs, 1)); letter-spacing: .02em;
}
.cv--beacon .exp-role, .cv--beacon .edu-degree { color: #12233f; }
.cv--beacon .exp-org, .cv--beacon .edu-school { color: #2f6bff; font-weight: 700; }
.cv--beacon .exp-loc { color: #6b7280; font-weight: 600; }
.cv--beacon .exp-dates { color: #6b7280; font-style: normal; }
.cv--beacon .exp-bullets li::marker,
.cv--beacon [data-rich="block"] li::marker { color: #2f6bff; }

/* ===== Theme: Aria (teal, thin gray uppercase hairline headings) ===== */
.cv--aria { --cv-accent: #12a3a3; --cv-ink: #3a4048; --cv-line: #d9dde2; font-family: "Inter", system-ui, sans-serif; }
.cv--aria .cv-name {
  color: #2b3038; font-family: "Poppins", sans-serif; font-weight: 700; text-transform: uppercase; letter-spacing: .01em;
}
.cv--aria .cv-headline { color: #12a3a3; opacity: 1; font-weight: 600; }
.cv--aria .cv-head { background: #fff; border-bottom: none; padding-bottom: 8px; }
.cv--aria .cv-photo { border-color: #12a3a3; }
.cv--aria .cv-row { display: block; border-bottom: none; }
.cv--aria .cv-row > .cv-label {
  margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid #cfd4da;
  color: #8a9099; font-weight: 600; letter-spacing: .14em; font-family: "Inter", sans-serif;
}
.cv--aria .exp-role { color: #2b3038; }
.cv--aria .exp-org, .cv--aria .edu-school { color: #12a3a3; font-weight: 600; }
.cv--aria .edu-degree { color: #2b3038; }
.cv--aria .exp-loc { color: #6b7280; font-weight: 600; }
.cv--aria .exp-dates { color: #9aa0a8; font-style: normal; }
.cv--aria .exp-bullets li::marker,
.cv--aria [data-rich="block"] li::marker { color: #12a3a3; }

/* ===== Theme: Cobalt (royal blue, bold ruled headings, dashed dividers) ===== */
.cv--cobalt { --cv-accent: #2f5bea; --cv-ink: #20242c; --cv-line: #dfe3ea; font-family: "Inter", system-ui, sans-serif; }
.cv--cobalt .cv-name { color: #12161d; font-family: "Poppins", sans-serif; font-weight: 800; }
.cv--cobalt .cv-headline { color: #2f5bea; opacity: 1; font-weight: 700; }
.cv--cobalt .cv-head { background: #fff; border-bottom: none; padding-bottom: 6px; }
.cv--cobalt .cv-photo { border-color: #2f5bea; }
.cv--cobalt .cv-row { display: block; border-bottom: none; }
.cv--cobalt .cv-row > .cv-label {
  margin-bottom: 10px; padding-bottom: 5px; border-bottom: 2.5px solid #12161d;
  color: #12161d; font-size: calc(15px * var(--cv-fs, 1)); letter-spacing: .02em;
}
.cv--cobalt .exp-role, .cv--cobalt .edu-degree { color: #12161d; }
.cv--cobalt .exp-org, .cv--cobalt .edu-school { color: #2f5bea; font-weight: 700; }
.cv--cobalt .exp-loc { color: #6b7280; font-weight: 600; }
.cv--cobalt .exp-dates { color: #8a8f9c; font-style: normal; }
.cv--cobalt .exp { border-bottom: 1px dashed #cfd4de; }
.cv--cobalt .exp-bullets li::marker,
.cv--cobalt [data-rich="block"] li::marker { color: #2f5bea; }

/* ===== Theme: Tide (blue, decorative wave-tinted corners) ===== */
.cv--tide {
  --cv-accent: #2563c9; --cv-line: #e2e8f5; font-family: "Inter", system-ui, sans-serif;
  background-color: #fff;
  background-image:
    radial-gradient(120% 60% at 108% -18%, rgba(37,99,201,.14), transparent 42%),
    radial-gradient(120% 55% at -12% 118%, rgba(37,99,201,.12), transparent 40%);
  background-repeat: no-repeat;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.cv--tide .cv-name { color: #1f4fa3; font-family: "Poppins", sans-serif; font-weight: 700; }
.cv--tide .cv-headline { color: #4a86e8; opacity: 1; font-weight: 600; }
.cv--tide .cv-head { background: transparent; border-bottom: none; padding-bottom: 6px; }
.cv--tide .cv-photo { border-color: #2563c9; }
.cv--tide .cv-label { color: #8a9099; font-weight: 600; letter-spacing: .12em; font-family: "Inter", sans-serif; }
.cv--tide .exp-role, .cv--tide .edu-degree { color: #1f4fa3; }
.cv--tide .exp-org { color: #2b3038; font-weight: 700; }
.cv--tide .edu-school { color: #4a86e8; }
.cv--tide .exp-loc { color: #6b7280; }
.cv--tide .exp-dates { color: #9aa0a8; font-style: normal; }
.cv--tide .exp { border-bottom: none; }
.cv--tide .exp-bullets li::marker,
.cv--tide [data-rich="block"] li::marker { color: #2563c9; }

/* ===== Theme: Lagoon (deep teal, teal-ruled headings) ===== */
.cv--lagoon { --cv-accent: #0e8f9a; --cv-ink: #333a40; --cv-line: #d5dbde; font-family: "Inter", system-ui, sans-serif; }
.cv--lagoon .cv-name { color: #26303a; font-family: "Poppins", sans-serif; font-weight: 700; text-transform: uppercase; }
.cv--lagoon .cv-headline { color: #0e8f9a; opacity: 1; font-weight: 600; }
.cv--lagoon .cv-head { background: #fff; border-bottom: none; padding-bottom: 8px; }
.cv--lagoon .cv-photo { border-color: #0e8f9a; }
.cv--lagoon .cv-row { display: block; border-bottom: none; }
.cv--lagoon .cv-row > .cv-label {
  margin-bottom: 10px; padding-bottom: 6px;
  border-bottom: 2px solid color-mix(in srgb, #0e8f9a 45%, #fff);
  color: #0e8f9a; letter-spacing: .1em;
}
.cv--lagoon .exp-role, .cv--lagoon .edu-degree { color: #26303a; }
.cv--lagoon .exp-org, .cv--lagoon .edu-school { color: #0e8f9a; font-weight: 600; }
.cv--lagoon .exp-loc { color: #6b7280; font-weight: 600; }
.cv--lagoon .exp-dates { color: #9aa0a8; font-style: normal; }
.cv--lagoon .exp-bullets li::marker,
.cv--lagoon [data-rich="block"] li::marker { color: #0e8f9a; }

/* ===== Theme: Slate Pro (clean, right-aligned meta, blue org) ===== */
.cv--slatepro { --cv-accent: #2b7fff; --cv-ink: #2a2f37; --cv-line: #e5e8ee; font-family: "Inter", system-ui, sans-serif; }
.cv--slatepro .cv-name { color: #12161d; font-family: "Poppins", sans-serif; font-weight: 800; }
.cv--slatepro .cv-headline { color: #5a6572; opacity: 1; font-weight: 500; }
.cv--slatepro .cv-head { background: #fff; border-bottom: none; padding-bottom: 4px; }
.cv--slatepro .cv-photo { border-color: #2b7fff; }
.cv--slatepro .cv-label { color: #7a828d; letter-spacing: .08em; }
.cv--slatepro .exp, .cv--slatepro .edu {
  grid-template-columns: 1fr 130px; border-bottom: none; padding-bottom: 14px; margin-bottom: 2px;
}
.cv--slatepro .exp-aside { order: 2; text-align: right; }
.cv--slatepro .exp-main { order: 1; }
.cv--slatepro .exp-role, .cv--slatepro .edu-degree { color: #12161d; }
.cv--slatepro .exp-org, .cv--slatepro .edu-school { color: #2b7fff; font-weight: 600; }
.cv--slatepro .exp-loc { color: #8a8f9c; font-weight: 600; }
.cv--slatepro .exp-dates { color: #8a8f9c; font-style: normal; }
.cv--slatepro .exp-bullets li::marker,
.cv--slatepro [data-rich="block"] li::marker { color: #2b7fff; }

/* ===== Theme: Verdant (light-green sidebar) ===== */
.cv--verdant {
  --cv-accent: #2f7d5b; --cv-sidebar-bg: #eaf3ee; --cv-sidebar-ink: #2c3a33; --cv-sidebar-accent: #2f7d5b;
  font-family: "Inter", system-ui, sans-serif;
}
.cv--verdant .cv-head { background: #fff; border-bottom: 2px solid #cfe3d8; }
.cv--verdant .cv-name { color: #264f3c; text-transform: uppercase; }
.cv--verdant .cv-headline { color: #2f7d5b; opacity: 1; font-weight: 600; }
.cv--verdant .cv-photo { border-color: #7cc4a0; }
.cv--verdant .cv-label { color: #2f7d5b; }
.cv--verdant .exp-role, .cv--verdant .edu-degree { color: #264f3c; }
.cv--verdant .exp-org, .cv--verdant .edu-school { color: #2f7d5b; }
.cv--verdant .exp-bullets li::marker,
.cv--verdant [data-rich="block"] li::marker { color: #2f7d5b; }

/* ===== Theme: Monaco Mono (black & white, ruled headers) ===== */
/* Clean monochrome sidebar: white columns split by a vertical rule, centred
   uppercase name, and section labels sitting under a full-width top rule. */
.cv--monaco {
  --cv-accent: #111111; --cv-ink: #1f2430; --cv-line: #111111;
  --cv-sidebar-bg: #ffffff; --cv-sidebar-ink: #1f2430; --cv-sidebar-accent: #111111;
  font-family: "Inter", system-ui, sans-serif;
}
/* Centred header with heavy caps name + a rule below the whole header. */
.cv--monaco .cv-head { background: #fff; border-bottom: 2.5px solid #111; }
.cv--monaco .cv-head-row { justify-content: center; }
.cv--monaco .cv-head-main { text-align: center; }
.cv--monaco .cv-name {
  color: #111; text-transform: uppercase; font-weight: 800;
  letter-spacing: .12em; font-size: calc(38px * var(--cv-fs, 1));
}
.cv--monaco .cv-headline {
  color: #333; opacity: 1; text-transform: uppercase; letter-spacing: .22em;
  font-weight: 500; font-size: calc(13px * var(--cv-fs, 1)); margin-top: 6px;
}
.cv--monaco .cv-photo { border-color: #111; }

/* Vertical divider between the two columns. */
.cv--monaco .cv-aside { border-right: 1.5px solid #111; }

/* Section labels: uppercase, tracked, under a full-width rule in each column. */
.cv--monaco .cv-label {
  color: #111; text-transform: uppercase; font-weight: 800; letter-spacing: .14em;
  border-top: 2px solid #111; padding-top: 9px; margin-bottom: 12px;
}
.cv--monaco .cv-aside .cv-label { color: #111; }

/* Experience / education: bold black org, grey role + dates. */
.cv--monaco .exp-org, .cv--monaco .edu-school { color: #111; font-weight: 700; }
.cv--monaco .exp-role, .cv--monaco .edu-degree { color: #111; font-weight: 700; }
.cv--monaco .exp-loc, .cv--monaco .exp-dates { color: #555; font-style: normal; }
.cv--monaco .exp-bullets li::marker, .cv--monaco [data-rich="block"] li::marker { color: #111; }
.cv--monaco .cv-aside .exp-bullets li::marker,
.cv--monaco .cv-aside [data-rich] li::marker { color: #111; }

/* ===== Theme: Indigo Script (royal-blue minimalist, script name) ===== */
/* Deep-blue monochrome on white: a flowing script name, uppercase tracked
   section headers, serif body, thin blue rules between sections. */
.cv--indigo {
  --cv-accent: #263a9c; --cv-ink: #2b3157; --cv-line: #d3d9f1;
  font-family: "Lora", Georgia, serif;
}
.cv--indigo .cv-head { background: #fff; border-bottom: 1px solid #d3d9f1; }
.cv--indigo .cv-name {
  font-family: "Great Vibes", cursive; color: var(--cv-accent);
  font-weight: 400; line-height: 1.05; letter-spacing: .01em;
  font-size: calc(56px * var(--cv-fs, 1));
}
.cv--indigo .cv-headline {
  color: var(--cv-accent); opacity: 1; text-transform: uppercase; letter-spacing: .34em;
  font-family: "Inter", sans-serif; font-weight: 500;
  font-size: calc(13px * var(--cv-fs, 1)); margin-top: 6px;
}
.cv--indigo .cv-photo { border-color: var(--cv-accent); }
.cv--indigo .cv-label {
  color: var(--cv-accent); text-transform: uppercase; letter-spacing: .22em;
  font-family: "Inter", sans-serif; font-weight: 600; font-size: calc(13px * var(--cv-fs, 1));
}
.cv--indigo .cv-summary,
.cv--indigo .kv-v,
.cv--indigo [data-rich] { color: var(--cv-ink); }
.cv--indigo .exp-role, .cv--indigo .edu-degree { color: var(--cv-accent); font-weight: 700; }
.cv--indigo .exp-org, .cv--indigo .edu-school {
  color: var(--cv-accent); font-style: italic; font-weight: 600; opacity: .9;
}
.cv--indigo .exp-loc, .cv--indigo .exp-dates {
  color: var(--cv-accent); font-weight: 700; font-style: normal; font-family: "Inter", sans-serif;
}
.cv--indigo .exp-bullets li::marker,
.cv--indigo [data-rich="block"] li::marker { color: var(--cv-accent); }

/* ===== Theme: Ember Corporate (orange accent, single column) ===== */
/* Clean corporate look: bold black caps name, warm-orange section headers
   and dates, thin rules. Based on the "Mechanical Engineer" resume. */
.cv--ember {
  --cv-accent: #e5522b; --cv-ink: #2a2d33; --cv-line: #e3e5ea;
  font-family: "Inter", system-ui, sans-serif;
}
.cv--ember .cv-head { background: #fff; border-bottom: 2.5px solid #e5522b; }
.cv--ember .cv-name {
  color: #20242b; text-transform: uppercase; font-weight: 800; letter-spacing: .02em;
}
.cv--ember .cv-headline { color: #20242b; opacity: 1; font-weight: 700; }
.cv--ember .cv-photo { border-color: #e5522b; }
.cv--ember .cv-label {
  color: #e5522b; text-transform: uppercase; letter-spacing: .1em; font-weight: 800;
}
.cv--ember .exp-role, .cv--ember .edu-degree { color: #20242b; font-weight: 700; }
.cv--ember .exp-org, .cv--ember .edu-school { color: #20242b; font-weight: 600; }
.cv--ember .exp-loc, .cv--ember .exp-dates { color: #e5522b; font-weight: 700; font-style: normal; }
.cv--ember .exp-bullets li::marker, .cv--ember [data-rich="block"] li::marker { color: #e5522b; }

/* ===== Theme: Sienna Elegant (taupe sidebar, serif, divider) ===== */
/* Warm brown/taupe elegant look: serif name, white columns split by a hairline
   divider, italic serif companies. Based on the Juliana Silva graphic CV. */
.cv--sienna {
  --cv-accent: #8a6a4e; --cv-ink: #3a3630; --cv-line: #e4ddd3;
  --cv-sidebar-bg: #ffffff; --cv-sidebar-ink: #4a453d; --cv-sidebar-accent: #8a6a4e;
  font-family: "Lora", Georgia, serif;
}
.cv--sienna .cv-head { background: #fff; border-bottom: 1px solid #ddd3c4; }
.cv--sienna .cv-name {
  color: #2c2620; font-family: "Playfair Display", "Lora", serif; font-weight: 500;
  text-transform: uppercase; letter-spacing: .12em; font-size: calc(34px * var(--cv-fs, 1));
}
.cv--sienna .cv-headline {
  color: #8a6a4e; opacity: 1; font-family: "Inter", sans-serif; font-weight: 400;
  font-size: calc(13px * var(--cv-fs, 1)); margin-top: 6px;
}
.cv--sienna .cv-photo { border-color: #8a6a4e; }
/* Hairline vertical divider between the two columns. */
.cv--sienna .cv-aside { border-right: 1px solid #ddd3c4; }
.cv--sienna .cv-label {
  color: #8a6a4e; text-transform: uppercase; letter-spacing: .16em;
  font-family: "Inter", sans-serif; font-weight: 600;
}
.cv--sienna .cv-aside .cv-label { color: #8a6a4e; }
.cv--sienna .exp-role, .cv--sienna .edu-degree {
  color: #2c2620; font-family: "Inter", sans-serif; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; font-size: calc(13px * var(--cv-fs, 1));
}
.cv--sienna .exp-org, .cv--sienna .edu-school { color: #6b5a45; font-style: italic; }
.cv--sienna .exp-loc, .cv--sienna .exp-dates { color: #8a6a4e; font-style: italic; }
.cv--sienna .exp-bullets li::marker, .cv--sienna [data-rich="block"] li::marker { color: #8a6a4e; }
.cv--sienna .cv-aside .exp-bullets li::marker,
.cv--sienna .cv-aside [data-rich] li::marker { color: #8a6a4e; }

/* ===== Theme: Biblio (elegant serif, no colour) ===== */
.cv--biblio { --cv-accent: #1a1a1a; --cv-ink: #20242c; --cv-line: #dcdcdc; font-family: "Lora", Georgia, serif; }
.cv--biblio .cv-name {
  color: #141414; font-family: "Playfair Display", "Lora", Georgia, serif;
  font-weight: 600; font-size: calc(40px * var(--cv-fs, 1)); letter-spacing: .005em;
}
.cv--biblio .cv-headline { color: #6b7280; opacity: 1; font-weight: 400; font-family: "Inter", sans-serif; }
.cv--biblio .cv-head { background: #fff; border-bottom: 1px solid #cfcfcf; }
.cv--biblio .cv-photo { border-color: #1a1a1a; }
.cv--biblio .cv-label { color: #6b7280; font-family: "Inter", sans-serif; font-weight: 600; letter-spacing: .16em; font-size: calc(11px * var(--cv-fs, 1)); }
.cv--biblio .cv-summary { font-style: italic; font-size: calc(15px * var(--cv-fs, 1)); color: #3a3f47; }
.cv--biblio .exp, .cv--biblio .edu { grid-template-columns: 1fr 120px; border-bottom: none; padding-bottom: 14px; }
.cv--biblio .exp-aside { order: 2; text-align: right; }
.cv--biblio .exp-main { order: 1; }
.cv--biblio .exp-role, .cv--biblio .edu-degree {
  color: #6b7280; font-family: "Playfair Display", "Lora", serif; font-weight: 500; font-size: calc(15px * var(--cv-fs, 1));
}
.cv--biblio .exp-org, .cv--biblio .edu-school { color: #1a1a1a; font-weight: 600; font-family: "Inter", sans-serif; }
.cv--biblio .exp-loc { color: #6b7280; font-weight: 400; }
.cv--biblio .exp-dates { color: #8a8f9c; font-style: normal; }
.cv--biblio .exp-bullets li::marker,
.cv--biblio [data-rich="block"] li::marker { color: #1a1a1a; }

/* ===== Theme: Manuscript (cream, centred editorial serif) ===== */
.cv--manuscript {
  --cv-accent: #5b4a3a; --cv-ink: #3a352d; --cv-line: #e4dccb;
  font-family: "Lora", Georgia, serif; background: #fbf7ef;
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.cv--manuscript .cv-head { background: #fbf7ef; border-bottom: none; }
.cv--manuscript .cv-head-row { justify-content: center; }
.cv--manuscript .cv-head-main { text-align: center; }
.cv--manuscript .cv-name {
  color: #2c2620; font-family: "Playfair Display", "Lora", serif; font-weight: 500; font-size: calc(40px * var(--cv-fs, 1));
}
.cv--manuscript .cv-headline {
  color: #8a7a63; opacity: 1; text-transform: uppercase; letter-spacing: .26em;
  font-size: calc(11px * var(--cv-fs, 1)); font-family: "Inter", sans-serif;
}
.cv--manuscript .cv-row { display: block; border-bottom: none; border-top: 1px solid #e4dccb; }
.cv--manuscript .cv-row:first-of-type { border-top: none; }
.cv--manuscript .cv-row > .cv-label {
  color: #8a7a63; font-family: "Inter", sans-serif; letter-spacing: .2em; font-weight: 600; margin-bottom: 12px;
}
.cv--manuscript .cv-summary { text-align: center; font-size: calc(15px * var(--cv-fs, 1)); }
.cv--manuscript .exp, .cv--manuscript .edu { grid-template-columns: 1fr 120px; border-bottom: none; padding-bottom: 14px; }
.cv--manuscript .exp-aside { order: 2; text-align: right; }
.cv--manuscript .exp-main { order: 1; }
.cv--manuscript .exp-role, .cv--manuscript .edu-degree {
  color: #2c2620; font-family: "Playfair Display", "Lora", serif; font-weight: 500; font-size: calc(15px * var(--cv-fs, 1));
}
.cv--manuscript .exp-org, .cv--manuscript .edu-school { color: #5b4a3a; font-weight: 600; }
.cv--manuscript .exp-loc { color: #8a7a63; }
.cv--manuscript .exp-dates { color: #a8987f; font-style: normal; }
.cv--manuscript .exp-bullets li::marker,
.cv--manuscript [data-rich="block"] li::marker { color: #5b4a3a; }

/* ===== Theme: Gazette (centred bold serif titles, full-width rules) ===== */
.cv--gazette { --cv-accent: #1a1a1a; --cv-ink: #2a2a2a; --cv-line: #d0d0d0; font-family: "Lora", Georgia, serif; }
.cv--gazette .cv-head { background: #fff; border-bottom: none; }
.cv--gazette .cv-head-row { justify-content: center; }
.cv--gazette .cv-head-main { text-align: center; }
.cv--gazette .cv-name {
  color: #141414; font-family: "Playfair Display", "Lora", serif; font-weight: 700;
  text-transform: uppercase; letter-spacing: .02em;
}
.cv--gazette .cv-headline { color: #5a5a5a; opacity: 1; font-family: "Inter", sans-serif; font-weight: 400; }
.cv--gazette .cv-row { display: block; border-bottom: none; }
.cv--gazette .cv-row > .cv-label {
  text-align: center; font-family: "Playfair Display", "Lora", serif; font-weight: 700;
  text-transform: none; font-size: calc(18px * var(--cv-fs, 1)); letter-spacing: 0; color: #141414;
  padding-bottom: 6px; margin-bottom: 12px; border-bottom: 1.5px solid #141414;
}
.cv--gazette .exp-role { color: #141414; }
.cv--gazette .exp-org, .cv--gazette .edu-school { color: #5a5a5a; font-weight: 600; }
.cv--gazette .edu-degree { color: #141414; }
.cv--gazette .exp-loc { color: #6b6b6b; }
.cv--gazette .exp-dates { color: #8a8a8a; font-style: normal; }
.cv--gazette .exp-bullets li::marker,
.cv--gazette [data-rich="block"] li::marker { color: #141414; }

@media print {
  /* Keep the cream paper colour in print/PDF (headless Chromium honours this). */
  .cv--sage, .cv--tide, .cv--manuscript { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .cv-x, .bul-move, .cv-add, .cv-photo-edit, .cv-photo-resize, .cv-photo-shape, .cv-photo-zoom, .cv-sec-tools, .cv-add-section, .cv-logo-x, .cv-logo-hint, .cv-logo-align, .cv-logo-resize { display: none !important; }
  /* Sidebar aside bleeds to the left page edge (mirrors the header bleed): a
     -50px left margin reaches the edge, +72px padding (50 bleed + 22 base)
     keeps its content aligned. */
  .cv-layout--sidebar .cv-aside { margin-left: -50px; padding-left: 72px; }
  /* Fill the coloured sidebar down the FULL height of EVERY printed page — not
     just to where the content ends. A `position: fixed` element is repainted on
     every page at the same viewport position in paged media, so this stripe
     tiles the aside colour across all pages with no white footer. It sits at a
     negative z-index so it stays behind all text; the real .cv-aside paints its
     own (identical) background over it in the content region, seamlessly. Width
     matches the aside's right edge: the aside track is var(--cv-aside-w) (34%
     default) of the .cv content box (page width − 100px of side padding), pulled
     −50px to the page's left edge, so its right edge sits at that width − 34px. */
  /* The article must be its own stacking context so the z-index:-1 fill paints
     above the article's (transparent) background — i.e. over the white paper —
     rather than escaping behind an opaque ancestor and disappearing. position:
     relative does NOT trap the fixed fill (only transform/filter would), so the
     fill still positions against the page and repeats on every sheet. */
  .cv-layout--sidebar { position: relative; z-index: 0; }
  .cv-side-fill {
    display: block;
    position: fixed;
    top: 0; bottom: 0; left: 0;
    width: calc(var(--cv-aside-w, 34%) - 34px);
    background: var(--cv-sidebar-bg);
    z-index: -1;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  /* An empty logo frame (editor "add logo" affordance) must not print. */
  .cv-logo:not(.has-logo) { display: none !important; }
  .paper [contenteditable]:hover { box-shadow: none; }
  [contenteditable]:empty::before { content: ""; }
  /* The page has NO left/right @page margin (see app.css) — instead the 50px
     side inset lives here as .cv padding. That lets the header bleed into this
     padding (a parent's padding, which Chromium paints reliably) rather than
     into the @page margin box (which headless Chromium — incl. Cloudflare's
     build — clips, leaving a white frame around the band). */
  .cv { padding-bottom: 0; padding-left: 50px; padding-right: 50px; }
  /* The coloured header band (bandeau) pulls -50px into .cv's side padding so
     it reaches both page edges; the first page's top margin is 0 (see app.css
     @page :first) so the band also reaches the top edge. The colour fills the
     full width above the line, while the body below keeps the 50px inset. The
     +76px padding (50 to clear the bleed + 26 base) keeps the name aligned with
     the section labels below. */
  .cv-head { margin: 0 -50px; padding-left: 76px; padding-right: 76px; }
  /* The "Download PDF" button prints the editor page itself, so the empty
     photo frame (kept as an "add photo" affordance) must be hidden here or
     it shows up as a blank box in the exported PDF. */
  .cv-photo:not(.has-img) { display: none !important; }
  /* Everything flows continuously: no section or entry is forced onto a new
     page, so each one starts immediately after the previous, with no gaps. */
}
