/* ==========================================================================
   Shared design — becker-consulting.se and www.henrikbecker.net
   Palette sampled from the portrait; body text in warm grey rather than
   near-black, headings carry the contrast.

   Single source for what the two sites share: fonts, tokens, base elements,
   buttons, header, footer and content pages (breadcrumb, title, lead, prose,
   "On this page"). henrikbecker.net links it from
   https://www.becker-consulting.se/assets/css/shared.css, so a change here
   shows up there as soon as this site is deployed. Site-specific styles
   (landing page, CV) stay in each site's own stylesheet.

   Links in components reset their own borders, so the file looks the same
   whatever the host site's element defaults are.
   ========================================================================== */

@font-face {
  font-family: "Geist";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/assets/fonts/geist-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Geist";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/assets/fonts/geist-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/assets/fonts/geist-mono-latin-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Geist Mono";
  font-style: normal;
  font-display: swap;
  font-weight: 100 900;
  src: url("/assets/fonts/geist-mono-latin-ext-wght-normal.woff2") format("woff2-variations");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}


/* ---- Tokens ------------------------------------------------------------ */

:root {
  color-scheme: light dark;

  /* Light — sampled from the portrait */
  --bg: #F2F1F1;          /* studio backdrop, lifted */
  --surface: #E3E2E4;     /* studio grey */
  --card: #EAE8E9;
  --ink: #2E2429;         /* jacket shadow — headings */
  --text: #6B6268;        /* jacket highlight — body, 5.2:1 */
  --line: #D6D2D4;        /* pendant, softened */
  --line-strong: #C9C4C6;
  --line-dashed: #B9B2B5;
  --accent: #A4533D;      /* beard copper */
  --on-accent: #F2F1F1;
  --band-bg: #2A2126;
  --band-border: transparent;
  --band-text: #CFC8CB;
  --band-ink: #F7F5F5;
  --band-label: #D9A08F;
  --band-line: #5A4F55;

  /* Code */
  --code-bg: #2A2126;
  --code-text: #E6E0E3;
  --code-border: transparent;

  --font-sans: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;
  --font-mono: "Geist Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;

  --gutter: clamp(20px, 5.6vw, 80px);
  --max: 1440px;
  --radius: 20px;
}

/* Dark follows the system setting unless the theme toggle (theme.js) has put
   .light or .dark on the root element. */
@media (prefers-color-scheme: dark) {
  :root:not(.light) {
    --bg: #171517;
    --surface: #221E21;
    --card: #221E21;
    --ink: #EDEAEB;
    --text: #A69EA2;
    --line: #332D31;
    --line-strong: #4A4247;
    --line-dashed: #5A4F55;
    --accent: #D9A08F;
    --on-accent: #171517;
    --band-bg: #1E1A1D;
    --band-border: #332D31;
    --band-text: #A69EA2;
    --band-ink: #EDEAEB;
    --code-bg: #1E1A1D;
    --code-border: #332D31;
  }
}
:root.light { color-scheme: light; }
:root.dark {
  color-scheme: dark;
  --bg: #171517;
  --surface: #221E21;
  --card: #221E21;
  --ink: #EDEAEB;
  --text: #A69EA2;
  --line: #332D31;
  --line-strong: #4A4247;
  --line-dashed: #5A4F55;
  --accent: #D9A08F;
  --on-accent: #171517;
  --band-bg: #1E1A1D;
  --band-border: #332D31;
  --band-text: #A69EA2;
  --band-ink: #EDEAEB;
  --code-bg: #1E1A1D;
  --code-border: #332D31;
}

/* ---- Base -------------------------------------------------------------- */

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: 24px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  margin: 0;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 18px;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
main { flex: 1 0 auto; }

h1, h2, h3, h4 { color: var(--ink); font-weight: 600; margin: 0; text-wrap: balance; }
p { margin: 0; }
img { display: block; max-width: 100%; height: auto; }

a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--ink); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 4px; }

.wrap { width: 100%; max-width: var(--max); margin-inline: auto; padding-inline: var(--gutter); }

.skip-link {
  position: absolute; left: 16px; top: -100px; z-index: 10;
  padding: 10px 16px; border-radius: 8px;
  background: var(--ink); color: var(--bg); border: 0;
}
.skip-link:focus { top: 16px; color: var(--bg); }

.label {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text);
}

.icon { flex-shrink: 0; }

/* Theme toggle: an invisible button in the top-left corner, for those who know */
.theme-toggle {
  position: fixed; left: 0; top: 0; z-index: 1000;
  width: 20px; height: 20px; margin: 0; padding: 0; border: none;
  background: transparent; color: transparent; cursor: pointer;
}

