/* Match fallback character widths and font metrics to prevent font-swap shifts. */
@font-face {
  font-family: 'Martian Mono Fallback';
  src: local('Courier New'), local('Liberation Mono'), local('Courier');
  font-weight: 100 900;
  size-adjust: 116.6667%;
  ascent-override: 85.7143%;
  descent-override: 17.1429%;
  line-gap-override: 0%;
}
@font-face {
  font-family: 'Martian Mono';
  font-style: normal;
  font-weight: 400;
  font-stretch: normal;
  font-display: swap;
  src: url("../fonts/martian-mono-400.woff2") format('woff2');
}
@font-face {
  font-family: 'Martian Mono';
  font-style: normal;
  font-weight: 500;
  font-stretch: normal;
  font-display: swap;
  src: url("../fonts/martian-mono-500.woff2") format('woff2');
}
@font-face {
  font-family: 'Martian Mono';
  font-style: normal;
  font-weight: 700;
  font-stretch: normal;
  font-display: swap;
  src: url("../fonts/martian-mono-700.woff2") format('woff2');
}

/* Hallmark · shape: career ledger · genre: atmospheric · theme: Terminal with Furrow book structure (by request) · job: hire · v2.0.0 */
/* Hallmark · pre-emit critique: a ruled, filterable career record replaces the prose experience list; company tenure is explicit to avoid inventing promotion dates. */
/* Hallmark · answered 58: the word count includes native disclosures; expanded responsibilities preserve the supplied career history. */
/* Hallmark · answered F4: the filled segmented item communicates filter selection, not a second primary action. */
/* Hallmark · shape: career index · genre: atmospheric · theme: Terminal (by request) · job: hire · draw: material-led
 * hero: split typography · nav: inline index · footer: colophon · imagery: none · signature: career progression as terminal output
 * axes: dark/mono/chromatic-green · posture: committed · contrast: pending · fold: pending · v2.0.0 */
