jsonresume-theme-tech
Version:
A clean, modern JSON Resume theme tailored for tech professionals, senior engineers, and startup founders
538 lines (453 loc) • 9.11 kB
CSS
/* Palette: navy accents; near-black body/job titles; mid-grey companies; #595959 dates (≥4.5:1 on white). */
:root {
--resume-accent: #1b4f8a;
--resume-body: #1a1a1a;
--resume-secondary: #555555;
--resume-company: #555555;
--resume-date: #595959;
--resume-rule: #1b4f8a;
}
/* Base styles */
body {
background: #ffffff;
font: 11pt/1.15 "Times New Roman", Times, serif;
margin: 20px 0;
color: var(--resume-body);
}
h1,
h2,
h3 {
margin: 0;
font: inherit;
}
em {
color: var(--resume-company);
font-style: italic;
}
strong {
font-weight: bold;
}
p {
line-height: 1.15;
}
p.summaryProse {
margin: 0;
}
ul {
margin-bottom: 0;
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
color: var(--resume-accent);
}
.normal-weight {
font-weight: normal;
}
.projectUrl {
font-weight: normal;
font-size: inherit;
color: var(--resume-company);
}
/* Resume container — no shaded backgrounds */
.resume {
margin: 0 auto;
max-width: 750px;
padding: 20px 30px;
background: #fff;
border: 1px solid #ccc;
box-shadow: 2px 2px 4px #aaa;
-webkit-box-shadow: 2px 2px 4px #aaa;
}
/* Section headings — top border simulates Word paragraph top border; ALL CAPS */
h2.sectionName {
text-align: left;
font-weight: bold;
font-size: 10pt;
line-height: 1.15;
margin-top: 10pt;
margin-bottom: 3pt;
padding-top: 5pt;
border-top: 1.5pt solid var(--resume-rule);
color: var(--resume-accent);
text-transform: uppercase;
letter-spacing: 1pt;
}
.sectionContent {
width: 100%;
margin-top: 0;
}
/* Add spacing after each section except the last one */
.resume > div:not(:last-child) {
margin-bottom: 8px;
}
.skills {
margin-bottom: 6px;
}
/* Allow jobs/education blocks to split across pages (avoid huge gaps when a block
won't fit in the remaining space). Pagination is tuned in @media print below. */
.sectionContent > div {
margin-bottom: 2px;
}
/* Extra breathing room between multiple roles (work) and project entries */
.workBlock .sectionContent > .jobBlock:not(:last-child),
.projects .sectionContent > .projectBlock:not(:last-child) {
margin-bottom: 8pt;
}
/*
* Company / degree + dates: float layout (right edge ≈ Word right-tab), not table/flex.
* Title + date (projects, awards, …): same pattern.
*/
.blockHeader {
display: block;
margin-bottom: 1px;
}
.blockHeader::after,
.metaRow::after {
content: "";
/* Safer clearfix than `display: table` for PDF/ATS extraction */
display: block;
clear: both;
}
.blockHeader.blockHeaderInlineMeta {
display: block;
width: 100%;
overflow: hidden;
}
.blockHeader.blockHeaderInlineMeta h3.title {
float: left;
/* Patents/Projects titles sit left of a long, nowrap dateLine.
Keep the title wide enough to avoid wrapping while still leaving
space for the right-aligned date text. */
max-width: calc(100% - 12em);
padding-right: 0.5em;
min-width: 0;
}
.blockHeader.blockHeaderInlineMeta .dateLine {
float: right;
margin-top: 0;
text-align: right;
white-space: nowrap;
}
.titleGroup {
min-width: 0;
}
.titleGroup h3.title {
padding-right: 0;
}
h3.title {
font-weight: bold;
font-size: 11pt;
color: var(--resume-body);
display: block;
line-height: 1.15;
margin: 0;
padding-right: 0;
}
h3.subSectionName {
font-size: 10.5pt;
font-weight: bold;
margin: 0.75em 0 0.35em 0;
color: var(--resume-body);
}
/* Institution line extras (GPA) — secondary, not job-title weight */
.educationBlock h3.title em {
font-style: italic;
font-weight: normal;
color: var(--resume-secondary);
}
.metaRow {
display: block;
width: 100%;
margin-top: 1px;
overflow: hidden;
}
.metaRow .companyLine,
.metaRow .degree,
.metaRow .position {
float: left;
clear: left;
max-width: calc(100% - 14em);
padding-right: 1em;
min-width: 0;
margin: 0;
text-align: left;
}
.metaRow .dateLine {
float: right;
margin-top: 0;
text-align: right;
white-space: nowrap;
}
.companyLine {
font-size: 11pt;
font-weight: normal;
line-height: 1.15;
margin: 1px 0 0;
color: var(--resume-company);
font-style: normal;
}
.companyLine .companyName {
color: var(--resume-company);
font-style: normal;
}
.dateLine {
white-space: nowrap;
}
.date {
font-weight: normal;
font-size: 11pt;
color: var(--resume-date);
font-style: italic;
}
.metaRow .degree,
.metaRow .degree em {
font-style: normal;
color: var(--resume-company);
}
.position,
.degree {
margin-top: 1px;
margin-bottom: 2px;
}
.phoneLink,
.websiteLink,
.profileLink,
.emailLink {
font-size: inherit;
font-weight: normal;
text-decoration: none;
}
/* Header contact line: all black (location, pipes, phone, email, URLs) */
.basicsBlock .headerContact,
.basicsBlock .headerContact .contactSep,
.basicsBlock .phoneLink,
.basicsBlock .emailLink,
.basicsBlock .websiteLink,
.basicsBlock .profileLink {
color: #000;
}
.basicsBlock .phoneLink:hover,
.basicsBlock .emailLink:hover,
.basicsBlock .websiteLink:hover,
.basicsBlock .profileLink:hover {
color: #000;
text-decoration: none;
}
.summary {
margin-top: 2px;
margin-bottom: 2px;
line-height: 1.15;
}
/* Lists — U+2022 bullet, navy; body text stays near-black */
.sectionContent ul {
list-style: none;
padding-left: 0;
margin-top: 2px;
margin-bottom: 2px;
}
.sectionContent ul > li {
position: relative;
padding-left: 1.15em;
margin-bottom: 1px;
color: var(--resume-body);
}
.sectionContent ul > li::before {
content: "\2022";
position: absolute;
left: 0;
color: var(--resume-accent);
font-weight: normal;
}
.skillBlock {
margin-bottom: 2px;
line-height: 1.15;
}
.skillRow {
display: block;
}
.skillRow b {
font-weight: bold;
color: var(--resume-body);
}
.skillDetailsRow {
display: block;
margin-top: 2px;
padding-left: 0;
}
.separator {
height: 0;
margin-top: 0;
margin-bottom: 0;
overflow: hidden;
}
/* Contact row layout (colour set under .basicsBlock) */
.headerContact {
display: block;
font-size: 11pt;
line-height: 1.15;
}
.headerContact .contactPiece {
display: inline;
white-space: normal;
}
.contactLocation:empty {
display: none;
}
.nameBlock {
font-size: 20pt;
text-align: left;
margin-bottom: 0;
}
h1.name {
font-size: 20pt;
font-weight: bold;
display: block;
color: var(--resume-accent);
letter-spacing: 1.5pt;
}
.label {
font-size: 12pt;
margin-bottom: 0;
margin-top: 2px;
color: var(--resume-secondary);
font-weight: normal;
}
.basicsBlock {
font-size: 11pt;
text-align: left;
margin-top: 2px;
margin-bottom: 3px;
}
.coursesBlock {
margin-top: 2px;
}
ul.coursesList {
display: block;
width: 100%;
margin: 0;
padding-left: 0;
list-style: none;
}
.coursesInline {
margin: 0;
padding: 0;
line-height: 1.15;
}
.course {
display: inline;
margin: 0;
}
.courseSep {
display: inline;
color: var(--resume-accent);
font-weight: normal;
margin: 0 0.15em;
}
.gpa {
margin-bottom: 5px;
font-size: inherit;
}
.publicationBlock {
margin-bottom: 2px;
}
/* Patents: Year + Patent no. on one line, labeled (clear for ATS text extraction). */
.publicationHeader {
display: block;
margin-bottom: 1px;
}
.publicationMeta {
margin-top: 2px;
line-height: 1.15;
}
.publicationMetaLabel {
font-weight: bold;
color: var(--resume-body);
}
.publicationMetaValue {
font-weight: normal;
color: var(--resume-date);
}
.publicationMetaSep {
font-weight: normal;
color: var(--resume-secondary);
}
@media only screen and (max-width: 40em) {
body {
margin: 0;
font-size: 12pt;
}
.resume {
margin: 0 auto;
max-width: 600px;
padding: 0.5em 1em;
border: none;
}
.sectionContent {
width: 100%;
}
h2.sectionName {
width: auto;
}
.nameBlock {
font-size: 18pt;
}
h1.name {
font-size: 18pt;
}
.basicsBlock {
font-size: 12pt;
}
}
@page {
margin: 0.5in;
}
@media print {
body {
background: #ffffff;
color: var(--resume-body);
}
.resume {
margin: 0 auto;
max-width: 750px;
padding: 0px 0px;
border: 0px;
background: #fff;
box-shadow: none;
-webkit-box-shadow: none;
}
a {
text-decoration: none;
}
.basicsBlock .headerContact,
.basicsBlock .headerContact .contactSep,
.basicsBlock .phoneLink,
.basicsBlock .emailLink,
.basicsBlock .websiteLink,
.basicsBlock .profileLink {
color: #000;
}
h2.sectionName {
color: var(--resume-accent);
border-top-color: var(--resume-rule);
letter-spacing: 0;
break-after: avoid;
page-break-after: avoid;
}
h1.name {
color: var(--resume-accent);
}
/* Keep role/company header with the start of its body; bullets may continue on next page. */
.sectionContent > div > .blockHeader,
.sectionContent > div > .publicationHeader {
break-after: avoid;
page-break-after: avoid;
}
/* One bullet = one fragment; breaks between bullets fill the prior page. */
.sectionContent ul > li {
break-inside: avoid;
page-break-inside: avoid;
}
}