.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---- Buttons ----------------------------------------------------------- */

.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 10px;
  min-height: 52px; padding: 0 26px; border: 0; border-radius: 10px;
  background: var(--accent); color: var(--on-accent);
  font-size: 16px; font-weight: 500; line-height: 1.2;
}
.button:hover { color: var(--on-accent); filter: brightness(1.08); }
.button--ghost { background: transparent; color: var(--ink); border: 1px solid var(--line-strong); min-height: 48px; padding: 0 18px; font-size: 15px; }
.button--ghost:hover { color: var(--ink); border-color: var(--ink); filter: none; }
.button--small { min-height: 48px; padding: 0 22px; font-size: 15px; }

.link-underline { font-weight: 500; color: var(--ink); border-bottom: 1px solid var(--line-strong); padding-bottom: 2px; }
.link-underline:hover { border-color: var(--ink); }

/* ---- Header ------------------------------------------------------------ */

.site-header--ruled { border-bottom: 1px solid var(--line); }
.site-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding-block: 32px; }

.brand { display: inline-flex; align-items: center; gap: 12px; color: var(--ink); font-size: 18px; font-weight: 600; letter-spacing: -0.01em; border: 0; }
.brand:hover { color: var(--ink); }
.brand__mark {
  width: 28px; height: 28px; border-radius: 7px;
  display: grid; place-items: center;
  background: var(--ink); color: var(--bg);
  font-size: 15px; font-weight: 600; line-height: 1;
}

.nav { display: flex; align-items: center; gap: 40px; font-size: 15px; }
.nav a, .nav-mobile__panel a { color: var(--text); display: inline-flex; align-items: center; gap: 8px; border: 0; }
.nav a:hover, .nav-mobile__panel a:hover { color: var(--ink); }
.nav a[aria-current="page"], .nav-mobile__panel a[aria-current="page"] { color: var(--ink); font-weight: 500; }
.nav .nav-contact, .nav-mobile__panel .nav-contact { color: var(--accent); font-weight: 500; }
/* Language switch: same small outlined label as on henrikbecker.net. */
.nav .nav-lang, .nav-mobile__panel .nav-lang { font-family: var(--font-mono); font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; padding: 3px 8px; border: 1px solid var(--line); border-radius: 5px; }
.nav-mobile__panel .nav-lang { align-self: flex-start; }

.tag {
  font-family: var(--font-mono); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase;
  padding: 2px 6px; border-radius: 4px; border: 1px solid var(--line); line-height: 1.4;
}

.nav-mobile { display: none; position: relative; }
.nav-mobile summary {
  list-style: none; cursor: pointer;
  width: 44px; height: 44px; display: grid; place-items: center;
  color: var(--ink); border-radius: 10px;
}
.nav-mobile summary::-webkit-details-marker { display: none; }
.nav-mobile[open] summary { background: var(--surface); }
.nav-mobile__panel {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 5;
  min-width: 220px; padding: 10px;
  display: flex; flex-direction: column;
  background: var(--bg); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 12px 32px rgba(23, 21, 23, 0.14);
}
.nav-mobile__panel a { padding: 12px 14px; border-radius: 8px; font-size: 16px; }
.nav-mobile__panel a:hover { background: var(--surface); }

@media (max-width: 900px) {
  .site-header__inner { padding-block: 20px; }
  .nav { display: none; }
  .nav-mobile { display: block; }
}

/* ---- Footer ------------------------------------------------------------ */

.site-footer { border-top: 1px solid var(--line); margin-top: 96px; font-size: 14px; }
.site-footer__inner { display: flex; justify-content: space-between; align-items: center; gap: 16px 32px; flex-wrap: wrap; padding-block: 32px 40px; }
.site-footer__links { display: flex; gap: 32px; flex-wrap: wrap; }
.site-footer__links a { color: var(--ink); border: 0; }
.site-footer__links a:hover { color: var(--accent); }

@media (max-width: 700px) {
  .site-footer { margin-top: 64px; }
  .site-footer__inner { flex-direction: column; align-items: flex-start; padding-block: 24px 32px; }
  .site-footer__links { gap: 24px; }
}

/* ---- Content pages ----------------------------------------------------- */