/* Hallmark · pre-emit critique: typography and real career history carry the page; restrained terminal vocabulary avoids a simulated OS. */
:root {
  color-scheme: dark;
  --space-3xs: 2px; --space-2xs: 4px; --space-xs: 8px; --space-sm: 12px; --space-md: 16px; --space-lg: 24px; --space-xl: 40px; --space-2xl: 64px; --space-3xl: 96px; --space-4xl: 144px;
  --text-xs: 0.8125rem; --text-sm: 0.875rem; --text-md: 1rem; --text-lg: 1.25rem; --text-xl: 1.5625rem; --text-2xl: 1.953rem; --text-3xl: 2.441rem;
  --text-display-s: clamp(2.25rem, 4vw + 0.5rem, 3.75rem); --text-display: clamp(2.75rem, 5vw + 1rem, 5.25rem);
  --text-section: clamp(2rem, 2.5vw + 1rem, 3.5rem); --text-title: clamp(1.25rem, 0.75vw + 0.875rem, 1.625rem); --text-lead: clamp(1.125rem, 0.35vw + 1rem, 1.375rem);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-in: cubic-bezier(0.7, 0, 0.84, 0); --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms; --dur-short: 220ms; --dur-long: 420ms;
  --color-error: oklch(72% 0.15 27); --color-success: oklch(76% 0.13 150);
  --container: 1440px; --gutter: 64px; --gap-columns: 32px; --section-gap-s: 120px; --section-gap: 144px; --section-gap-l: 176px;
  --z-base: 1; --z-raised: 10; --z-dropdown: 100; --z-sticky: 200; --z-sticky-nav: 300; --z-modal: 400; --z-toast: 500; --z-tooltip: 600;
  --color-paper: oklch(12.5% 0.012 150); --color-paper-2: oklch(16% 0.016 150); --color-paper-3: oklch(20.5% 0.022 150);
  --color-ink: oklch(94% 0.03 140); --color-ink-2: oklch(82% 0.05 142); --color-muted: oklch(64% 0.06 145);
  --color-rule: oklch(27% 0.028 148); --color-rule-2: oklch(38% 0.045 146);
  --color-accent: oklch(87% 0.2 142); --color-accent-ink: oklch(14% 0.02 150); --color-focus: oklch(87% 0.2 142);
  --color-accent-wash: oklch(23% 0.06 145);
  --glyph-0: oklch(30% 0.06 146); --glyph-1: oklch(38% 0.08 145); --glyph-2: oklch(47% 0.11 144); --glyph-3: oklch(57% 0.14 143);
  --glyph-4: oklch(67% 0.17 142); --glyph-5: oklch(77% 0.19 142); --glyph-6: oklch(86% 0.2 141); --glyph-7: oklch(94% 0.12 138);
  --font-display: "Martian Mono", "Martian Mono Fallback", ui-monospace, monospace; --font-body: var(--font-display); --font-outlier: var(--font-display);
  --radius-card: 0; --radius-pill: 0; --rule-hair: 1px; --shadow-card: none;
  --tracking-display: -0.02em; --display-weight: 500; --stretch-display: 112.5%; --stretch-body: 87.5%;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { overflow-x: clip; }
html { scrollbar-color: var(--color-muted) var(--color-paper); scroll-padding-top: var(--space-3xl); }
body { margin: 0; background: var(--color-paper); color: var(--color-ink); font-family: var(--font-body); font-size: var(--text-md); line-height: 1.55; -webkit-font-smoothing: antialiased; caret-color: var(--color-accent); }
::selection { background: color-mix(in oklab, var(--color-accent) 22%, transparent); color: var(--color-ink); }
:focus-visible { outline: 2px solid var(--color-focus); outline-offset: 2px; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: 0.16em; }
h1, h2, h3 { margin: 0; font-family: var(--font-display); font-weight: var(--display-weight, 700); font-synthesis: none; letter-spacing: var(--tracking-display); line-height: 1.05; overflow-wrap: break-word; min-width: 0; text-wrap: balance; }
h1 { max-width: 20ch; font-size: var(--text-display); } h2 { max-width: 30ch; font-size: var(--text-section); } h3 { max-width: 40ch; font-size: var(--text-title); line-height: 1.2; }
.lead { font-size: var(--text-lead); line-height: 1.45; max-width: 52ch; }
p { margin: 0; text-wrap: pretty; }
p:not([class]) { max-width: 65ch; }
img, video { max-width: 100%; height: auto; display: block; }
svg { display: block; }
[hidden] { display: none !important; }
button, input, select, textarea { font: inherit; }
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); box-sizing: border-box; }
.num, .figure, td.num { font-variant-numeric: tabular-nums; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
[data-slot] { position: relative; overflow: hidden; background: linear-gradient(160deg, var(--color-paper-2, var(--color-paper)), var(--color-paper-3, var(--color-paper))); }
[data-slot] > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 1; }
[data-slot]:has(> img) > :not(img):not([data-keep]) { display: none !important; }
@media (max-width: 60rem) { :root { --gutter: 24px; --section-gap-s: 80px; --section-gap: 96px; --section-gap-l: 120px; } }
@media (max-width: 40rem) { :root { --gutter: 16px; --section-gap-s: 56px; --section-gap: 72px; --section-gap-l: 96px; --gap-columns: 16px; } }
@media (prefers-reduced-motion: reduce) { *:not(.keep-motion), *:not(.keep-motion)::before, *:not(.keep-motion)::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; } }
/* photographs: duotone paper accent con=20 */
[data-slot]:has(> img) { isolation: isolate; background: var(--color-accent); outline: 1px solid color-mix(in oklab, var(--color-ink) 8%, transparent); outline-offset: -1px; }
[data-slot] > img { z-index: 0; filter: grayscale(1) contrast(1.2); mix-blend-mode: multiply; }
[data-slot]:has(> img)::before { content: ""; position: absolute; inset: 0; z-index: 1; background: var(--color-paper); mix-blend-mode: lighten; pointer-events: none; }

