/* ==========================================================================
   Advoke CV — Resume design system
   The structural CSS for all 11 layout engines plus section header variants,
   header styles, divider rules, and typography pairings used by the 60
   template definitions.

   Every rule here is design-only. Layout engines map to `adv-<engine>` classes
   that the renderer adds to the resume root. Template definitions set inline
   custom properties (--resume-accent, --resume-font-*, etc.) on the same root
   to differentiate designs.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. RESUME ROOT — paper surface + global typography
   -------------------------------------------------------------------------- */
.adv-resume {
  --rs-accent: var(--resume-accent, #2f6fdd);
  --rs-accent-soft: var(--resume-accent-soft, #eef5ff);
  --rs-ink: var(--resume-ink, #1c2230);
  --rs-ink-soft: var(--resume-ink-soft, #3c4557);
  --rs-ink-muted: var(--resume-ink-muted, #737d92);
  --rs-rule: var(--resume-rule, #d7dce6);
  --rs-rule-strong: #b7bdca;
  --rs-body-font: var(--resume-font-body, "Inter", "Segoe UI", Arial, sans-serif);
  --rs-head-font: var(--resume-font-head, "Inter", "Segoe UI", Arial, sans-serif);
  --rs-body-size: calc(10.5pt * var(--resume-scale, 1));
  --rs-head-scale: calc(1 * var(--resume-space, 1));
  --rs-line: 1.42;
  --rs-entry-gap: calc(10px * var(--resume-space, 1));
  --rs-section-gap: calc(14px * var(--resume-space, 1));
  --rs-pad: var(--paper-padding, 14mm);

  width: 100%;
  min-height: 100%;
  padding: var(--rs-pad);
  background: var(--surface-paper, #fff);
  color: var(--rs-ink);
  font-family: var(--rs-body-font);
  font-size: var(--rs-body-size);
  line-height: var(--rs-line);
  font-weight: 400;
  letter-spacing: 0;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1, "onum" 0;
  box-sizing: border-box;
}

.adv-resume *,
.adv-resume *::before,
.adv-resume *::after {
  box-sizing: border-box;
}

.adv-resume p { margin: 0; }
.adv-resume ul, .adv-resume ol { margin: 0; padding: 0; list-style: none; }
.adv-resume li + li { margin-top: 0; }
.adv-resume h1, .adv-resume h2, .adv-resume h3, .adv-resume h4 {
  margin: 0;
  font-family: var(--rs-head-font);
  font-weight: 700;
  color: var(--rs-ink);
  letter-spacing: -0.01em;
  text-wrap: pretty;
}
.adv-resume a { color: inherit; text-decoration: none; }
.adv-resume strong { font-weight: 600; }

/* Paper variants */
.adv-resume--letter { --rs-pad: 12.7mm; }

/* --------------------------------------------------------------------------
   2. NAME + HEADLINE (shared primitives)
   -------------------------------------------------------------------------- */
.adv-name {
  font-size: calc(1.8em * var(--resume-space, 1));
  line-height: 1.05;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--rs-ink);
  margin: 0;
}

.adv-headline {
  font-size: calc(0.98em * var(--resume-space, 1));
  font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--rs-accent);
  margin: 2px 0 0;
}

.adv-contact {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  font-size: calc(0.86em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  line-height: 1.35;
}

.adv-contact__item {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
}

.adv-contact__dot {
  display: inline-block;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: var(--rs-ink-muted);
  vertical-align: middle;
}

/* --------------------------------------------------------------------------
   3. SECTION PRIMITIVES
   -------------------------------------------------------------------------- */
.adv-section {
  margin-top: var(--rs-section-gap);
}

.adv-section:first-child {
  margin-top: 0;
}

.adv-section__title {
  font-family: var(--rs-head-font);
  font-size: calc(0.82em * var(--resume-space, 1));
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--rs-ink);
  margin: 0 0 8px;
}

.adv-section__body > * + * {
  margin-top: var(--rs-entry-gap);
}

/* --------------------------------------------------------------------------
   4. ENTRY PRIMITIVES (experience, education, projects, etc.)
   -------------------------------------------------------------------------- */
.adv-entry__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.adv-entry__title {
  font-size: calc(1em * var(--resume-space, 1));
  font-weight: 700;
  color: var(--rs-ink);
}

.adv-entry__company {
  font-size: calc(0.95em * var(--resume-space, 1));
  font-weight: 500;
  color: var(--rs-accent);
}

.adv-entry__dates {
  font-size: calc(0.85em * var(--resume-space, 1));
  font-weight: 500;
  color: var(--rs-ink-muted);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.adv-entry__meta {
  font-size: calc(0.85em * var(--resume-space, 1));
  color: var(--rs-ink-muted);
  margin-top: 1px;
}

.adv-entry__body {
  margin-top: 5px;
  font-size: calc(0.94em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  line-height: var(--rs-line);
}

.adv-bullets {
  margin-top: 5px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.adv-bullets li {
  position: relative;
  padding-left: 14px;
  font-size: calc(0.94em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  line-height: var(--rs-line);
}

.adv-bullets li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 0.58em;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: var(--rs-accent);
}

.adv-bullets--dash li::before {
  content: "—";
  width: auto;
  height: auto;
  background: none;
  color: var(--rs-ink-muted);
  top: 0;
  left: 0;
  font-size: 0.9em;
}

.adv-bullets--square li::before {
  border-radius: 1px;
}

/* --------------------------------------------------------------------------
   5. SKILLS PRIMITIVES
   -------------------------------------------------------------------------- */
.adv-skills--inline {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  font-size: calc(0.92em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
}

.adv-skills--inline span::after {
  content: "·";
  margin-left: 8px;
  color: var(--rs-ink-muted);
}

.adv-skills--inline span:last-child::after {
  content: "";
}

.adv-skills--chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.adv-skills--chips span {
  display: inline-block;
  padding: 2px 9px;
  font-size: calc(0.82em * var(--resume-space, 1));
  font-weight: 500;
  color: var(--rs-ink);
  background: var(--rs-accent-soft);
  border-radius: 999px;
  line-height: 1.5;
}

.adv-skills--list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.adv-skills--list .adv-skill-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 8px;
  font-size: calc(0.9em * var(--resume-space, 1));
}

.adv-skill-bar {
  height: 4px;
  background: #e8ecf3;
  border-radius: 999px;
  overflow: hidden;
}

.adv-skill-bar > span {
  display: block;
  height: 100%;
  background: var(--rs-accent);
  border-radius: inherit;
}

/* --------------------------------------------------------------------------
   6. GENERIC META GRID (used by academic & grid layouts)
   -------------------------------------------------------------------------- */
.adv-meta-grid {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 3px 14px;
  font-size: calc(0.9em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
}

.adv-meta-grid dt {
  font-weight: 600;
  color: var(--rs-ink);
}

/* --------------------------------------------------------------------------
   7. LAYOUT ENGINE — classic (single column, ruled)
   -------------------------------------------------------------------------- */
.adv-layout--classic .adv-header {
  padding-bottom: 10px;
  margin-bottom: 14px;
  border-bottom: 2px solid var(--rs-ink);
}

.adv-layout--classic .adv-name {
  font-family: var(--rs-head-font);
  font-size: calc(1.85em * var(--resume-space, 1));
  letter-spacing: 0.01em;
  text-transform: uppercase;
}

.adv-layout--classic .adv-headline {
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-size: calc(0.78em * var(--resume-space, 1));
  color: var(--rs-ink);
  margin-top: 4px;
}

.adv-layout--classic .adv-contact {
  margin-top: 6px;
  font-size: calc(0.82em * var(--resume-space, 1));
}

.adv-layout--classic .adv-section {
  margin-top: calc(16px * var(--resume-space, 1));
}

.adv-layout--classic .adv-section__title {
  padding-bottom: 4px;
  border-bottom: 1px solid var(--rs-rule);
  color: var(--rs-ink);
  letter-spacing: 0.16em;
}

.adv-layout--classic .adv-bullets li::before {
  background: var(--rs-ink);
}

/* --------------------------------------------------------------------------
   8. LAYOUT ENGINE — minimal (borderless, airy)
   -------------------------------------------------------------------------- */
.adv-layout--minimal {
  --rs-line: 1.5;
  --rs-section-gap: calc(22px * var(--resume-space, 1));
}

.adv-layout--minimal .adv-header {
  margin-bottom: 20px;
}

.adv-layout--minimal .adv-name {
  font-weight: 300;
  letter-spacing: -0.03em;
  font-size: calc(2em * var(--resume-space, 1));
}

.adv-layout--minimal .adv-headline {
  color: var(--rs-ink-muted);
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-size: calc(0.74em * var(--resume-space, 1));
  margin-top: 6px;
}

.adv-layout--minimal .adv-section__title {
  font-weight: 600;
  letter-spacing: 0.18em;
  color: var(--rs-ink-muted);
  margin-bottom: 10px;
  font-size: calc(0.72em * var(--resume-space, 1));
}

.adv-layout--minimal .adv-bullets li::before {
  background: var(--rs-ink-muted);
  width: 3px;
  height: 3px;
  top: 0.62em;
}

.adv-layout--minimal .adv-entry__company {
  color: var(--rs-ink-soft);
  font-weight: 500;
}

/* --------------------------------------------------------------------------
   9. LAYOUT ENGINE — compact (dense single column)
   -------------------------------------------------------------------------- */
.adv-layout--compact {
  --rs-line: 1.32;
  --rs-entry-gap: calc(7px * var(--resume-space, 1));
  --rs-section-gap: calc(10px * var(--resume-space, 1));
  font-size: calc(0.95em * var(--rs-body-size));
}

.adv-layout--compact .adv-header {
  padding-bottom: 8px;
  margin-bottom: 10px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--compact .adv-name {
  font-size: calc(1.6em * var(--resume-space, 1));
}

.adv-layout--compact .adv-section__title {
  font-size: calc(0.76em * var(--resume-space, 1));
  letter-spacing: 0.12em;
  margin-bottom: 5px;
  color: var(--rs-accent);
}

.adv-layout--compact .adv-entry__dates {
  font-size: calc(0.78em * var(--resume-space, 1));
}

.adv-layout--compact .adv-bullets {
  gap: 1px;
}

/* --------------------------------------------------------------------------
   10. LAYOUT ENGINE — banded (full-width name band)
   -------------------------------------------------------------------------- */
.adv-layout--banded {
  padding: 0;
}

.adv-layout--banded .adv-band {
  background: var(--rs-accent);
  color: #fff;
  padding: calc(20px * var(--resume-space, 1)) var(--rs-pad) calc(16px * var(--resume-space, 1));
}

.adv-layout--banded .adv-name {
  color: #fff;
  font-size: calc(1.95em * var(--resume-space, 1));
  font-weight: 700;
  letter-spacing: -0.01em;
}

.adv-layout--banded .adv-headline {
  color: rgba(255, 255, 255, 0.86);
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: calc(0.78em * var(--resume-space, 1));
  margin-top: 5px;
}

.adv-layout--banded .adv-contact {
  color: rgba(255, 255, 255, 0.92);
  margin-top: 10px;
  font-size: calc(0.82em * var(--resume-space, 1));
}

.adv-layout--banded .adv-contact__dot {
  background: rgba(255, 255, 255, 0.5);
}

.adv-layout--banded .adv-body {
  padding: calc(16px * var(--resume-space, 1)) var(--rs-pad) var(--rs-pad);
}

.adv-layout--banded .adv-section__title {
  padding-bottom: 4px;
  border-bottom: 2px solid var(--rs-accent);
  color: var(--rs-ink);
}

/* --------------------------------------------------------------------------
   11. LAYOUT ENGINE — split (asymmetric two column, no panel)
   -------------------------------------------------------------------------- */
.adv-layout--split {
  padding: 0;
}

.adv-layout--split .adv-header {
  padding: var(--rs-pad) var(--rs-pad) calc(12px * var(--resume-space, 1));
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--split .adv-columns {
  display: grid;
  grid-template-columns: 1.8fr 1fr;
  gap: calc(20px * var(--resume-space, 1));
  padding: calc(14px * var(--resume-space, 1)) var(--rs-pad) var(--rs-pad);
}

.adv-layout--split .adv-col--main .adv-section:first-child,
.adv-layout--split .adv-col--aside .adv-section:first-child {
  margin-top: 0;
}

.adv-layout--split .adv-col--aside .adv-section__title {
  font-size: calc(0.72em * var(--resume-space, 1));
  color: var(--rs-accent);
  letter-spacing: 0.14em;
}

.adv-layout--split .adv-bullets li {
  padding-left: 12px;
}

.adv-layout--split .adv-name {
  font-size: calc(1.75em * var(--resume-space, 1));
}

/* --------------------------------------------------------------------------
   12. LAYOUT ENGINE — sidebar (coloured sidebar, left or right)
   -------------------------------------------------------------------------- */
.adv-layout--sidebar {
  padding: 0;
  display: block;
}

.adv-layout--sidebar .adv-sheet {
  display: grid;
  grid-template-columns: 32% 1fr;
  min-height: inherit;
}

.adv-layout--sidebar.adv-layout--sidebar-right .adv-sheet {
  grid-template-columns: 1fr 32%;
}

.adv-layout--sidebar.adv-layout--sidebar-right .adv-aside {
  order: 2;
}

.adv-layout--sidebar .adv-aside {
  background: var(--rs-accent);
  color: #fff;
  padding: calc(22px * var(--resume-space, 1)) calc(16px * var(--resume-space, 1));
}

.adv-layout--sidebar .adv-main {
  padding: calc(22px * var(--resume-space, 1)) calc(20px * var(--resume-space, 1));
}

.adv-layout--sidebar .adv-name {
  color: #fff;
  font-size: calc(1.55em * var(--resume-space, 1));
  line-height: 1.1;
}

.adv-layout--sidebar .adv-headline {
  color: rgba(255, 255, 255, 0.82);
  font-size: calc(0.78em * var(--resume-space, 1));
  text-transform: uppercase;
  letter-spacing: 0.1em;
  margin-top: 6px;
}

.adv-layout--sidebar .adv-aside .adv-section__title {
  color: #fff;
  opacity: 0.7;
  font-size: calc(0.68em * var(--resume-space, 1));
  letter-spacing: 0.14em;
  padding-bottom: 5px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.22);
  margin-bottom: 8px;
}

.adv-layout--sidebar .adv-aside .adv-contact {
  color: rgba(255, 255, 255, 0.92);
  display: block;
  font-size: calc(0.8em * var(--resume-space, 1));
  margin-top: 8px;
}

.adv-layout--sidebar .adv-aside .adv-contact__item {
  display: block;
  margin-bottom: 4px;
  white-space: normal;
  word-break: break-word;
}

.adv-layout--sidebar .adv-aside .adv-contact__dot {
  display: none;
}

.adv-layout--sidebar .adv-main .adv-section__title {
  color: var(--rs-accent);
  font-size: calc(0.72em * var(--resume-space, 1));
  letter-spacing: 0.14em;
}

.adv-layout--sidebar .adv-aside .adv-bullets li,
.adv-layout--sidebar .adv-aside li,
.adv-layout--sidebar .adv-aside p {
  color: rgba(255, 255, 255, 0.9);
}

.adv-layout--sidebar .adv-aside .adv-skills--chips span {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
}

.adv-layout--sidebar .adv-aside .adv-skill-bar {
  background: rgba(255, 255, 255, 0.2);
}

.adv-layout--sidebar .adv-aside .adv-skill-bar > span {
  background: #fff;
}

/* Sidebar dark variant (dark navy panel) */
.adv-layout--sidebar.adv-layout--sidebar-dark .adv-aside {
  background: #0f2c5c;
}

/* --------------------------------------------------------------------------
   13. LAYOUT ENGINE — timeline (vertical timeline for experience)
   -------------------------------------------------------------------------- */
.adv-layout--timeline .adv-header {
  margin-bottom: 16px;
}

.adv-layout--timeline .adv-timeline {
  position: relative;
  padding-left: 22px;
}

.adv-layout--timeline .adv-timeline::before {
  content: "";
  position: absolute;
  top: 4px;
  bottom: 4px;
  left: 6px;
  width: 1px;
  background: var(--rs-rule);
}

.adv-layout--timeline .adv-timeline > .adv-entry {
  position: relative;
  margin-top: var(--rs-entry-gap);
}

.adv-layout--timeline .adv-timeline > .adv-entry:first-child {
  margin-top: 0;
}

.adv-layout--timeline .adv-timeline > .adv-entry::before {
  content: "";
  position: absolute;
  top: 6px;
  left: -22px;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: #fff;
  border: 2px solid var(--rs-accent);
}

.adv-layout--timeline .adv-section__title {
  color: var(--rs-ink);
  padding-bottom: 4px;
  border-bottom: 2px solid var(--rs-accent);
  display: inline-block;
  margin-bottom: 10px;
}

.adv-layout--timeline .adv-entry__dates {
  color: var(--rs-accent);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   14. LAYOUT ENGINE — editorial (magazine)
   -------------------------------------------------------------------------- */
.adv-layout--editorial {
  --rs-body-font: var(--resume-font-serif, Georgia, serif);
  --rs-head-font: var(--resume-font-serif, Georgia, serif);
  --rs-line: 1.52;
}

.adv-layout--editorial .adv-header {
  padding-bottom: 14px;
  margin-bottom: 18px;
  border-bottom: 3px double var(--rs-ink);
}

.adv-layout--editorial .adv-name {
  font-weight: 900;
  font-size: calc(2.3em * var(--resume-space, 1));
  letter-spacing: -0.015em;
  line-height: 1;
}

.adv-layout--editorial .adv-headline {
  font-style: italic;
  color: var(--rs-ink-soft);
  font-size: calc(1em * var(--resume-space, 1));
  margin-top: 8px;
  letter-spacing: 0;
}

.adv-layout--editorial .adv-contact {
  font-family: var(--resume-font-body, "Inter", Arial, sans-serif);
  margin-top: 10px;
  font-size: calc(0.8em * var(--resume-space, 1));
  letter-spacing: 0.02em;
}

.adv-layout--editorial .adv-section__title {
  font-style: italic;
  font-weight: 700;
  font-size: calc(1.02em * var(--resume-space, 1));
  letter-spacing: 0;
  text-transform: none;
  color: var(--rs-accent);
  padding-bottom: 3px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--editorial .adv-entry__title {
  font-family: var(--resume-font-serif, Georgia, serif);
}

/* --------------------------------------------------------------------------
   15. LAYOUT ENGINE — academic (long-form CV)
   -------------------------------------------------------------------------- */
.adv-layout--academic {
  --rs-line: 1.4;
  --rs-section-gap: calc(16px * var(--resume-space, 1));
  font-size: calc(0.94em * var(--rs-body-size));
}

.adv-layout--academic .adv-header {
  text-align: center;
  padding-bottom: 10px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--academic .adv-name {
  font-size: calc(1.7em * var(--resume-space, 1));
  font-variant: small-caps;
  letter-spacing: 0.02em;
}

.adv-layout--academic .adv-contact {
  justify-content: center;
  margin-top: 6px;
  font-size: calc(0.82em * var(--resume-space, 1));
}

.adv-layout--academic .adv-section__title {
  text-align: left;
  font-variant: small-caps;
  letter-spacing: 0.06em;
  color: var(--rs-ink);
  padding-bottom: 3px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--academic .adv-pub-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
  counter-reset: pub;
}

.adv-layout--academic .adv-pub-list li {
  position: relative;
  padding-left: 22px;
  font-size: calc(0.92em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  counter-increment: pub;
  line-height: var(--rs-line);
}

.adv-layout--academic .adv-pub-list li::before {
  content: "[" counter(pub) "]";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--rs-ink-muted);
  font-family: var(--font-mono, monospace);
  font-size: 0.85em;
}

/* --------------------------------------------------------------------------
   16. LAYOUT ENGINE — blocks (section cards)
   -------------------------------------------------------------------------- */
.adv-layout--blocks .adv-header {
  padding-bottom: 12px;
  margin-bottom: 14px;
  border-bottom: 2px solid var(--rs-accent);
}

.adv-layout--blocks .adv-section {
  padding: calc(10px * var(--resume-space, 1)) calc(12px * var(--resume-space, 1));
  background: var(--rs-accent-soft);
  border-left: 3px solid var(--rs-accent);
  border-radius: 2px;
}

.adv-layout--blocks .adv-section__title {
  color: var(--rs-accent);
  font-size: calc(0.78em * var(--resume-space, 1));
  letter-spacing: 0.14em;
  margin-bottom: 6px;
}

.adv-layout--blocks .adv-section + .adv-section {
  margin-top: calc(10px * var(--resume-space, 1));
}

/* --------------------------------------------------------------------------
   17. LAYOUT ENGINE — grid (strict 2-axis grid)
   -------------------------------------------------------------------------- */
.adv-layout--grid {
  --rs-section-gap: calc(14px * var(--resume-space, 1));
}

.adv-layout--grid .adv-header {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 12px;
  padding-bottom: 10px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--grid .adv-header__meta {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 2px 10px;
  font-size: calc(0.82em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  text-align: right;
}

.adv-layout--grid .adv-header__meta dt {
  font-weight: 600;
  color: var(--rs-ink-muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 0.92em;
}

.adv-layout--grid .adv-section__title {
  letter-spacing: 0.16em;
  color: var(--rs-ink-muted);
  font-size: calc(0.72em * var(--resume-space, 1));
  padding-bottom: 3px;
  border-bottom: 1px solid var(--rs-rule);
}

.adv-layout--grid .adv-entry__head {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
}

/* --------------------------------------------------------------------------
   18. UTILITIES / SHARED ELEMENTS
   -------------------------------------------------------------------------- */
.adv-summary {
  font-size: calc(0.94em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
  line-height: var(--rs-line);
}

.adv-divider {
  height: 1px;
  background: var(--rs-rule);
  margin: calc(10px * var(--resume-space, 1)) 0;
}

.adv-link-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  font-size: calc(0.85em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
}

.adv-chip-list {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
  font-size: calc(0.9em * var(--resume-space, 1));
  color: var(--rs-ink-soft);
}

.adv-chip-list span::after {
  content: "·";
  margin-left: 10px;
  color: var(--rs-ink-muted);
}

.adv-chip-list span:last-child::after {
  content: "";
}

.adv-lang-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  font-size: calc(0.9em * var(--resume-space, 1));
}

.adv-lang-row__level {
  color: var(--rs-ink-muted);
  font-style: italic;
}

/* --------------------------------------------------------------------------
   19. PRINT — kept minimal here, full rules in print.css
   -------------------------------------------------------------------------- */
@media print {
  .adv-resume {
    padding: 0;
    box-shadow: none;
    border-radius: 0;
  }
}