.article-layout { display: grid; grid-template-columns: minmax(0, 720px) 240px; justify-content: center; gap: 120px; padding-top: 64px; }
.article { min-width: 0; }
.breadcrumb { display: flex; gap: 10px; font-family: var(--font-mono); font-size: 13px; letter-spacing: 0.04em; }
.breadcrumb a { color: var(--text); border: 0; }
.breadcrumb a:hover { color: var(--ink); }
.breadcrumb [aria-current] { color: var(--ink); }
.article h1 { margin-top: 20px; font-size: clamp(40px, 4.2vw, 60px); line-height: 1.05; letter-spacing: -0.035em; }
.article .meta { margin-top: 16px; font-family: var(--font-mono); font-size: 13px; }
.lead { margin-top: 28px; font-size: clamp(19px, 1.6vw, 23px); line-height: 1.55; color: var(--ink); }

.toc { position: sticky; top: 32px; align-self: start; display: flex; flex-direction: column; gap: 14px; padding-top: 120px; font-size: 14px; }
.toc a { color: var(--text); border: 0; }
.toc a:hover, .toc a[aria-current="true"] { color: var(--accent); }
.toc a[aria-current="true"] { font-weight: 500; }

@media (max-width: 1100px) {
  .article-layout { grid-template-columns: minmax(0, 720px); gap: 0; padding-top: 40px; }
  .toc { display: none; }
}

/* Prose — markdown output */
.prose { font-size: 18px; line-height: 1.75; }
.prose > * + * { margin-top: 18px; }
.prose h2 { margin-top: 64px; font-size: 30px; line-height: 1.2; letter-spacing: -0.02em; }
.prose h3 { margin-top: 40px; font-size: 22px; line-height: 1.3; letter-spacing: -0.01em; }
.prose h2 + *, .prose h3 + * { margin-top: 18px; }
.prose strong { color: var(--ink); font-weight: 600; }
.prose a { color: var(--accent); border-bottom: 1px solid currentColor; }
.prose a:hover { color: var(--ink); }
.prose ul, .prose ol { padding-left: 22px; }
.prose li + li { margin-top: 8px; }
.prose hr { border: 0; border-top: 1px solid var(--line); margin-block: 48px; }
.prose img { border-radius: 14px; }
.prose :not(pre) > code {
  font-family: var(--font-mono); font-size: 0.84em;
  background: var(--surface); color: var(--ink);
  padding: 2px 7px; border-radius: 5px;
}
.prose blockquote, .quote { margin: 56px 0 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.prose blockquote p, .quote blockquote { margin: 0; font-size: clamp(20px, 1.7vw, 24px); line-height: 1.5; color: var(--ink); letter-spacing: -0.01em; }
.prose blockquote::before {
  content: ""; width: 36px; height: 28px; background: var(--accent);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 28'%3E%3Cpath d='M0 28V16C0 7 5 1.5 14 0l1.5 4C10 6 8 9.5 8 14h7v14H0zm20 0V16c0-9 5-14.5 14-16l1.5 4C30 6 28 9.5 28 14h7v14H20z'/%3E%3C/svg%3E") no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 28'%3E%3Cpath d='M0 28V16C0 7 5 1.5 14 0l1.5 4C10 6 8 9.5 8 14h7v14H0zm20 0V16c0-9 5-14.5 14-16l1.5 4C30 6 28 9.5 28 14h7v14H20z'/%3E%3C/svg%3E") no-repeat;
}
.prose blockquote p + p, .quote figcaption { font-size: 15px; color: var(--text); letter-spacing: 0; }
.quote .quote-mark { color: var(--accent); }
.prose dl { display: grid; grid-template-columns: 160px minmax(0, 1fr); gap: 10px 24px; font-size: 16px; }
.prose dt { font-family: var(--font-mono); font-size: 13px; padding-top: 2px; }
.prose dd { margin: 0; color: var(--ink); }

/* Code blocks */
.prose pre[class*="language-"], .prose pre {
  margin-top: 28px; padding: 24px 28px; border-radius: 14px; overflow-x: auto;
  background: var(--code-bg); color: var(--code-text); box-shadow: inset 0 0 0 1px var(--code-border);
  font-family: var(--font-mono); font-size: 14px; line-height: 1.7; tab-size: 4;
}
.prose pre code { font-family: inherit; }

/* ---- Short CV ------------------------------------------------------------
   The short CV is rendered by henrikbecker.net (_includes/short-cv.liquid) and
   shown on both sites: on its own CV page there, and as an HTML fragment on
   becker-consulting.se. A few rules below (quotes, list bullets, the "see the
   full CV" link) give elements the look henrikbecker.net's base styles do, so
   the CV looks the same on both sites. */

.cv-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px 64px; flex-wrap: wrap; padding-block: 72px 16px; }
.cv-head__id { display: flex; gap: 36px; align-items: center; }
.cv-head__photo { width: 132px; height: 132px; flex-shrink: 0; border-radius: 16px; overflow: hidden; background: var(--surface); }
.cv-head__photo img { width: 100%; height: 100%; object-fit: cover; }
.cv-head__text { display: flex; flex-direction: column; gap: 10px; }
.cv-head__text p { margin: 0; }
.cv-head h1 { font-size: clamp(40px, 4.2vw, 60px); line-height: 1; letter-spacing: -0.035em; }
.cv-head__title { font-size: 20px; color: var(--ink); line-height: 1.4; }
.cv-head__actions { display: flex; gap: 12px; flex-wrap: wrap; }