:root { --container: 1248px; --gutter: 40px; --text-md: 16px; --section-space: 100px; }
body { font-size: 16px; line-height: 1.8; font-variant-numeric: tabular-nums; }
a, button { transition: color 120ms steps(1), background-color 120ms steps(1); }
a:hover { color: var(--color-accent); } a:active,button:active{transform:translateY(1px)}
header { height: 100px; display: flex; align-items: center; gap: 48px; border-bottom: 1px solid var(--color-rule); }
.brand { font-size: 16px; text-decoration: none; color: var(--color-ink); }.brand span { color: var(--color-accent); }
nav { display: flex; gap: 28px; margin-left: auto; }nav a { text-decoration: none; font-size: 12px; }.header-note { font-size: 11px; color: var(--color-muted); padding-left: var(--space-lg); border-left: 1px solid var(--color-rule); }
.hero { min-height: 670px; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; gap: 44px; padding-top: 56px; }.command { font-size: 13px; color: var(--color-ink-2); }.command>span { color: var(--color-muted); margin-right: var(--space-xs); }
h1 { font-size: clamp(48px,5.5vw,72px); line-height: 1.15; margin: var(--space-lg) 0 var(--space-md); font-weight: 500; }.cursor { color: var(--color-accent); animation: cursor 1s steps(1) 5; }.role { color: var(--color-accent); font-size: 16px; }.intro { margin-top: var(--space-md); max-width: 42ch; color: var(--color-ink-2); font-size: 14px; }.actions { display: flex; align-items: center; gap: var(--space-lg); margin-top: 32px; }.button { padding: var(--space-sm) var(--space-md); color: var(--color-accent-ink); background: var(--color-accent); text-decoration: none; font-size: 13px; }.button:hover { background: var(--color-ink); color: var(--color-accent-ink); }.button span{ margin-left:var(--space-md); }.text-link { font-size: 11px; }
.profile-output { margin-top: var(--space-lg); font-size: 12px; }.output-head,.output-foot { display:flex; justify-content:space-between; color:var(--color-muted); font-size:11px; padding:var(--space-md) 0; border-bottom:1px solid var(--color-rule); }.output-foot { border-top:1px solid var(--color-rule); border-bottom:0; }.output-foot span:last-child { color:var(--color-accent); }.career-lines { padding:var(--space-lg) 0; }.career-lines p { padding:var(--space-sm) var(--space-sm); white-space:nowrap; }.career-lines p>span { display:inline-block; margin-right:20px; color:var(--color-muted); }.career-lines .current { color:var(--color-accent); background:var(--color-accent-wash); }.current b { float:right; font-weight:400; }.hero-bottom { grid-column:1/-1; display:flex; justify-content:space-between; align-self:end; padding:var(--space-lg) 0; color:var(--color-muted); border-bottom:1px solid var(--color-rule); font-size:11px; }.hero-bottom a {text-decoration:none;}
.section { padding:var(--section-space) 0; border-bottom:1px solid var(--color-rule); scroll-margin-top:var(--space-lg); }.section-title { display:flex; align-items:baseline; justify-content:space-between; gap:var(--space-lg); margin-bottom:var(--space-xl); }h2 {font-size:26px;line-height:1.4;}h2>span {color:inherit;margin-left:var(--space-xs);}.annotation {font-size:11px;color:var(--color-muted);}.figures {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:48px 0 var(--space-lg);}.figures>div {border-left:1px solid var(--color-rule);padding-left:32px;}.figures>div:first-child {border:0;padding:0;}.figures strong {font-size:clamp(32px,4.5vw,58px);font-weight:400;line-height:1.2;}.figures p {font-size:12px;color:var(--color-muted);margin-top:var(--space-md);}.section-note {font-size:11px;color:var(--color-ink-2);margin-top:36px;}
.job {display:grid;grid-template-columns:1fr 2fr;gap:44px;padding:36px 0;border-top:1px solid var(--color-rule);}.job-meta>span:first-child {color:var(--color-muted);font-size:11px;}h3 {font-size:20px;margin:var(--space-sm) 0;}.job-role{font-size:12px;color:var(--color-accent);}.job-body {font-size:13px;color:var(--color-ink-2);}.job-body ul {padding-left:var(--space-md);margin:var(--space-lg) 0;}.job-body li {padding-left:var(--space-xs);margin-bottom:var(--space-sm);}li::marker{color:var(--color-muted);}details {margin-top:var(--space-lg);border-top:1px solid var(--color-rule);padding-top:var(--space-md);}summary {cursor:pointer;font-size:11px;color:var(--color-ink);width:fit-content;}summary:hover {color:var(--color-accent);}.details-content {padding:var(--space-sm) 0;}h4{font-size:13px;font-weight:500;color:var(--color-ink);margin-bottom:var(--space-xs);}
.two-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:44px;}.two-column h3{margin-top:0;}.two-column article>p:last-child{margin-top:var(--space-lg);color:var(--color-ink-2);font-size:13px;max-width:46ch;}.stack{margin:0;}.stack>div{display:grid;grid-template-columns:1fr 2fr;gap:44px;border-top:1px solid var(--color-rule);padding:var(--space-lg) 0;}.stack dt{color:var(--color-accent);font-size:12px;}.stack dd{margin:0;color:var(--color-ink-2);font-size:13px;}.learning-row{display:flex;gap:var(--space-xl);padding:var(--space-lg) 0;border-top:1px solid var(--color-rule);font-size:13px;}.learning-row>span{color:var(--color-muted);font-size:11px;}small{display:block;color:var(--color-muted);font-size:11px;margin-top:var(--space-xs);}.contact h2{font-size:clamp(28px,4vw,48px);margin:32px 0;line-height:1.3;}.email {font-size:clamp(12px,2.2vw,24px);text-decoration:none;color:var(--color-accent);overflow-wrap:anywhere;}.contact-links {display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-lg);margin-top:32px;font-size:11px;}button{background:var(--color-paper-2);color:var(--color-ink-2);border:1px solid var(--color-rule-2);padding:var(--space-xs) var(--space-sm);cursor:pointer;}button:hover{background:var(--color-paper-3);color:var(--color-accent);}#copy-status{color:var(--color-accent);}footer{display:flex;justify-content:space-between;gap:var(--space-lg);padding:32px 0 var(--space-xl);font-size:10px;color:var(--color-muted);}.skip{position:absolute;transform:translateY(-200%);padding:var(--space-sm);background:var(--color-paper-2);z-index:5;}.skip:focus{transform:translateY(0);}
@keyframes cursor{50%{opacity:0;}100%{opacity:1;}}
@media(prefers-reduced-motion:reduce){.cursor{animation:none;}a,button{transition:none;}}
@media(min-width:1600px){.hero{min-height:740px;}}
@media(max-width:900px){.header-note{display:none;}.hero{gap:var(--space-lg);}.career-lines p{font-size:10px;padding-inline:var(--space-xs);}.career-lines p>span{margin-right:var(--space-xs);}.actions{gap:var(--space-md);}.section-title{align-items:start;flex-direction:column;gap:var(--space-xs);}.job,.stack>div{grid-template-columns:1fr 1.7fr;gap:28px;}}
@media(max-width:640px){:root{--section-space:64px;}header{height:80px;gap:var(--space-md);}.brand{font-size:12px;}nav{gap:var(--space-md);}nav a{font-size:10px;}.hero{grid-template-columns:minmax(0,1fr);padding-top:var(--space-xl);gap:28px;}.hero h1{font-size:60px;}.hero-copy{padding-bottom:var(--space-xs);}.profile-output{margin:var(--space-sm) 0 0;}.career-lines p{font-size:12px;}.hero-bottom{font-size:10px;gap:var(--space-lg);}.hero-bottom>span{max-width:23ch;}.hero-bottom a{white-space:nowrap;}.figures{gap:var(--space-sm);}.figures>div{padding-left:var(--space-sm);}.figures strong{font-size:30px;}.figures p{font-size:10px;}.job,.stack>div,.two-column{grid-template-columns:1fr;gap:var(--space-lg);}.two-column{gap:var(--space-xl);}.job-role{display:block;}.stack>div{gap:var(--space-sm);}h2{font-size:22px;}.learning-row{gap:20px;}footer{flex-direction:column;gap:var(--space-sm);}}
@media print{header,nav,.actions,.hero-bottom,button,.skip{display:none;}.hero{min-height:0;padding:20px 0;}.section{padding:28px 0;}details .details-content{display:block;}.contact{break-inside:avoid;}a{text-decoration:none;}}

