.cv-doc{--paper:#fbf8f2;--ink:#17130f;--body:#2c2621;--soft:#62594f;--faint:#8d8378;--rule:#e3dbcf;--accent:#c2772b;--accent-ink:#9b5919;font-family:var(--font-body),-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:9.5pt;line-height:1.33;color:var(--body);font-feature-settings:"ss01","cv11";font-variant-ligatures:no-common-ligatures;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cv-doc a{color:inherit;text-decoration:none}.cv-doc b{font-weight:600;color:var(--ink)}.cv-head{display:grid;grid-template-columns:1fr auto;gap:8mm;align-items:end;padding-bottom:4.2mm;border-bottom:.9pt solid var(--ink)}.cv-name{font-family:var(--font-display),"Times New Roman",serif;font-size:30pt;font-weight:340;font-variation-settings:"opsz" 144,"SOFT" 60,"WONK" 1;letter-spacing:-.032em;line-height:.95;color:var(--ink)}.cv-headline{margin-top:3.2mm;max-width:118mm;font-size:9.6pt;line-height:1.38;color:var(--body)}.cv-headline>span{white-space:nowrap}.cv-sep{color:var(--accent);white-space:normal}.cv-avail{display:flex;align-items:center;gap:2.2mm;margin-top:2.6mm;font-family:var(--font-mono),ui-monospace,monospace;font-size:7.3pt;letter-spacing:.04em;color:var(--soft)}.cv-dot{flex:none;width:5pt;height:5pt;border-radius:50%;background:var(--accent)}.cv-contact{font-family:var(--font-mono),ui-monospace,monospace;font-size:7.4pt;line-height:1.62;letter-spacing:.01em;text-align:right;color:var(--body)}.cv-sec{margin-top:4.1mm}.cv-h2{display:flex;align-items:center;gap:2.6mm;margin-bottom:1.9mm;font-family:var(--font-display),"Times New Roman",serif;font-size:13pt;font-weight:450;font-variation-settings:"opsz" 36,"SOFT" 40,"WONK" 0;letter-spacing:-.012em;line-height:1.1;color:var(--ink);-moz-column-break-after:avoid;break-after:avoid}.cv-h2:before{content:"";flex:none;width:5.5mm;height:1.2pt;background:var(--accent)}.cv-h2:after{content:"";flex:1;height:.5pt;background:var(--rule)}.cv-lede{color:var(--body)}.cv-row{display:flex;align-items:baseline;justify-content:space-between;gap:6mm}.cv-row:not(:last-child){-moz-column-break-after:avoid;break-after:avoid}.cv-range,.cv-stack{flex:none;font-family:var(--font-mono),ui-monospace,monospace;font-size:7.3pt;letter-spacing:.03em;color:var(--soft);font-variant-numeric:tabular-nums;white-space:nowrap}.cv-org{font-size:10.6pt;font-weight:650;letter-spacing:-.005em;color:var(--ink)}.cv-where{font-weight:400;color:var(--soft)}.cv-org .cv-where{margin-left:1.2mm;font-size:9.2pt}.cv-title{font-weight:620;color:var(--ink)}.cv-runin{font-weight:600}.cv-note{color:var(--soft)}.cv-entry{margin-top:2.3mm;-moz-column-break-inside:avoid;break-inside:avoid}.cv-track{margin-top:2.2mm;margin-left:1.3mm;padding-left:4.2mm;border-left:.8pt solid color-mix(in srgb,var(--accent) 55%,transparent)}.cv-role+.cv-role{margin-top:2.6mm}.cv-role .cv-title{position:relative}.cv-role .cv-title:before{content:"";position:absolute;left:calc(-4.2mm - .4pt - 2.6pt);top:.48em;width:5.2pt;height:5.2pt;border-radius:50%;background:var(--accent);box-shadow:0 0 0 1.6pt var(--paper)}.cv-bullets{margin-top:.8mm}.cv-bullets li{position:relative;padding-left:3.4mm;-moz-column-break-inside:avoid;break-inside:avoid}.cv-bullets li+li{margin-top:.55mm}.cv-bullets li:before{content:"";position:absolute;left:.2mm;top:.7em;width:1.7mm;height:.8pt;background:var(--faint)}.cv-proj{margin-top:1.9mm}.cv-pname{font-weight:650;color:var(--ink)}.cv-doc .cv-url{font-size:7.4pt;letter-spacing:.02em;color:var(--accent-ink)}.cv-doc .cv-url,.cv-tag{margin-left:1.2mm;font-family:var(--font-mono),ui-monospace,monospace;font-weight:400}.cv-tag{font-size:7pt;letter-spacing:.08em;text-transform:uppercase;color:#6e655b}.cv-more{margin-top:2.6mm;color:var(--body)}.cv-more-label{font-weight:620;color:var(--ink)}.cv-fig{font-variant-numeric:tabular-nums}.cv-skills{display:grid;row-gap:1.3mm}.cv-skill{display:grid;grid-template-columns:38mm 1fr;-moz-column-gap:4mm;column-gap:4mm;-moz-column-break-inside:avoid;break-inside:avoid}.cv-skill dt{font-weight:620;color:var(--ink)}.cv-langs .cv-sep{margin:0 .6mm}@media screen{.cv-contact a{display:inline-block;padding-block:5px}body:has(.cv-doc)>.vignette{display:none}.cv-page{padding:28px 16px 72px}.cv-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;max-width:210mm;margin:0 auto 18px;font-family:var(--font-mono),ui-monospace,monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute)}.cv-bar a{padding:6px 0;transition:color .2s ease}.cv-bar a:hover{color:var(--ink)}.cv-bar-accent{color:var(--accent)}.cv-doc{max-width:210mm;min-height:297mm;margin:0 auto;padding:13mm 14mm 14mm;background:var(--paper);border-radius:2px;box-shadow:0 0 0 1px rgba(245,239,230,.06),0 40px 90px -30px rgba(0,0,0,.75),0 18px 36px -12px rgba(0,0,0,.6)}.cv-doc ::-moz-selection{background:#f0d6b8;color:var(--ink)}.cv-doc ::selection{background:#f0d6b8;color:var(--ink)}.cv-doc a:hover{color:var(--accent-ink)}@media (min-width:1200px){.cv-bar,.cv-doc{zoom:1.15}}@media (min-width:1700px){.cv-bar,.cv-doc{zoom:1.3}}@media (max-width:820px){.cv-page{padding:20px 16px 56px}.cv-bar{font-size:10px;letter-spacing:.16em}.cv-doc{min-height:0;padding:26px 18px 30px;font-size:10.5pt}.cv-head{grid-template-columns:1fr;gap:14px;align-items:start}.cv-contact{text-align:left;font-size:8pt;overflow-wrap:anywhere}.cv-name{font-size:26pt}.cv-headline>span{white-space:normal}.cv-row{flex-wrap:wrap;-moz-column-gap:10px;column-gap:10px;row-gap:1px}.cv-stack{flex:1 1 100%;white-space:normal}.cv-skills{row-gap:10px}.cv-skill{grid-template-columns:1fr}}}@page{size:A4;margin:12mm 12.5mm 12.5mm;@bottom-left{content:"Angelo Shaheen — CV · angeloshaheen.com/cv";font-family:JetBrains Mono,ui-monospace,monospace;font-size:6.5pt;letter-spacing:.06em;color:#8d8378;vertical-align:top;padding-top:3.5mm}@bottom-right{content:counter(page) " / " counter(pages);font-family:JetBrains Mono,ui-monospace,monospace;font-size:6.5pt;letter-spacing:.06em;color:#8d8378;vertical-align:top;padding-top:3.5mm}}@media print{body:has(.cv-doc),html:has(.cv-doc){background:#fff;color:#17130f;color-scheme:light}.cv-bar,.skip-link,body:has(.cv-doc) nav,body:has(.cv-doc)>.grain,body:has(.cv-doc)>.vignette,body:has(.cv-doc)>footer{display:none}.cv-doc{--paper:#fff;background:#fff}}.cv-langs>span{white-space:nowrap}