.cv-short { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 96px; padding-top: 56px; }
.cv-summary { margin-top: 32px; font-size: clamp(19px, 1.6vw, 22px); line-height: 1.6; color: var(--ink); max-width: 780px; }
.cv-short__main > h2.label { margin: 0 0 8px; }

.cv-entry { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 32px; padding: 28px 0; border-top: 1px solid var(--line); }
.cv-entry:last-of-type { border-bottom: 1px solid var(--line); }
.cv-entry__years { margin: 0; padding-top: 5px; font-family: var(--font-mono); font-size: 13px; }
.cv-entry__body { display: flex; flex-direction: column; gap: 8px; }
.cv-entry__head { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; margin: 0; font-size: inherit; font-weight: 400; }
.cv-entry__name { font-size: 21px; font-weight: 600; letter-spacing: -0.015em; color: var(--ink); border: none; }
.cv-entry__name:hover { color: var(--accent); }
.cv-entry__role { font-size: 15px; color: var(--text); }
.cv-entry__summary, .cv-entry--earlier p:not(.cv-entry__years) { font-size: 16px; line-height: 1.65; }
.cv-entry__summary p { margin: 0; }
.cv-entry--earlier a { border-bottom: 1px solid color-mix(in srgb, currentColor 40%, transparent); }
.cv-entry--earlier a:hover { border-bottom-color: currentColor; }
.cv-entry__highlight { margin: 0; position: relative; padding-left: 22px; font-size: 16px; line-height: 1.55; color: var(--text); }
.cv-entry__highlight::before { content: "→"; position: absolute; left: 0; color: var(--accent); }
.cv-entry__tech { margin: 0; font-family: var(--font-mono); font-size: 12px; color: var(--accent); }