button:disabled{background:var(--color-paper);color:var(--color-muted);border-color:var(--color-rule);cursor:not-allowed;}

.career-subtitle { margin-top: var(--space-sm); font-size: 12px; color: var(--color-muted); }
.career-book .section-title { align-items: flex-start; margin-bottom: 32px; }
.career-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--space-md); margin-bottom: var(--space-lg); }
.career-filters { display: flex; flex-wrap: wrap; gap: var(--space-2xs); padding: var(--space-2xs); background: var(--color-paper-2); border: 1px solid var(--color-rule); }
.career-filters[hidden] { display: none; }
.career-filters button { min-height: 40px; padding: var(--space-xs) var(--space-md); background: var(--color-paper-2); border: 1px solid var(--color-paper-2); font-size: 12px; color: var(--color-ink-2); }
.career-filters button:hover { background: var(--color-paper-3); border-color: var(--color-rule-2); }
.career-filters button[aria-pressed="true"] { color: var(--color-accent-ink); background: var(--color-accent); border-color: var(--color-accent); }
.career-count { font-size: 11px; color: var(--color-muted); }
.career-table-scroll { overflow-x: auto; scrollbar-color: var(--color-rule-2) var(--color-paper-2); }
.career-table { width: 100%; min-width: 840px; border-collapse: collapse; table-layout: fixed; text-align: left; border-top: 1px solid var(--color-ink-2); }
.col-period { width: 18%; } .col-company { width: 17%; } .col-role { width: 37%; } .col-focus { width: 28%; }
.career-table th { padding: var(--space-md) var(--space-md); font-size: 11px; font-weight: 400; color: var(--color-muted); background: var(--color-paper-2); border-bottom: 1px solid var(--color-rule-2); }
.career-table td { padding: var(--space-lg) var(--space-md); vertical-align: top; border-bottom: 1px solid var(--color-rule); font-size: 12px; line-height: 1.8; }
.career-table tr:hover { background: var(--color-paper-2); }
.career-period { color: var(--color-muted); font-size: 11px; }
.career-company { color: var(--color-ink-2); }
.career-table details { margin: 0; padding: 0; border: 0; }
.career-table summary { font-size: 12px; line-height: 1.8; padding-right: var(--space-xs); }
.career-table details[open] summary { color: var(--color-accent); }
.career-focus { color: var(--color-muted); }
.career-current { display: block; width: fit-content; padding: var(--space-2xs) var(--space-xs); margin-top: var(--space-sm); color: var(--color-accent); background: var(--color-accent-wash); font-size: 10px; }
.career-detail { padding: var(--space-md) 0 var(--space-2xs); color: var(--color-ink-2); font-size: 12px; }
.career-detail p + p { margin-top: var(--space-sm); }
.career-table-note { display: flex; justify-content: space-between; gap: var(--space-lg); margin-top: var(--space-md); font-size: 10px; color: var(--color-muted); }
.career-table-note p { max-width: 64ch; text-align: right; }
@media (max-width: 640px) {
 .career-filters { width: 100%; }
 .career-filters button { flex: 1; padding: var(--space-xs); font-size: 10px; min-height: 44px; }
 .career-table-note { flex-direction: column; gap: var(--space-xs); }
 .career-table-note p { text-align: left; }
 .career-count { margin-left: auto; }
}
@media print {
 .career-filters, .career-count { display: none; }
 .career-table-scroll { overflow: visible; }
 .career-table { min-width: 0; }
 .career-table td, .career-table summary { font-size: 9px; }
 .career-table tr[hidden] { display: table-row !important; }
}
/* Pre-rendered character portrait; canvas adds pointer highlights on demand. */
.terminal-portrait { position: relative; width: 100%; max-width: 440px; aspect-ratio: 680 / 800; margin: 0; justify-self: end; align-self: center; }
.portrait-fallback { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; }
.portrait-canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; }
.terminal-portrait[data-ready] .portrait-canvas { opacity: 1; }
.terminal-portrait[data-ready] .portrait-fallback { visibility: visible; }
@media (max-width: 640px) { .terminal-portrait { max-width: 360px; justify-self: center; } }
@media print { .portrait-canvas { display: none; } .terminal-portrait[data-ready] .portrait-fallback { visibility: visible; } }
.hero .button, .hero .text-link { white-space: nowrap; }
.hero .actions { flex-wrap: wrap; }
@media (max-width: 640px) {
 :root { --gutter: 20px; }
 .hero h1 { font-size: clamp(40px, 12vw, 60px); }
}
.resume-actions { margin-top: 32px; }
.button-secondary { display: inline-flex; align-items: center; gap: var(--space-md); min-height: 48px; padding: var(--space-sm) var(--space-md); border: 1px solid var(--color-rule-2); background: var(--color-paper-2); color: var(--color-ink); font-size: 12px; text-decoration: none; white-space: nowrap; }
.button-secondary:hover { color: var(--color-accent); background: var(--color-paper-3); border-color: var(--color-accent); }
.download-format { font-size: 10px; color: var(--color-muted); }
.site-footer { display: block; padding-top: 48px; }
.terminal-wordmark { position: relative; width: 100%; aspect-ratio: 7 / 1; margin: 0 0 48px; }
.wordmark-fallback { display: block; color: var(--color-accent); font-size: clamp(28px, 8vw, 104px); font-weight: 700; line-height: 1.3; white-space: nowrap; }
.wordmark-canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; }
.terminal-wordmark[data-ready] .wordmark-canvas { opacity: 1; }
.terminal-wordmark[data-ready] .wordmark-fallback { visibility: hidden; }
.footer-meta { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-lg); }
@media (max-width: 640px) {
 .site-footer { padding-top: 32px; }
 .terminal-wordmark { margin-bottom: 32px; min-height: 64px; }
 .footer-meta { flex-direction: column; gap: var(--space-sm); }
}
@media print {
 .wordmark-canvas { display: none; }
 .terminal-wordmark[data-ready] .wordmark-fallback { visibility: visible; }
}
.career-filters button { min-height: 44px; white-space: nowrap; }
/* The complete character portrait is available before JavaScript initializes. */
html.js .terminal-portrait .portrait-fallback { visibility: visible; }
html.js .terminal-portrait[data-failed] .portrait-fallback { visibility: visible; }
@media print { html.js .terminal-portrait .portrait-fallback { visibility: visible; } }

/* Compact Linux terminal output for career progression. */
.career-journey { padding: 14px 18px; margin-bottom: 24px; border-left: 2px solid var(--color-rule-2); background: var(--color-paper-2); font-family: var(--font-body); font-size: 11px; line-height: 1.9; }
.journey-prompt { margin-bottom: 8px; color: var(--color-ink-2); overflow-wrap: anywhere; }
.journey-prompt > span:first-child { color: var(--color-accent); }
.journey-directory { color: var(--color-muted); }
.journey-track { list-style: none; margin: 0; padding: 0; }
.journey-step { display: flex; align-items: baseline; gap: 10px; min-width: 0; }
.journey-branch { flex-shrink: 0; color: var(--color-muted); white-space: pre; }
.journey-step a { color: var(--color-ink-2); text-decoration: none; padding: 2px 0; }
.journey-step a:hover { color: var(--color-accent); text-decoration: underline; text-underline-offset: 4px; }
.journey-step a:focus-visible { outline: 1px solid var(--color-accent); outline-offset: 3px; }
.journey-current a, .journey-badge { color: var(--color-accent); }
.journey-badge { font-size: 10px; white-space: nowrap; }
.career-role details { scroll-margin-top: 32px; }
@media (max-width: 480px) {
 .career-journey { padding: 12px; font-size: 10px; }
 .journey-step { gap: 7px; flex-wrap: wrap; }
 .journey-badge { font-size: 9px; }
}
@media print { .career-journey { break-inside: avoid; } }