.cv-quotes { display: flex; flex-direction: column; gap: 48px; margin-top: 64px; }
.cv-quote { margin: 0; max-width: 780px; }
.cv-quote blockquote { margin: 0; display: flex; flex-direction: column; gap: 16px; color: var(--ink); font-size: 21px; line-height: 1.5; letter-spacing: -0.01em; }
.cv-quote blockquote::before { content: ""; width: 36px; height: 28px; background: var(--accent); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 28'%3E%3Cpath d='M0 28V16C0 7 5 1.5 14 0l1.5 4C10 6 8 9.5 8 14h7v14H0zm20 0V16c0-9 5-14.5 14-16l1.5 4C30 6 28 9.5 28 14h7v14H20z'/%3E%3C/svg%3E") no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 28'%3E%3Cpath d='M0 28V16C0 7 5 1.5 14 0l1.5 4C10 6 8 9.5 8 14h7v14H0zm20 0V16c0-9 5-14.5 14-16l1.5 4C30 6 28 9.5 28 14h7v14H20z'/%3E%3C/svg%3E") no-repeat; }
.cv-quote blockquote p { margin: 0; }
.cv-quote footer { font-size: 15px; color: var(--text); letter-spacing: 0; }

.cv-short__aside { display: flex; flex-direction: column; gap: 40px; padding-top: 6px; }
.cv-short__aside section { display: flex; flex-direction: column; gap: 12px; }
.cv-short__aside h2.label { margin: 0; }
.cv-short__aside ul { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; list-style: none; font-size: 16px; color: var(--ink); }
.cv-short__aside ul li { padding-left: 0; }
.cv-short__aside ul li::before { display: none; }
.cv-short__aside ul li + li { margin-top: 0; }
.cv-short__aside ul li span { color: var(--text); }
.cv-aside__item { display: flex; flex-direction: column; gap: 2px; }
.cv-aside__item > :first-child { font-size: 16px; color: var(--ink); }
.cv-aside__item > a:first-child { border: none; }
.cv-aside__item > a:first-child:hover { color: var(--accent); }
.cv-aside__item > span:last-child { font-size: 14px; }
.cv-aside__row { display: flex; justify-content: space-between; gap: 12px; font-size: 16px; color: var(--ink); border: none; }
.cv-aside__row span:last-child { font-family: var(--font-mono); font-size: 12px; color: var(--accent); }
.cv-aside__row:hover span:first-child { color: var(--accent); }
.cv-aside__formats { padding: 24px; border-radius: 16px; background: var(--surface); }
.cv-aside__formats div { display: flex; gap: 16px; flex-wrap: wrap; font-size: 15px; }
.cv-aside__formats a { color: var(--ink); border-bottom: 1px solid var(--line-dashed); }
.cv-aside__formats a:hover { color: var(--accent); }

@media (max-width: 1100px) {
  .cv-short { grid-template-columns: 1fr; gap: 64px; }
}
@media (max-width: 700px) {
  .cv-head { padding-block: 40px 8px; }
  .cv-head__id { gap: 20px; }
  .cv-head__photo { width: 96px; height: 96px; border-radius: 14px; }
  .cv-head h1 { font-size: 34px; }
  .cv-head__title { font-size: 17px; }
  .cv-short { padding-top: 24px; }
  .cv-summary { font-size: 19px; }
  .cv-entry { grid-template-columns: 1fr; gap: 8px; padding: 22px 0; }
  .cv-entry__years { padding-top: 0; }
}

/* ---- Print ---------------------------------------------------------------
   Printing the short CV: a business card on top (.print-card, part of the CV
   fragment), the sidebar facts as a compact block, then the experience. */

.print { display: none; }
.flip-text { unicode-bidi: bidi-override; direction: rtl; }

@media print {
  @page { size: A4; margin: 12mm; }
  :root, :root.dark {
    --bg: #FFFFFF !important;
    --surface: #F2F1F1 !important;
    --ink: #2E2429 !important;
    --text: #4A4247 !important;
    --line: #C9C4C6 !important;
    --accent: #A4533D !important;
  }
  html, body { background: white !important; color: var(--ink) !important; font-size: 15px !important; }
  body { margin: 0 !important; padding: 0 !important; }
  .no-print, .site-header, .site-footer, .skip-link, .cv-head, cv-chat, nav { display: none !important; }
  .print { display: revert; }
  *, *::before, *::after { box-shadow: none !important; text-shadow: none !important; }
  a { color: inherit !important; text-decoration: none !important; border: none !important; }
  main .wrap { max-width: none; padding-inline: 0; }

  .print-card { display: grid !important; grid-template-columns: 1fr auto; align-items: center; gap: 0 3rem; margin-bottom: 6mm; border: 1pt solid var(--line); border-radius: 10px; overflow: hidden; }
  .print-card picture { grid-column: 2; grid-row: 1; width: 47mm; height: 70mm; }
  .print-card img { display: block; width: 100%; height: 100%; object-fit: cover; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
  .print-card > div { grid-column: 1; grid-row: 1; padding: 5mm 0 5mm 8mm; }
  .print-card p { margin: 0 0 3mm; color: var(--ink); }
  .print-card .print-card__name { font-size: 26pt; font-weight: 600; line-height: 1.1; margin: 0 0 1mm; }
  .print-card ul { margin: 0; padding: 0; list-style: none; font-size: 10pt; }
  .print-card li { padding-left: 0; }
  .print-card li::before { display: none; }
  .print-card .icon { width: 1em; height: 1em; margin-right: .5rem; vertical-align: -0.125em; }

  .cv-summary { margin: 4mm 0 0 !important; font-size: 12pt !important; }
  .cv-short { display: flex !important; flex-direction: column; gap: 6mm !important; padding-top: 6mm !important; }
  .cv-short__aside { order: -1; display: grid !important; grid-template-columns: 1.4fr 1fr 1fr; gap: 5mm 8mm !important; padding: 0 !important; font-size: 10pt; }
  .cv-short__aside ul { gap: 1mm !important; font-size: 10pt !important; }
  .cv-short__aside .cv-aside__item > :first-child, .cv-short__aside .cv-aside__row { font-size: 10pt !important; }
  .cv-short__main > h2.label { border-bottom: none; margin-bottom: 0 !important; }
  .cv-entry { grid-template-columns: 34mm minmax(0, 1fr) !important; gap: 5mm !important; padding: 3mm 0 !important; page-break-inside: avoid; }
  .cv-entry__name { font-size: 13pt !important; }
  .cv-entry__summary, .cv-entry__highlight, .cv-entry--earlier p { font-size: 10.5pt !important; color: var(--text) !important; }
}