.journey-error { color: #f28b82; overflow-wrap: anywhere; }
.journey-sudo { margin: 6px 0 2px; }
.journey-sudo strong { color: var(--color-accent); font-weight: 500; }


.journey-message { margin-top: 8px; color: var(--color-muted); font-size: 10px; }
@keyframes journey-reveal { from { opacity: 0; } to { opacity: 1; } }
.journey-running [data-journey-line] { animation: journey-reveal 100ms steps(1, end) var(--journey-delay) both; }
@media (prefers-reduced-motion: reduce) { .journey-running [data-journey-line] { animation: none; } }
@media print { .journey-running [data-journey-line] { animation: none; } }

.resume-terminal { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; min-width: 0; }
.resume-comment { color: var(--color-muted); font-size: 10px; line-height: 1.7; }
.resume-command { color: var(--color-accent); border-color: var(--color-rule-2); background: var(--color-accent-wash); gap: 10px; }
.resume-command:hover { border-color: var(--color-accent); }
.resume-command:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
.resume-prompt { color: var(--color-muted); }
.hero .actions { align-items: flex-end; }
@media (max-width: 480px) { .resume-command { font-size: 11px; padding-inline: 12px; } }

.app-download { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 18px; padding: 10px 0; font-size: 11px; color: var(--color-accent); text-decoration: none; }
.app-download > span:first-child, .app-store { color: var(--color-muted); }
.app-download:hover { text-decoration: underline; text-underline-offset: 4px; }
.app-download:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }

.certificate-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 320px)); gap: 20px; }
.certificate-card { display: flex; flex-direction: column; border: 1px solid var(--color-rule-2); background: var(--color-paper-2); color: var(--color-ink); text-decoration: none; overflow: hidden; }
.certificate-bar { display: flex; align-items: center; gap: 8px; padding: 10px 12px; font-size: 10px; color: var(--color-accent); border-bottom: 1px solid var(--color-rule); }
.certificate-bar > span:first-child { color: var(--color-muted); }
.certificate-bar > span:last-child { margin-left: auto; }
.certificate-card img { display: block; width: 100%; height: auto; aspect-ratio: 640 / 452; object-fit: contain; filter: grayscale(1) invert(.88) sepia(.4) saturate(.7) hue-rotate(65deg) brightness(.7) contrast(.95); transition: filter 650ms ease; }
.certificate-info { display: grid; gap: 5px; padding: 12px; }
.certificate-info strong { font-size: 11px; font-weight: 500; }
.certificate-year, .certificate-issuer { font-size: 10px; color: var(--color-muted); line-height: 1.7; }
.certificate-card { transition: border-color 300ms ease; }
.certificate-card:hover { border-color: var(--color-accent); }
@media (hover: hover) { .certificate-card:hover img { filter: none; } }
.certificate-card:focus-visible img { filter: none; }
@media (prefers-reduced-motion: reduce) { .certificate-card, .certificate-card img { transition: none; } }
.certificate-card:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
@media (max-width: 560px) { .certificate-grid { grid-template-columns: minmax(0, 320px); gap: 16px; } }
@media print { .certificate-card { break-inside: avoid; } .certificate-card img { filter: none; } }

/* Image-derived glyphs dissolve into the photograph in a soft radial wave. */
.certificate-surface { display: block; position: relative; overflow: hidden; }
.certificate-reveal-ready .certificate-surface > img:first-child { filter: grayscale(1) invert(.88) sepia(.4) saturate(.7) hue-rotate(65deg) brightness(.7) contrast(.95); transition: none; }
.certificate-glyphs { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
@media print { .certificate-reveal-ready .certificate-surface > img:first-child { filter: none; } .certificate-glyphs { display: none; } }

/* Expanded role notes read like a terminal beneath the complete table row. */
.career-table tr[data-career-category] { cursor: pointer; }
.career-table .role-terminal-row > td { padding: 0 16px 20px; }
.career-table .role-terminal-row[hidden] { display: none; }
.role-terminal { border: 1px solid var(--color-rule-2); border-left: 2px solid var(--color-accent); background: var(--color-paper); padding: 16px 20px; }
.role-terminal-command { font-size: 11px; color: var(--color-ink); margin-bottom: 14px; overflow-wrap: anywhere; }
.role-terminal-command > span:first-child { color: var(--color-accent); }
.role-terminal-output { position: relative; }
.role-terminal .career-detail { padding: 0; font-size: 12px; line-height: 1.8; }
.role-terminal-print { display: none; position: absolute; inset: 0; margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; font-size: 12px; line-height: 1.8; color: var(--color-ink-2); }
.role-terminal-typing .career-detail { opacity: 0; }
.role-terminal-typing .role-terminal-print { display: block; }
.role-terminal-print::after { content: '▌'; color: var(--color-accent); }
@media print {
 .career-table .role-terminal-row { display: table-row !important; }
 .role-terminal-typing .career-detail { opacity: 1; }
 .role-terminal-print { display: none !important; }
}
