REMOVE /old
@ -1,47 +0,0 @@
|
||||
module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks('grunt-exec');
|
||||
require('load-grunt-tasks')(grunt);
|
||||
grunt.initConfig({
|
||||
babel: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
presets: ['es2015']
|
||||
},
|
||||
dist: {
|
||||
files: {
|
||||
'public/js/gen/javascript.js': 'public/js/javascript.js'
|
||||
}
|
||||
}
|
||||
},
|
||||
exec: {
|
||||
less: 'node --harmony-async-await src/app.js less',
|
||||
wait: 'node --harmony-async-await src/app.js wait'
|
||||
},
|
||||
bgShell: {
|
||||
_defaults: {
|
||||
bg: true
|
||||
},
|
||||
express: {
|
||||
cmd: 'npm run server'
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
app: {
|
||||
files: [
|
||||
'public/js/javascript.js',
|
||||
'src/**/*.js',
|
||||
'resumes/**/*.mustache',
|
||||
'resumes/**/*.less',
|
||||
'less/**/*.less'
|
||||
],
|
||||
tasks: ['exec:less', 'babel', 'bgShell:express', 'exec:wait'],
|
||||
options: {
|
||||
nospawn: false,
|
||||
livereload: true
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['babel', 'exec:less', 'bgShell:express', 'exec:wait', 'watch']);
|
||||
};
|
||||
@ -1,23 +0,0 @@
|
||||
module.exports = function (grunt) {
|
||||
grunt.loadNpmTasks('grunt-exec');
|
||||
require('load-grunt-tasks')(grunt);
|
||||
grunt.initConfig({
|
||||
babel: {
|
||||
options: {
|
||||
sourceMap: true,
|
||||
presets: ['es2015']
|
||||
},
|
||||
dist: {
|
||||
files: {
|
||||
'public/js/gen/javascript.js': 'public/js/javascript.js'
|
||||
}
|
||||
}
|
||||
},
|
||||
exec: {
|
||||
less: 'node --harmony-async-await src/app.js less',
|
||||
pdf: 'node --harmony-async-await src/app.js pdf'
|
||||
}
|
||||
});
|
||||
|
||||
grunt.registerTask('default', ['babel', 'exec:less', 'exec:pdf']);
|
||||
};
|
||||
@ -1,59 +0,0 @@
|
||||
# best-resume-ever
|
||||
|
||||
Build your best resume ever!
|
||||
|
||||
A collection of multiple beautiful resumes build with LESS and Mustache Templates. Add your personal information to a JSON-File and easily export all of the Curriculum Vitaes as PDF!
|
||||
|
||||
|
||||
|
||||
|
||||
## Resumes
|
||||
|
||||
<a href="public/preview/resume-material-blue.png"><img src="public/preview/resume-material-blue.png" width="150"/></a>
|
||||
<a href="public/preview/resume-material-dark.png"><img src="public/preview/resume-material-dark.png" width="150"/></a>
|
||||
<a href="public/preview/resume-left-right.png"><img src="public/preview/resume-left-right.png" width="150"/></a>
|
||||
<a href="public/preview/resume-side-bar.png"><img src="public/preview/resume-side-bar.png" width="150"/></a>
|
||||
<a href="public/preview/resume-oblique.png"><img src="public/preview/resume-oblique.png" width="150"/></a>
|
||||
<a href="public/preview/resume-grey-boxes.png"><img src="public/preview/resume-grey-boxes.png" width="150"/></a>
|
||||
|
||||
|
||||
|
||||
## Getting Started
|
||||
|
||||
Follow these instructions to set up this project and create your own CV.
|
||||
|
||||
|
||||
|
||||
### Prerequisites
|
||||
|
||||
To run this project, please install node. (See https://nodejs.org/en/download/package-manager/ and https://nodejs.org/en/download/)
|
||||
|
||||
|
||||
|
||||
### Installation
|
||||
|
||||
- Clone this repository.
|
||||
- Switch to project directory and run `npm install`.
|
||||
|
||||
|
||||
|
||||
### Adjusting your personal information
|
||||
|
||||
- Adjust your personal information in `/src/person.js`.
|
||||
- Replace placeholder image `/public/person.jpg` with your portrait.
|
||||
- To preview your CV run `npm run dev`. Check out <http://localhost:3000>.
|
||||
|
||||
The app recompiles automatically. This may take a short while. Feel free to adjust stylings to fit your needs!
|
||||
|
||||
|
||||
|
||||
### Exporting resumes as PDF
|
||||
|
||||
With `npm run pdf` the resumes can be exported. You will find all resumes as PDFs in `/pdf`.
|
||||
|
||||
|
||||
|
||||
## Configuration and Contribution
|
||||
|
||||
Please read [the guide](/docs/Docs.md) on how to configure page size, stylings and adding your own templates.
|
||||
Feel free to create your own templates or help in fixing issues.
|
||||
@ -1 +0,0 @@
|
||||
theme: jekyll-theme-cayman
|
||||
111
old/docs/Docs.md
@ -1,111 +0,0 @@
|
||||
# Docs
|
||||
|
||||
- [Adjusting stylings and layout](#adjusting-stylings-and-layout)
|
||||
- [Generating PDFs](#generating-pdfs)
|
||||
- [Adding a template](#adding-a-template)
|
||||
- [Icons](#icons)
|
||||
- [CSS3 Box-Shadows](#css3-box-shadows)
|
||||
- [Adding fonts](#adding-fonts)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Adjusting stylings and layout
|
||||
|
||||
This project uses LESS. Under `/less` global stylings are defined. You will find here imported fonts and the page layout.
|
||||
|
||||
Each resume has its own directory. For example 'resume-X' would be under `/resumes/resume-X`. Each resume directory contains a Mustache template and a less-file.
|
||||
|
||||
|
||||
|
||||
|
||||
## Generating PDFs
|
||||
|
||||
[electroshot](https://github.com/mixu/electroshot) is used to generate PDFs. `convertToPdf()` in `/src/htmlToPdf.js` runs a short bash script for each resume running under `localhost:3000/resumes/resume-X`. By default the PDF size is A4. For more PDF settings check [mixu/electroshot](https://github.com/mixu/electroshot).
|
||||
|
||||
|
||||
|
||||
|
||||
## Adding a template
|
||||
|
||||
Follow these steps:
|
||||
- add folder in resumes, convention: 'resume-X'
|
||||
- add `style.less` and `index.mustache` with same naming inside new folder
|
||||
|
||||
Sample content of `index.mustache`:
|
||||
```html
|
||||
<page class="a4">
|
||||
<div id="resume1" class="resume">
|
||||
<!-- Content goes here -->
|
||||
</div>
|
||||
</page>
|
||||
```
|
||||
|
||||
If you want fonts to adjust, according to the personal information, just add the attribute `autofont` to the resume-div:
|
||||
|
||||
```html
|
||||
<div id="resume1" class="resume" autofont>
|
||||
<!-- Content goes here -->
|
||||
</div>
|
||||
```
|
||||
|
||||
For further reference, check out existing templates.
|
||||
|
||||
|
||||
|
||||
|
||||
## Icons
|
||||
|
||||
This project contains the [Google Material](https://material.io/icons/) and [fontawesome](http://fontawesome.io/icons/) icon sets.
|
||||
|
||||
|
||||
|
||||
|
||||
## CSS3 Box-Shadows
|
||||
|
||||
Due to this [Chrome bug](http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome), CSS3 box-shadows are not rendered properly in the PDF files. The solution is to add this styling to elements with box-shadows:
|
||||
|
||||
```css
|
||||
-webkit-print-color-adjust:exact;
|
||||
-webkit-filter:opacity(1);
|
||||
```
|
||||
|
||||
Unfortunately, fonts and images get blurred and lose quality. Therefore `fixBoxShadows()` in `/src/javascript.js` fixes this bug, by
|
||||
|
||||
1. searching for all elements with a box-shadow,
|
||||
2. removing the box-shadow,
|
||||
3. adding a new and absolute positioned element (with same size, position, border-radius and box-shadow) to the HTMl body,
|
||||
4. and adding the stylings for `-webkit-print-color-adjust` and `-webkit-filter` to the new element.
|
||||
|
||||
If shadows may be displayed wrong, please check that the element with a box-shadow has a proper height, width and positioning.
|
||||
|
||||
|
||||
|
||||
|
||||
## Adding fonts
|
||||
|
||||
To add a font to the project, search for the npm-module of the desired font, e.g. [roboto-fontface](https://www.npmjs.com/package/roboto-fontface) for 'Roboto'. Add dependency to `package.json` with `npm i --save`, e.g. `npm i --save roboto-fontface`.
|
||||
|
||||
Create a new less file in `/less/fonts`, e.g. 'roboto.less'. `/node_modules` are accessable through localhost:3000. That means if the corresponding woff-file is under `/node_modules/roboto-fontface/anyFont.woff` the source url needs to equal `/roboto-fontface/anyFont.woff`:
|
||||
|
||||
```less
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Thin.eot');
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.ttf') format('truetype')
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
```
|
||||
|
||||
Import new less file in `/less/fonts.less`:
|
||||
|
||||
```less
|
||||
@import "fonts/opensans.less";
|
||||
@import "fonts/montserrat.less";
|
||||
@import "fonts/raleway.less";
|
||||
@import "fonts/opensans-condensed.less";
|
||||
@import "fonts/material-design-icons.less";
|
||||
@import "fonts/roboto.less";
|
||||
```
|
||||
@ -1 +0,0 @@
|
||||
[{"url":"http://localhost:3000/resume-material-dark","delay":0,"selector":"","zoom-factor":1,"format":"pdf","quality":75,"user-agent":"","latency":null,"download":null,"upload":null,"css":"","js":"","debug":false,"root":"","pdf":{"pageSize":"A4","marginsType":1,"printBackground":true,"landscape":false},"size":{"width":2481,"height":3508},"out":"/home/s/workspace/best-resume-ever/pdf/resume-material-dark.pdf"}]
|
||||
@ -1,38 +0,0 @@
|
||||
module.exports = {
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es6": true,
|
||||
"node": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 2017,
|
||||
"sourceType": "module"
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4, {
|
||||
"SwitchCase": 1
|
||||
}
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"single"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"no-console": [
|
||||
"error",
|
||||
{
|
||||
allow: ["warn", "error", "log"]
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
@ -1,183 +0,0 @@
|
||||
/**
|
||||
* gets all DOM-elements on page
|
||||
* @return {HTMLElement[]} DOM-elements
|
||||
*/
|
||||
const getAllDOMElements = () => {
|
||||
return document.getElementsByTagName('*');
|
||||
};
|
||||
|
||||
/**
|
||||
* gets DOM-element of #resumeX
|
||||
* @param {HTMLElement} page
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
const getResumeDOMElement = page => {
|
||||
return page.children[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* returns DOM-element of <page></page>
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
const getPageDOMElement = () => {
|
||||
console.dir(document.getElementsByClassName('page'));
|
||||
return document.getElementsByClassName('page')[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether auto-font adjustment is enabled for resume
|
||||
* @param {HTMLElement} resume
|
||||
* @return {boolean}
|
||||
*/
|
||||
const autoFontEnabled = resume => {
|
||||
return resume.hasAttribute('autofont');
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether content is greater than page
|
||||
* @param {HTMLElement} resume
|
||||
* @param {HTMLElement} page
|
||||
* @return {boolean} false if content fits to page
|
||||
*/
|
||||
const contentIsGreaterThanPage = (resume, page) => {
|
||||
const pageHeight = page.offsetHeight;
|
||||
const resumeHeight = resume.offsetHeight;
|
||||
if (pageHeight < resumeHeight) return true;
|
||||
else return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* gets font size of DOM-elemnt
|
||||
* @param {HTMLElement} element
|
||||
* @return {number} font size of element
|
||||
*/
|
||||
const getFontSizeOfElement = element => {
|
||||
const style = window.getComputedStyle(element, null).getPropertyValue('font-size');
|
||||
return parseFloat(style);
|
||||
};
|
||||
|
||||
/**
|
||||
* calculates new font size of all DOM-elements
|
||||
* @param {HTMLElement[]}
|
||||
*/
|
||||
const calcNewFontSizes = elements => {
|
||||
return elements
|
||||
.map(el => getFontSizeOfElement(el) * 0.99);
|
||||
};
|
||||
|
||||
/**
|
||||
* checks if DOM-element has box-shadow
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} '' if no shadow, otherwise shadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
const hasBoxShadow = element => {
|
||||
const style = window
|
||||
.getComputedStyle(element, null)
|
||||
.getPropertyValue('box-shadow');
|
||||
if (style !== 'none') return style;
|
||||
else return '';
|
||||
};
|
||||
|
||||
/**
|
||||
* gets absolute position of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {{}}
|
||||
*/
|
||||
const getAbsolutePositionOfElement = element => {
|
||||
return {
|
||||
top: element.getBoundingClientRect().top,
|
||||
left: element.getBoundingClientRect().left
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* gets border radius of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} e.g. '50%'
|
||||
*/
|
||||
const getBorderRadiusOfElement = element => {
|
||||
return window
|
||||
.getComputedStyle(element, null)
|
||||
.getPropertyValue('border-radius');
|
||||
};
|
||||
|
||||
/**
|
||||
* adds new box shadow
|
||||
* @param {HTMLElement} element
|
||||
* @param {{}} position e.g. { left: 10, top: 100}
|
||||
* @param {string} boxShadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
const addNewBoxShadow = (element, position, boxShadow) => {
|
||||
let div = document.createElement('div');
|
||||
div.style.height = element.offsetHeight;
|
||||
div.style.width = element.offsetWidth;
|
||||
div.style.borderRadius = getBorderRadiusOfElement(element);
|
||||
div.style.position = 'absolute';
|
||||
div.style.boxShadow = boxShadow;
|
||||
div.style.webkitPrintColorAdjust = 'exact';
|
||||
div.style.webkitFilter = 'opacity(1)';
|
||||
div.style.top = position.top;
|
||||
div.style.left = position.left;
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
};
|
||||
|
||||
/**
|
||||
* gets all elements with shadows
|
||||
* @param {HTMLElement[]} elements on page
|
||||
* @return {HTMLElement[]} elements with shadows
|
||||
*/
|
||||
const getElementsWithShadows = elements => {
|
||||
const ar = [].slice.call(elements);
|
||||
return ar
|
||||
.filter(el => hasBoxShadow(el) !== '')
|
||||
.map(el => {
|
||||
return {
|
||||
element: el,
|
||||
shadow: hasBoxShadow(el)
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* fixes shadows, since normal box-shadow cannot be printed in chrome,
|
||||
* see: http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome
|
||||
*/
|
||||
const fixBoxShadows = () => {
|
||||
const elements = getAllDOMElements();
|
||||
const elementsWithShadow = getElementsWithShadows(elements);
|
||||
elementsWithShadow.forEach(element => {
|
||||
const position = getAbsolutePositionOfElement(element.element);
|
||||
element.element.style.boxShadow = 'none';
|
||||
addNewBoxShadow(element.element, position, element.shadow);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether font needs to be fixed, and if fixes it
|
||||
*/
|
||||
const checkFont = () => {
|
||||
const page = getPageDOMElement();
|
||||
console.dir(page);
|
||||
const resume = getResumeDOMElement(page);
|
||||
const fixFont = (resume, page) => {
|
||||
const elements = getAllDOMElements();
|
||||
const elementsAr = [].slice.call(elements);
|
||||
const newFontSizes = calcNewFontSizes(elementsAr);
|
||||
elementsAr.forEach((el, i) => (el.style.fontSize = newFontSizes[i] + 'px'));
|
||||
if (contentIsGreaterThanPage(resume, page)) fixFont(resume, page);
|
||||
};
|
||||
if (
|
||||
autoFontEnabled(resume) &&
|
||||
contentIsGreaterThanPage(resume, page)
|
||||
) fixFont(resume, page);
|
||||
};
|
||||
|
||||
/**
|
||||
* fixes resume
|
||||
*/
|
||||
export const fixResume = () => {
|
||||
checkFont();
|
||||
fixBoxShadows();
|
||||
};
|
||||
|
||||
fixResume();
|
||||
@ -1,9 +0,0 @@
|
||||
@import "fonts/opensans.less";
|
||||
@import "fonts/montserrat.less";
|
||||
@import "fonts/raleway.less";
|
||||
@import "fonts/opensans-condensed.less";
|
||||
@import "fonts/material-design-icons.less";
|
||||
@import "fonts/roboto.less";
|
||||
@import "fonts/roboto-condensed.less";
|
||||
@import "fonts/roboto-slab.less";
|
||||
@import "fonts/chivo.less";
|
||||
@ -1,119 +0,0 @@
|
||||
/* chivo-300normal - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
src: url('/typeface-chivo/files/chivo-latin-300.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Light '),
|
||||
local('Chivo-Light'),
|
||||
url('/typeface-chivo/files/chivo-latin-300.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-300.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-300.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-300.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-300italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
src: url('/typeface-chivo/files/chivo-latin-300italic.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Light italic'),
|
||||
local('Chivo-Lightitalic'),
|
||||
url('/typeface-chivo/files/chivo-latin-300italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-300italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-300italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-300italic.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-400normal - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('/typeface-chivo/files/chivo-latin-400.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Regular '),
|
||||
local('Chivo-Regular'),
|
||||
url('/typeface-chivo/files/chivo-latin-400.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-400.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-400.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-400.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-400italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
src: url('/typeface-chivo/files/chivo-latin-400italic.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Regular italic'),
|
||||
local('Chivo-Regularitalic'),
|
||||
url('/typeface-chivo/files/chivo-latin-400italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-400italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-400italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-400italic.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-700italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
src: url('/typeface-chivo/files/chivo-latin-700italic.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Bold italic'),
|
||||
local('Chivo-Bolditalic'),
|
||||
url('/typeface-chivo/files/chivo-latin-700italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-700italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-700italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-700italic.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-900normal - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('/typeface-chivo/files/chivo-latin-900.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Black '),
|
||||
local('Chivo-Black'),
|
||||
url('/typeface-chivo/files/chivo-latin-900.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-900.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-900.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-900.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-700normal - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
src: url('/typeface-chivo/files/chivo-latin-700.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Bold '),
|
||||
local('Chivo-Bold'),
|
||||
url('/typeface-chivo/files/chivo-latin-700.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-700.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-700.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-700.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
|
||||
/* chivo-900italic - latin */
|
||||
@font-face {
|
||||
font-family: 'Chivo';
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
src: url('/typeface-chivo/files/chivo-latin-900italic.eot'); /* IE9 Compat Modes */
|
||||
src:
|
||||
local('Chivo Black italic'),
|
||||
local('Chivo-Blackitalic'),
|
||||
url('/typeface-chivo/files/chivo-latin-900italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
|
||||
url('/typeface-chivo/files/chivo-latin-900italic.woff2') format('woff2'), /* Super Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-900italic.woff') format('woff'), /* Modern Browsers */
|
||||
url('/typeface-chivo/files/chivo-latin-900italic.svg#chivo') format('svg'); /* Legacy iOS */
|
||||
}
|
||||
@ -1,31 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'Material Icons';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url("/material-design-icons/iconfont/MaterialIcons-Regular.eot");
|
||||
/* For IE6-8 */
|
||||
src: local('Material Icons'), local('MaterialIcons-Regular'), url("/material-design-icons/iconfont/MaterialIcons-Regular.woff2") format('woff2'), url("/material-design-icons/iconfont/MaterialIcons-Regular.woff") format('woff'), url("/material-design-icons/iconfont/MaterialIcons-Regular.ttf") format('truetype');
|
||||
}
|
||||
|
||||
.material-icons {
|
||||
font-family: 'Material Icons';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-size: 24px;
|
||||
/* Preferred icon size */
|
||||
display: inline-block;
|
||||
line-height: 1;
|
||||
text-transform: none;
|
||||
letter-spacing: normal;
|
||||
word-wrap: normal;
|
||||
white-space: nowrap;
|
||||
direction: ltr;
|
||||
/* Support for all WebKit browsers. */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
/* Support for Safari and Chrome. */
|
||||
text-rendering: optimizeLegibility;
|
||||
/* Support for Firefox. */
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
/* Support for IE. */
|
||||
font-feature-settings: 'liga';
|
||||
}
|
||||
@ -1,70 +0,0 @@
|
||||
/* TypoPRO Montserrat Black */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-Montserrat-Black.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Black.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Black.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Black.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat Bold */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-Montserrat-Bold.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Bold.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Bold.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Bold.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat Light */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-Montserrat-Light.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Light.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Light.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Light.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-Montserrat-Regular.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Regular.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Regular.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Regular.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat Hairline */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-Montserrat-Thin.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Thin.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Thin.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-Montserrat-Thin.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat Alternates */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat Alternates';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Bold.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Bold.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Bold.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Bold.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
/* TypoPRO Montserrat Alternates */
|
||||
@font-face {
|
||||
font-family: 'TypoPRO Montserrat Alternates';
|
||||
src: url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Regular.eot');
|
||||
src: local('*'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Regular.eot?#iefix') format('embedded-opentype'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Regular.woff') format('woff'), url('/@typopro/web-montserrat/TypoPRO-MontserratAlternates-Regular.ttf') format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-stretch: normal;
|
||||
font-variant: normal;
|
||||
}
|
||||
@ -1,22 +0,0 @@
|
||||
@FontPathOpenSansCondensed: "/npm-font-open-sans-condensed/fonts";
|
||||
@font-face {
|
||||
font-family: 'Open Sans Condensed';
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condlight.eot');
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condlight.eot?#iefix') format('embedded-opentype'), url('@{FontPathOpenSansCondensed}/opensans-condlight.woff') format('woff'), url('@{FontPathOpenSansCondensed}/opensans-condlight.ttf') format('truetype'), url('@{FontPathOpenSansCondensed}/opensans-condlight.svg#OpenSansCondensedLight') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Open Sans Condensed';
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condlightitalic.eot');
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condlightitalic.eot?#iefix') format('embedded-opentype'), url('@{FontPathOpenSansCondensed}/opensans-condlightitalic.woff') format('woff'), url('@{FontPathOpenSansCondensed}/opensans-condlightitalic.ttf') format('truetype'), url('@{FontPathOpenSansCondensed}/opensans-condlightitalic.svg#OpenSansCondensedLightItalic') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Open Sans Condensed';
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condbold.eot');
|
||||
src: url('@{FontPathOpenSansCondensed}/opensans-condbold.eot?#iefix') format('embedded-opentype'), url('@{FontPathOpenSansCondensed}/opensans-condbold.woff') format('woff'), url('@{FontPathOpenSansCondensed}/opensans-condbold.ttf') format('truetype'), url('@{FontPathOpenSansCondensed}/opensans-condbold.svg#OpenSansCondensedBold') format('svg');
|
||||
}
|
||||
@ -1,92 +0,0 @@
|
||||
/* Open Sans @font-face kit */
|
||||
@OpenSansPath: "/open-sans-fontface/fonts";
|
||||
/* BEGIN Light */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/Light/OpenSans-Light.eot');
|
||||
src: url('@{OpenSansPath}/Light/OpenSans-Light.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/Light/OpenSans-Light.woff') format('woff'), url('@{OpenSansPath}/Light/OpenSans-Light.ttf') format('truetype'), url('@{OpenSansPath}/Light/OpenSans-Light.svg#OpenSansLight') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Light */
|
||||
/* BEGIN Light Italic */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.eot');
|
||||
src: url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.woff') format('woff'), url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.ttf') format('truetype'), url('@{OpenSansPath}/LightItalic/OpenSans-LightItalic.svg#OpenSansLightItalic') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Light Italic */
|
||||
/* BEGIN Regular */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/Regular/OpenSans-Regular.eot');
|
||||
src: url('@{OpenSansPath}/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/Regular/OpenSans-Regular.woff') format('woff'), url('@{OpenSansPath}/Regular/OpenSans-Regular.ttf') format('truetype'), url('@{OpenSansPath}/Regular/OpenSans-Regular.svg#OpenSansRegular') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Regular */
|
||||
/* BEGIN Italic */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/Italic/OpenSans-Italic.eot');
|
||||
src: url('@{OpenSansPath}/Italic/OpenSans-Italic.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/Italic/OpenSans-Italic.woff') format('woff'), url('@{OpenSansPath}/Italic/OpenSans-Italic.ttf') format('truetype'), url('@{OpenSansPath}/Italic/OpenSans-Italic.svg#OpenSansItalic') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Italic */
|
||||
/* BEGIN Semibold */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/Semibold/OpenSans-Semibold.eot');
|
||||
src: url('@{OpenSansPath}/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/Semibold/OpenSans-Semibold.woff') format('woff'), url('@{OpenSansPath}/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('@{OpenSansPath}/Semibold/OpenSans-Semibold.svg#OpenSansSemibold') format('svg');
|
||||
font-weight: 600;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Semibold */
|
||||
/* BEGIN Semibold Italic */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot');
|
||||
src: url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.woff') format('woff'), url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.ttf') format('truetype'), url('@{OpenSansPath}/SemiboldItalic/OpenSans-SemiboldItalic.svg#OpenSansSemiboldItalic') format('svg');
|
||||
font-weight: 600;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Semibold Italic */
|
||||
/* BEGIN Bold */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/Bold/OpenSans-Bold.eot');
|
||||
src: url('@{OpenSansPath}/Bold/OpenSans-Bold.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/Bold/OpenSans-Bold.woff') format('woff'), url('@{OpenSansPath}/Bold/OpenSans-Bold.ttf') format('truetype'), url('@{OpenSansPath}/Bold/OpenSans-Bold.svg#OpenSansBold') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Bold */
|
||||
/* BEGIN Bold Italic */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot');
|
||||
src: url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.woff') format('woff'), url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.ttf') format('truetype'), url('@{OpenSansPath}/BoldItalic/OpenSans-BoldItalic.svg#OpenSansBoldItalic') format('svg');
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Bold Italic */
|
||||
/* BEGIN Extrabold */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot');
|
||||
src: url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.woff') format('woff'), url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.ttf') format('truetype'), url('@{OpenSansPath}/ExtraBold/OpenSans-ExtraBold.svg#OpenSansExtrabold') format('svg');
|
||||
font-weight: 800;
|
||||
font-style: normal;
|
||||
}
|
||||
/* END Extrabold */
|
||||
/* BEGIN Extrabold Italic */
|
||||
@font-face {
|
||||
font-family: 'Open Sans';
|
||||
src: url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot');
|
||||
src: url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.eot?#iefix') format('embedded-opentype'), url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.woff') format('woff'), url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.ttf') format('truetype'), url('@{OpenSansPath}/ExtraBoldItalic/OpenSans-ExtraBoldItalic.svg#OpenSansExtraboldItalic') format('svg');
|
||||
font-weight: 800;
|
||||
font-style: italic;
|
||||
}
|
||||
/* END Extrabold Italic */
|
||||
@ -1,127 +0,0 @@
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Thin.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Thin-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 100;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-ExtraLight.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 200;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-ExtraLight-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 200;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Light.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Light-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Regular.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Regular-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 400;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Medium.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Medium-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 500;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-SemiBold.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 600;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-SemiBold-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 600;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Bold.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Bold-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-ExtraBold.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 800;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-ExtraBold-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 800;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Black.ttf") format('truetype');
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
@font-face {
|
||||
font-family: Raleway;
|
||||
src: url("/raleway-webfont/fonts/Raleway-Black-Italic.ttf") format('truetype');
|
||||
font-style: italic;
|
||||
font-weight: 900;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
/*# sourceMappingURL=raleway.min.css.map */
|
||||
@ -1,72 +0,0 @@
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.eot");
|
||||
src: local("Roboto-Condensed Regular"), local("Roboto-Condensed-Regular"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-Regular";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-Regular.eot");
|
||||
src: local("Roboto-Condensed Regular"), local("Roboto-Condensed-Regular"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Regular.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.eot");
|
||||
src: local("Roboto-Condensed RegularItalic"), local("Roboto-Condensed-RegularItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-RegularItalic";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-RegularItalic.eot");
|
||||
src: local("Roboto-Condensed RegularItalic"), local("Roboto-Condensed-RegularItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-RegularItalic.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.eot");
|
||||
src: local("Roboto-Condensed Light"), local("Roboto-Condensed-Light"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-Light";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-Light.eot");
|
||||
src: local("Roboto-Condensed Light"), local("Roboto-Condensed-Light"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Light.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.eot");
|
||||
src: local("Roboto-Condensed LightItalic"), local("Roboto-Condensed-LightItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-LightItalic";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-LightItalic.eot");
|
||||
src: local("Roboto-Condensed LightItalic"), local("Roboto-Condensed-LightItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-LightItalic.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.eot");
|
||||
src: local("Roboto-Condensed Bold"), local("Roboto-Condensed-Bold"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-Bold";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-Bold.eot");
|
||||
src: local("Roboto-Condensed Bold"), local("Roboto-Condensed-Bold"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-Bold.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.eot");
|
||||
src: local("Roboto-Condensed BoldItalic"), local("Roboto-Condensed-BoldItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.svg#Roboto-Condensed") format("svg");
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: "Roboto-Condensed-BoldItalic";
|
||||
src: url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed/Roboto-Condensed-BoldItalic.eot");
|
||||
src: local("Roboto-Condensed BoldItalic"), local("Roboto-Condensed-BoldItalic"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.eot?#iefix") format("embedded-opentype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.woff2") format("woff2"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.woff") format("woff"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.ttf") format("truetype"), url("/roboto-fontface/fonts/Roboto-Condensed/Roboto-Condensed-BoldItalic.svg#Roboto-Condensed") format("svg");
|
||||
}
|
||||
@ -1,48 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.eot');
|
||||
src: local('Roboto-Slab Thin'), local('Roboto-Slab-Thin'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.svg#Roboto-Slab') format('svg');
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab-Thin';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.eot');
|
||||
src: local('Roboto-Slab Thin'), local('Roboto-Slab-Thin'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Thin.svg#Roboto-Slab') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.eot');
|
||||
src: local('Roboto-Slab Light'), local('Roboto-Slab-Light'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.svg#Roboto-Slab') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab-Light';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.eot');
|
||||
src: local('Roboto-Slab Light'), local('Roboto-Slab-Light'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Light.svg#Roboto-Slab') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.eot');
|
||||
src: local('Roboto-Slab Regular'), local('Roboto-Slab-Regular'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.svg#Roboto-Slab') format('svg');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab-Regular';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.eot');
|
||||
src: local('Roboto-Slab Regular'), local('Roboto-Slab-Regular'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Regular.svg#Roboto-Slab') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.eot');
|
||||
src: local('Roboto-Slab Bold'), local('Roboto-Slab-Bold'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.svg#Roboto-Slab') format('svg');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Slab-Bold';
|
||||
src: url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.eot');
|
||||
src: local('Roboto-Slab Bold'), local('Roboto-Slab-Bold'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.woff') format('woff'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto-Slab/Roboto-Slab-Bold.svg#Roboto-Slab') format('svg');
|
||||
}
|
||||
@ -1,144 +0,0 @@
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Thin.eot');
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.svg#Roboto') format('svg');
|
||||
font-weight: 100;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Thin';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Thin.eot');
|
||||
src: local('Roboto Thin'), local('Roboto-Thin'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Thin.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.eot');
|
||||
src: local('Roboto ThinItalic'), local('Roboto-ThinItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.svg#Roboto') format('svg');
|
||||
font-weight: 100;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-ThinItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.eot');
|
||||
src: local('Roboto ThinItalic'), local('Roboto-ThinItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-ThinItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Light.eot');
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.svg#Roboto') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Light';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Light.eot');
|
||||
src: local('Roboto Light'), local('Roboto-Light'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Light.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot');
|
||||
src: local('Roboto LightItalic'), local('Roboto-LightItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.svg#Roboto') format('svg');
|
||||
font-weight: 300;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-LightItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot');
|
||||
src: local('Roboto LightItalic'), local('Roboto-LightItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-LightItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Regular.eot');
|
||||
src: local('Roboto Regular'), local('Roboto-Regular'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.svg#Roboto') format('svg');
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Regular';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Regular.eot');
|
||||
src: local('Roboto Regular'), local('Roboto-Regular'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Regular.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.eot');
|
||||
src: local('Roboto RegularItalic'), local('Roboto-RegularItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.svg#Roboto') format('svg');
|
||||
font-weight: 400;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-RegularItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.eot');
|
||||
src: local('Roboto RegularItalic'), local('Roboto-RegularItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-RegularItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Medium.eot');
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.svg#Roboto') format('svg');
|
||||
font-weight: 500;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Medium';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Medium.eot');
|
||||
src: local('Roboto Medium'), local('Roboto-Medium'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Medium.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.eot');
|
||||
src: local('Roboto MediumItalic'), local('Roboto-MediumItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.svg#Roboto') format('svg');
|
||||
font-weight: 500;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-MediumItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.eot');
|
||||
src: local('Roboto MediumItalic'), local('Roboto-MediumItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-MediumItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Bold.eot');
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.svg#Roboto') format('svg');
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Bold';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Bold.eot');
|
||||
src: local('Roboto Bold'), local('Roboto-Bold'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Bold.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.eot');
|
||||
src: local('Roboto BoldItalic'), local('Roboto-BoldItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.svg#Roboto') format('svg');
|
||||
font-weight: 700;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-BoldItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.eot');
|
||||
src: local('Roboto BoldItalic'), local('Roboto-BoldItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-BoldItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Black.eot');
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.svg#Roboto') format('svg');
|
||||
font-weight: 900;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-Black';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-Black.eot');
|
||||
src: local('Roboto Black'), local('Roboto-Black'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-Black.svg#Roboto') format('svg');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.eot');
|
||||
src: local('Roboto BlackItalic'), local('Roboto-BlackItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.svg#Roboto') format('svg');
|
||||
font-weight: 900;
|
||||
font-style: italic;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Roboto-BlackItalic';
|
||||
src: url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.eot');
|
||||
src: local('Roboto BlackItalic'), local('Roboto-BlackItalic'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.eot?#iefix') format('embedded-opentype'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.woff2') format('woff2'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.woff') format('woff'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.ttf') format('truetype'), url('/roboto-fontface/fonts/Roboto/Roboto-BlackItalic.svg#Roboto') format('svg');
|
||||
}
|
||||
@ -1,76 +0,0 @@
|
||||
@import "fonts.less";
|
||||
@import (less) "../node_modules/normalize.css/normalize.css";
|
||||
@header: #4B5B6E;
|
||||
@background: #CCCCCC;
|
||||
@darkgrey: #343444;
|
||||
@main: #E77171;
|
||||
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
background: @background;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
-webkit-print-color-adjust: exact;
|
||||
box-sizing: border-box;
|
||||
/* https://github.com/ariya/phantomjs/issues/12685 */
|
||||
page {
|
||||
background: white;
|
||||
position: relative;
|
||||
width: 21cm;
|
||||
height: 29.7cm;
|
||||
display: block;
|
||||
page-break-after: auto;
|
||||
overflow: hidden;
|
||||
|
||||
.resume {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.index-page {
|
||||
padding-left: 5%;
|
||||
width: 90%;
|
||||
padding-top: 20px;
|
||||
|
||||
h3 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.resume {
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
img {
|
||||
height: 300px;
|
||||
width: auto;
|
||||
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
|
||||
transition: all 0.3s cubic-bezier(.25,.8,.25,1);
|
||||
|
||||
&:hover {
|
||||
box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
|
||||
}
|
||||
}
|
||||
|
||||
.resume-title {
|
||||
text-align: center;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
margin-top: 10px;
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
body,
|
||||
page {
|
||||
margin: 0;
|
||||
box-shadow: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
@ -1,76 +0,0 @@
|
||||
{
|
||||
"name": "best-resume-ever",
|
||||
"version": "1.0.0",
|
||||
"description": "Collection of multiple resumes build with LESS and Mustache Templates.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/salomonelli/best-resume-ever"
|
||||
},
|
||||
"author": "salomonelli",
|
||||
"homepage": "https://github.com/salomonelli/best-resume-ever",
|
||||
"keywords": [
|
||||
"resume",
|
||||
"template",
|
||||
"mustache",
|
||||
"less",
|
||||
"cv",
|
||||
"curriculum",
|
||||
"vitae",
|
||||
"electron",
|
||||
"grunt"
|
||||
],
|
||||
"scripts": {
|
||||
"server": "node --harmony-async-await src/app.js server",
|
||||
"dev": "grunt --verbose",
|
||||
"pdf": "concurrently \"npm run server\" \"grunt --gruntfile GruntfilePdf.js --verbose\"",
|
||||
"lint": "eslint src/"
|
||||
},
|
||||
"dependencies": {
|
||||
"@typopro/web-montserrat": "3.4.9",
|
||||
"babel-cli": "6.23.0",
|
||||
"babel-core": "6.23.1",
|
||||
"babel-preset-es2015": "6.22.0",
|
||||
"buffer-to-string": "0.1.0",
|
||||
"clean-css": "4.0.8",
|
||||
"electroshot": "1.2.0",
|
||||
"express": "4.15.0",
|
||||
"font-awesome": "4.7.0",
|
||||
"fs": "0.0.2",
|
||||
"hogan-express": "0.5.2",
|
||||
"html-pdf": "2.1.0",
|
||||
"html-to-pdf": "0.1.11",
|
||||
"http": "0.0.0",
|
||||
"jquery": "3.1.1",
|
||||
"less": "2.7.2",
|
||||
"less-plugin-clean-css": "1.5.1",
|
||||
"local-web-server": "1.2.6",
|
||||
"markdown-to-html": "0.0.13",
|
||||
"material-design-icons": "3.0.1",
|
||||
"mustache": "2.3.0",
|
||||
"mustache-express": "1.2.4",
|
||||
"normalize.css": "5.0.0",
|
||||
"npm-font-open-sans-condensed": "1.0.3",
|
||||
"open-sans-fontface": "1.4.0",
|
||||
"path": "0.12.7",
|
||||
"phantomjs-prebuilt": "2.1.14",
|
||||
"raleway-webfont": "3.0.1",
|
||||
"request": "2.80.0",
|
||||
"request-promise": "4.1.1",
|
||||
"roboto-fontface": "^0.7.0",
|
||||
"showdown": "1.6.4",
|
||||
"typeface-chivo": "0.0.22",
|
||||
"write": "0.3.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"concurrently": "3.4.0",
|
||||
"eslint": "3.17.0",
|
||||
"grunt": "1.0.1",
|
||||
"grunt-babel": "6.0.0",
|
||||
"grunt-bg-shell": "2.3.3",
|
||||
"grunt-cli": "1.2.0",
|
||||
"grunt-contrib-watch": "1.0.0",
|
||||
"grunt-exec": "2.0.0",
|
||||
"load-grunt-tasks": "3.5.2",
|
||||
"reload": "1.1.1"
|
||||
}
|
||||
}
|
||||
@ -1,192 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* gets all DOM-elements on page
|
||||
* @return {HTMLElement[]} DOM-elements
|
||||
*/
|
||||
var getAllDOMElements = function getAllDOMElements() {
|
||||
return document.getElementsByTagName('*');
|
||||
};
|
||||
|
||||
/**
|
||||
* gets DOM-element of #resumeX
|
||||
* @param {HTMLElement} page
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
var getResumeDOMElement = function getResumeDOMElement(page) {
|
||||
return page.children[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* returns DOM-element of <page></page>
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
var getPageDOMElement = function getPageDOMElement() {
|
||||
return document.getElementsByTagName('page')[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether auto-font adjustment is enabled for resume
|
||||
* @param {HTMLElement} resume
|
||||
* @return {boolean}
|
||||
*/
|
||||
var autoFontEnabled = function autoFontEnabled(resume) {
|
||||
return resume.hasAttribute('autofont');
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether content is greater than page
|
||||
* @param {HTMLElement} resume
|
||||
* @param {HTMLElement} page
|
||||
* @return {boolean} false if content fits to page
|
||||
*/
|
||||
var contentIsGreaterThanPage = function contentIsGreaterThanPage(resume, page) {
|
||||
var pageHeight = page.offsetHeight;
|
||||
var resumeHeight = resume.offsetHeight;
|
||||
if (pageHeight < resumeHeight) return true;else return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* gets font size of DOM-elemnt
|
||||
* @param {HTMLElement} element
|
||||
* @return {number} font size of element
|
||||
*/
|
||||
var getFontSizeOfElement = function getFontSizeOfElement(element) {
|
||||
var style = window.getComputedStyle(element, null).getPropertyValue('font-size');
|
||||
return parseFloat(style);
|
||||
};
|
||||
|
||||
/**
|
||||
* calculates new font size of all DOM-elements
|
||||
* @param {HTMLElement[]}
|
||||
*/
|
||||
var calcNewFontSizes = function calcNewFontSizes(elements) {
|
||||
return elements.map(function (el) {
|
||||
return getFontSizeOfElement(el) * 0.99;
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* checks if DOM-element has box-shadow
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} '' if no shadow, otherwise shadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
var hasBoxShadow = function hasBoxShadow(element) {
|
||||
var style = window.getComputedStyle(element, null).getPropertyValue('box-shadow');
|
||||
if (style != 'none') return style;else return '';
|
||||
};
|
||||
|
||||
/**
|
||||
* gets absolute position of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {{}}
|
||||
*/
|
||||
var getAbsolutePositionOfElement = function getAbsolutePositionOfElement(element) {
|
||||
return {
|
||||
top: element.getBoundingClientRect().top,
|
||||
left: element.getBoundingClientRect().left
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* gets border radius of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} e.g. '50%'
|
||||
*/
|
||||
var getBorderRadiusOfElement = function getBorderRadiusOfElement(element) {
|
||||
return window.getComputedStyle(element, null).getPropertyValue('border-radius');
|
||||
};
|
||||
|
||||
/**
|
||||
* adds new box shadow
|
||||
* @param {HTMLElement} element
|
||||
* @param {{}} position e.g. { left: 10, top: 100}
|
||||
* @param {string} boxShadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
var addNewBoxShadow = function addNewBoxShadow(element, position, boxShadow) {
|
||||
var div = document.createElement('div');
|
||||
div.style.height = element.offsetHeight;
|
||||
div.style.width = element.offsetWidth;
|
||||
div.style.borderRadius = getBorderRadiusOfElement(element);
|
||||
div.style.position = 'absolute';
|
||||
div.style.boxShadow = boxShadow;
|
||||
div.style.webkitPrintColorAdjust = 'exact';
|
||||
div.style.webkitFilter = 'opacity(1)';
|
||||
div.style.top = position.top;
|
||||
div.style.left = position.left;
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
};
|
||||
|
||||
/**
|
||||
* gets all elements with shadows
|
||||
* @param {HTMLElement[]} elements on page
|
||||
* @return {HTMLElement[]} elements with shadows
|
||||
*/
|
||||
var getElementsWithShadows = function getElementsWithShadows(elements) {
|
||||
var ar = [].slice.call(elements);
|
||||
return ar.filter(function (el) {
|
||||
return hasBoxShadow(el) != '';
|
||||
}).map(function (el) {
|
||||
return {
|
||||
element: el,
|
||||
shadow: hasBoxShadow(el)
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* fixes shadows, since normal box-shadow cannot be printed in chrome,
|
||||
* see: http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome
|
||||
*/
|
||||
var fixBoxShadows = function fixBoxShadows() {
|
||||
var elements = getAllDOMElements();
|
||||
var elementsWithShadow = getElementsWithShadows(elements);
|
||||
elementsWithShadow.forEach(function (element) {
|
||||
var position = getAbsolutePositionOfElement(element.element);
|
||||
element.element.style.boxShadow = 'none';
|
||||
addNewBoxShadow(element.element, position, element.shadow);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* checks if the page contains a resume
|
||||
* @return {Boolean} true if page contains resume
|
||||
*/
|
||||
var isResume = function isResume() {
|
||||
if (document.getElementsByTagName('page')[0]) return true;else return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether font needs to be fixed, and if fixes it
|
||||
*/
|
||||
var checkFont = function checkFont() {
|
||||
var page = getPageDOMElement();
|
||||
var resume = getResumeDOMElement(page);
|
||||
var fixFont = function fixFont(resume, page) {
|
||||
var elements = getAllDOMElements();
|
||||
var elementsAr = [].slice.call(elements);
|
||||
var newFontSizes = calcNewFontSizes(elementsAr);
|
||||
elementsAr.forEach(function (el, i) {
|
||||
return el.style.fontSize = newFontSizes[i] + 'px';
|
||||
});
|
||||
if (contentIsGreaterThanPage(resume, page)) fixFont(resume, page);
|
||||
};
|
||||
if (autoFontEnabled(resume) && contentIsGreaterThanPage(resume, page)) fixFont(resume, page);
|
||||
};
|
||||
|
||||
var isElectron = function isElectron() {
|
||||
return window && window.process && window.process.type;
|
||||
};
|
||||
|
||||
/**
|
||||
* fixes resume
|
||||
*/
|
||||
var fixResume = function fixResume() {
|
||||
if (!isResume()) return;
|
||||
checkFont();
|
||||
//if (isElectron())
|
||||
fixBoxShadows();
|
||||
};
|
||||
|
||||
fixResume();
|
||||
//# sourceMappingURL=javascript.js.map
|
||||
@ -1,196 +0,0 @@
|
||||
/**
|
||||
* gets all DOM-elements on page
|
||||
* @return {HTMLElement[]} DOM-elements
|
||||
*/
|
||||
const getAllDOMElements = () => {
|
||||
return document.getElementsByTagName('*');
|
||||
};
|
||||
|
||||
/**
|
||||
* gets DOM-element of #resumeX
|
||||
* @param {HTMLElement} page
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
const getResumeDOMElement = page => {
|
||||
return page.children[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* returns DOM-element of <page></page>
|
||||
* @return {HTMLElement}
|
||||
*/
|
||||
const getPageDOMElement = () => {
|
||||
return document.getElementsByTagName('page')[0];
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether auto-font adjustment is enabled for resume
|
||||
* @param {HTMLElement} resume
|
||||
* @return {boolean}
|
||||
*/
|
||||
const autoFontEnabled = resume => {
|
||||
return resume.hasAttribute('autofont');
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether content is greater than page
|
||||
* @param {HTMLElement} resume
|
||||
* @param {HTMLElement} page
|
||||
* @return {boolean} false if content fits to page
|
||||
*/
|
||||
const contentIsGreaterThanPage = (resume, page) => {
|
||||
const pageHeight = page.offsetHeight;
|
||||
const resumeHeight = resume.offsetHeight;
|
||||
if (pageHeight < resumeHeight) return true;
|
||||
else return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* gets font size of DOM-elemnt
|
||||
* @param {HTMLElement} element
|
||||
* @return {number} font size of element
|
||||
*/
|
||||
const getFontSizeOfElement = element => {
|
||||
const style = window.getComputedStyle(element, null).getPropertyValue('font-size');
|
||||
return parseFloat(style);
|
||||
};
|
||||
|
||||
/**
|
||||
* calculates new font size of all DOM-elements
|
||||
* @param {HTMLElement[]}
|
||||
*/
|
||||
const calcNewFontSizes = elements => {
|
||||
return elements
|
||||
.map(el => getFontSizeOfElement(el) * 0.99);
|
||||
};
|
||||
|
||||
/**
|
||||
* checks if DOM-element has box-shadow
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} '' if no shadow, otherwise shadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
const hasBoxShadow = element => {
|
||||
const style = window
|
||||
.getComputedStyle(element, null)
|
||||
.getPropertyValue('box-shadow');
|
||||
if (style !== 'none') return style;
|
||||
else return '';
|
||||
};
|
||||
|
||||
/**
|
||||
* gets absolute position of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {{}}
|
||||
*/
|
||||
const getAbsolutePositionOfElement = element => {
|
||||
return {
|
||||
top: element.getBoundingClientRect().top,
|
||||
left: element.getBoundingClientRect().left
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* gets border radius of element
|
||||
* @param {HTMLElement} element
|
||||
* @return {string} e.g. '50%'
|
||||
*/
|
||||
const getBorderRadiusOfElement = element => {
|
||||
return window
|
||||
.getComputedStyle(element, null)
|
||||
.getPropertyValue('border-radius');
|
||||
};
|
||||
|
||||
/**
|
||||
* adds new box shadow
|
||||
* @param {HTMLElement} element
|
||||
* @param {{}} position e.g. { left: 10, top: 100}
|
||||
* @param {string} boxShadow e.g. 'rgba(0, 0, 0, 0.137255) 0px 2px 2px 0px'
|
||||
*/
|
||||
const addNewBoxShadow = (element, position, boxShadow) => {
|
||||
let div = document.createElement('div');
|
||||
div.style.height = element.offsetHeight;
|
||||
div.style.width = element.offsetWidth;
|
||||
div.style.borderRadius = getBorderRadiusOfElement(element);
|
||||
div.style.position = 'absolute';
|
||||
div.style.boxShadow = boxShadow;
|
||||
div.style.webkitPrintColorAdjust = 'exact';
|
||||
div.style.webkitFilter = 'opacity(1)';
|
||||
div.style.top = position.top;
|
||||
div.style.left = position.left;
|
||||
document.getElementsByTagName('body')[0].appendChild(div);
|
||||
};
|
||||
|
||||
/**
|
||||
* gets all elements with shadows
|
||||
* @param {HTMLElement[]} elements on page
|
||||
* @return {HTMLElement[]} elements with shadows
|
||||
*/
|
||||
const getElementsWithShadows = elements => {
|
||||
const ar = [].slice.call(elements);
|
||||
return ar
|
||||
.filter(el => hasBoxShadow(el) !== '')
|
||||
.map(el => {
|
||||
return {
|
||||
element: el,
|
||||
shadow: hasBoxShadow(el)
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* fixes shadows, since normal box-shadow cannot be printed in chrome,
|
||||
* see: http://stackoverflow.com/questions/13975198/text-shadow-and-box-shadow-while-printing-chrome
|
||||
*/
|
||||
const fixBoxShadows = () => {
|
||||
const elements = getAllDOMElements();
|
||||
const elementsWithShadow = getElementsWithShadows(elements);
|
||||
elementsWithShadow.forEach(element => {
|
||||
const position = getAbsolutePositionOfElement(element.element);
|
||||
element.element.style.boxShadow = 'none';
|
||||
addNewBoxShadow(element.element, position, element.shadow);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* checks if the page contains a resume
|
||||
* @return {Boolean} true if page contains resume
|
||||
*/
|
||||
const isResume = () => {
|
||||
if (document.getElementsByTagName('page')[0]) return true;
|
||||
else return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* checks whether font needs to be fixed, and if fixes it
|
||||
*/
|
||||
const checkFont = () => {
|
||||
const page = getPageDOMElement();
|
||||
const resume = getResumeDOMElement(page);
|
||||
const fixFont = function(resume, page) {
|
||||
const elements = getAllDOMElements();
|
||||
const elementsAr = [].slice.call(elements);
|
||||
const newFontSizes = calcNewFontSizes(elementsAr);
|
||||
elementsAr.forEach((el, i) => el.style.fontSize = newFontSizes[i] + 'px');
|
||||
if (contentIsGreaterThanPage(resume, page)) fixFont(resume, page);
|
||||
};
|
||||
if (
|
||||
autoFontEnabled(resume) &&
|
||||
contentIsGreaterThanPage(resume, page)
|
||||
) fixFont(resume, page);
|
||||
};
|
||||
|
||||
const isElectron = () => {
|
||||
return window && window.process && window.process.type;
|
||||
}
|
||||
|
||||
/**
|
||||
* fixes resume
|
||||
*/
|
||||
const fixResume = () => {
|
||||
if (!isResume()) return;
|
||||
checkFont();
|
||||
//if (isElectron())
|
||||
fixBoxShadows();
|
||||
};
|
||||
|
||||
fixResume();
|
||||
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 130 KiB |
|
Before Width: | Height: | Size: 119 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
Before Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 161 KiB |
1
old/public/styles/resume-grey-boxes.min.css
vendored
@ -1 +0,0 @@
|
||||
.resume5{background:#eceff1}#resume5{padding-bottom:50px}#resume5 .dp1{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}#resume5 .dp2{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.3)}#resume5 .dp3{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.3)}#resume5 .dp4{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.3)}#resume5 .dp5{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.3)}#resume5 .introduction{height:25%;position:relative;background:#009688}#resume5 .introduction .wrapper{width:100%;display:inline-block;margin-top:50px;height:auto;position:relative;text-align:center}#resume5 .introduction .wrapper .img{background:url(/person.jpg);background-position:center;background-size:cover;height:100px;width:100px;margin-left:auto;margin-right:auto;border-radius:50%;display:inline-block;position:relative}#resume5 .introduction .wrapper .position{color:#fff}#resume5 .introduction .wrapper .name{color:#fff;margin-top:16px;font-size:42px;font-weight:300}#resume5 .resume-content{margin-top:20px}#resume5 .card-row{display:flex;padding-left:2.5%;padding-right:2.5%;margin-bottom:15px}#resume5 .card-row.multiple .card:last-child{margin-left:2.5%}#resume5 .card{flex:1;background:#fff;border-radius:2px}#resume5 .card .title{display:block;line-height:32px;margin-bottom:8px;font-size:24px;font-weight:300;padding:24px;background:#607d8b;color:#fff}#resume5 .card .text{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;font-size:14px;color:#000}#resume5 .card .text .name{font-size:36px;margin-top:10px}#resume5 .card .text .row{padding:24px;border-bottom:1px solid #b0bec5}#resume5 .card .text .row:last-child{border-bottom:none}#resume5 .chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#cfd8dc;margin-bottom:5px;margin-right:5px}#resume5 .resume-footer{background:rgba(51,51,51,.08);position:absolute;bottom:0;width:100%;display:flex}#resume5 .resume-footer .contact{width:100%;padding:2.5%;font-weight:300px;font-size:14px;text-align:center;color:#455a64}#resume5 .resume-footer .contact a,#resume5 .resume-footer .contact a:focus,#resume5 .resume-footer .contact a:hover,#resume5 .resume-footer .contact a:visited{color:#455a64;text-decoration:none}#resume5 .resume-footer .contact i.fa{margin-left:10px;margin-right:10px;font-size:8px;color:#969da0}#resume5 .degree{font-size:18px}#resume5 .degree-description{color:#455a64}#resume5 .skill-desc{color:#455a64}#resume5 .timeline{position:relative;margin-top:-6px}#resume5 .timeline .line{border-left:1px solid #b0bec5;height:100px;position:absolute;left:38px;height:100%;top:0}#resume5 .timeline .experience-block{padding-left:24px;padding-right:24px;display:inline-block;margin-bottom:20px}#resume5 .timeline .experience-block:first-of-type{padding-top:29px}#resume5 .timeline .experience-block .circle{height:30px;width:30px;display:inline-block;background:#009688;border-radius:50%;float:left;position:absolute;z-index:2}#resume5 .timeline .experience-block .job{margin-left:53px;margin-top:-5px;padding:10px;background:#cfd8dc;width:240px}#resume5 .timeline .experience-block .job .jobtitle{line-height:1;font-family:Roboto,sans-serif;font-weight:400;font-size:18px;color:#000}#resume5 .timeline .experience-block .job .company,#resume5 .timeline .experience-block .job .description,#resume5 .timeline .experience-block .job .timeperiod{line-height:1;color:#455a64}
|
||||
1
old/public/styles/resume-left-right.min.css
vendored
@ -1 +0,0 @@
|
||||
#resume1{font-family:'Source Sans Pro',sans-serif;font-size:20px;padding-bottom:50px}#resume1 h3{margin-bottom:0}#resume1 a,#resume1 a:focus,#resume1 a:hover,#resume1 a:visited{color:#616161}#resume1 span{display:inline-block}#resume1 .row{width:100%}#resume1 .half{width:44%}#resume1 .half.left{float:left;text-align:right;padding-left:4%;padding-right:2%}#resume1 .half.right{float:right;text-align:left;padding-right:4%;padding-left:2%}#resume1 .center{margin-left:auto;margin-right:auto}#resume1 .text-center{text-align:center}#resume1 .name{border:1px solid #000;text-transform:uppercase;padding:10px 20px;margin-top:80px;margin-bottom:5px;font-family:'Open Sans',sans-serif;font-size:35px;font-weight:600;letter-spacing:10px}#resume1 .position{text-transform:uppercase;font-family:'Open Sans',sans-serif;font-size:smaller;color:#757575;margin-bottom:40px}#resume1 .image{width:100px;height:100px;margin-top:50px;margin-bottom:50px}#resume1 .image .img{width:100%;height:100%;border-radius:50%;background:url(/person.jpg);background-repeat:none;background-position:center;background-size:cover}#resume1 .contact{width:100%}#resume1 .experience .experience-block span{width:100%;color:#616161}#resume1 .experience .experience-block span.company{font-weight:700;padding-bottom:5px;padding-top:10px;color:#424242}#resume1 .experience .experience-block span.job-title{font-style:italic}#resume1 .education-block span{color:#616161}#resume1 .education-block span.degree{font-weight:700;padding-bottom:5px;padding-top:10px;color:#424242}#resume1 .skills-other{color:#616161;margin-bottom:10px}#resume1 .skills{margin-top:20px;margin-bottom:10px}#resume1 .skills .skill-block{padding-bottom:10px;display:inline-block}#resume1 .skills .skill-block .skill{width:100px;color:#616161;float:left}#resume1 .skills .skill-block .skill-bar{float:right;background:#e0e0e0;overflow:hidden;height:8px;border-radius:3px;margin-top:6.5px;position:relative;width:249px}#resume1 .skills .skill-block .skill-bar .level{background:#757575;height:100%}#resume1 .contact table{text-align:right;float:right;margin-top:5px;color:#616161;font-size:20px}#resume1 .contact table i{padding:2px;color:#616161}#resume1 .contact table tr td:nth-child(2){vertical-align:top}
|
||||
@ -1 +0,0 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700,500);#material-blue{font-family:roboto,sans-serif;background-color:#ccc;font-size:15px;line-height:1.5;color:#767270;letter-spacing:.072em;font-weight:400}#material-blue .c{clear:both}#material-blue li,#material-blue ul{margin:0;padding:0;list-style-type:none}#material-blue li{padding-top:9px}#material-blue p{margin-top:0;margin-bottom:25px;font-family:Roboto,sans-serif;font-weight:300;font-size:10pt;line-height:17pt}#material-blue .m_box{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}#material-blue .fa{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:26px}#material-blue h1,#material-blue h2,#material-blue h3,#material-blue h4,#material-blue h5,#material-blue h6{font-weight:400;margin:0}#material-blue h2{font-size:22pt;line-height:37pt;margin:0;font-weight:500}#material-blue h4{font-size:12pt;line-height:20pt;opacity:1}#material-blue .rightCol{width:63.5%;height:100%;float:right;display:flex;flex-direction:column}#material-blue .rightCol .block{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);width:100%;min-height:50px;flex:1;position:relative;background-color:#fff;padding-top:24px;padding-bottom:10px;margin-top:6px;margin-bottom:6px}#material-blue .rightCol .block .icon{width:16%;float:left;margin-left:0}#material-blue .rightCol .block .icon .fa{text-align:center;display:block;font-size:30pt}#material-blue .rightCol .block .content{width:80%;position:absolute;height:96%;left:17%;padding-right:3%;text-align:left;display:flex;flex-direction:column}#material-blue .rightCol .block .content .item{border-bottom:1px solid #bdbdbd;flex:1;width:97%;display:flex;justify-content:center;flex-direction:column;text-align:left}#material-blue .rightCol .block .content .item span{color:#5da4d9;margin-top:0;font-size:10pt;line-height:16pt}#material-blue .rightCol .block .content .item p{margin-top:5px}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .rightCol .block .content .item:last-of-type{border-bottom-style:none}#material-blue .leftCol{width:35%;height:100%;float:left;padding:0;text-align:left;color:#fff;background-color:#5da4d9;overflow:hidden;display:block}#material-blue .leftCol a{color:#fff;text-decoration:none}#material-blue .leftCol .heading{background-color:#fff;background-repeat:no-repeat;background-size:cover;background-position:center;position:relative;width:100%;height:340px}#material-blue .leftCol .title{position:absolute;right:25px;bottom:25px}#material-blue .leftCol .title span{margin-top:-5px;font-size:10pt;margin:0;padding:0;line-height:15pt}#material-blue .leftCol .item{width:100%;margin-top:13px;float:left}#material-blue .leftCol .item .icon{width:20%;margin-top:8px;float:left}#material-blue .leftCol .item .fa{display:inherit;text-align:center}#material-blue .leftCol .item .text{float:right;width:69%;padding-right:10%;padding-bottom:13px;border-bottom:1px solid #4783c2}#material-blue .leftCol .item .text li{padding-top:0}#material-blue .leftCol .item span{font-weight:300}#material-blue .leftCol .item .skill{clear:both;width:77%;margin-left:14%;padding-top:4px}#material-blue .leftCol .item .skill .left{float:left;width:10%;padding-top:3px}#material-blue .leftCol .item .skill .left i:nth-child(2){float:left;padding-top:4px}#material-blue .leftCol .item .skill .right{float:right;width:90%}#material-blue .leftCol .item .skill .right .progress{float:left;position:relative;height:2px;display:block;width:95%;background-color:#4783c2;border-radius:2px;margin:.5rem 0 1rem;overflow:visible}#material-blue .leftCol .item .skill .right .progress .determinate{background-color:#fff;position:absolute;top:0;bottom:0}#material-blue .leftCol .item .skill .right .progress .determinate .fa{font-size:12px;position:absolute;top:-6px;right:-2px;margin-left:50%}#material-blue .leftCol .item.last .text{border-bottom-style:none;padding-bottom:0}#material-blue #myselfpic{background-image:url(/person.jpg);color:#000}#material-blue #githubIcon{width:25px;padding-left:17px}
|
||||
@ -1 +0,0 @@
|
||||
.resume-material-violet{background:#fff;font-family:Roboto}.row{width:100%}.row.dark{height:19.5%;background:#16151c;position:relative}.row.main{height:80.5%}.section{margin:20px}.section .section-headline{text-transform:uppercase;font-weight:500;letter-spacing:3px;font-size:10pt;opacity:.8;margin-top:40px;margin-bottom:20px}.working-experience .paper{margin-bottom:10px}.working-experience .paper:last-of-type{margin-bottom:0}.working-experience .position{color:rgba(0,0,0,.870588);display:inline-block;font-size:15px;font-weight:300;width:100%}.working-experience .company{color:rgba(0,0,0,.541176);display:inline-block;font-weight:300;font-size:14px;width:100%;padding-bottom:20px}.working-experience .description{width:100%;font-size:14px;display:inline-block;color:rgba(0,0,0,.870588);padding-bottom:10px}.working-experience .skills{display:inline-block}.working-experience .chip{border:10px;box-sizing:border-box;display:flex;font-family:Roboto,sans-serif;-webkit-tap-highlight-color:transparent;cursor:default;text-decoration:none;margin:0;padding:0;outline:0;font-size:inherit;font-weight:inherit;position:relative;z-index:1;background-color:#e0e0e0;border-radius:16px;width:-webkit-fit-content;color:rgba(0,0,0,.870588);font-size:14px;font-weight:400;line-height:32px;padding-left:12px;padding-right:12px;user-select:none;white-space:nowrap;margin-right:10px;margin-bottom:10px;float:left}.header-description{top:50%;position:absolute;transform:translateY(-50%);width:62%;right:0}.header-description .name{letter-spacing:9px;text-transform:uppercase;font-weight:300;color:#fff}.header-description .position{text-transform:uppercase;font-weight:300;font-size:.67em;letter-spacing:2px;color:#fff;padding-bottom:0;margin-bottom:0}.img-wrapper{height:100%;position:relative}.img-wrapper .image{width:38%;top:50%;position:absolute;transform:translateY(-50%)}.img-wrapper .image .img{width:100px;height:100px;margin-left:auto;margin-right:40px;border-radius:50%;background:url(/person.jpg);background-repeat:none;background-position:center;background-size:cover}.part{width:50%;height:100%;display:inline-block}.part.left{float:left}.part.left .section{margin-left:40px}.part.right{float:right}.part.right .section{margin-right:40px}.paper{box-shadow:rgba(0,0,0,.117647) 0 1px 6px,rgba(0,0,0,.117647) 0 1px 4px;background:#fff;padding:20px}.education .paper{margin-bottom:10px}.education .paper:last-of-type{margin-bottom:0}.education .degree{color:rgba(0,0,0,.870588);display:inline-block;font-size:15px;font-weight:300;width:100%}.education .timeperiod{color:rgba(0,0,0,.541176);display:inline-block;font-weight:300;font-size:14px;width:100%;padding-bottom:20px}.education .description{width:100%;font-size:14px;display:inline-block;color:rgba(0,0,0,.870588);padding-bottom:10px}.skills .skill-description{width:100%;font-size:14px;display:inline-block;color:rgba(0,0,0,.870588);padding-bottom:10px;margin-top:20px;text-align:justify}.skills .skill-entry{display:inline-block;text-align:center;width:24%}.skills .skill-entry .skill{margin-top:10px;margin-bottom:10px;font-size:14px;padding-bottom:10px;color:rgba(0,0,0,.870588);display:inline-block;font-size:15px;font-weight:300;width:100%}div.doughnut{width:300px;height:300px;top:0;right:0;bottom:0;left:0;margin:auto;position:absolute;background:#e0e0e0 linear-gradient(to right,#e0e0e0 50%,#d8ab94 50%);color:#d8ab94;border-radius:50%;animation-delay:-35s;position:relative;width:50px;height:50px}@keyframes spin{to{transform:rotate(180deg)}}@keyframes background{50%{background-color:currentColor}}div.doughnut::after{content:'';position:absolute;width:80%;height:80%;top:0;right:0;bottom:0;left:0;margin:auto;background:#fff;border-radius:50%}div.doughnut::before{content:'';position:absolute;display:block;background-color:inherit;height:100%;width:50%;bottom:0;right:0;border-radius:0 100% 100% 0/50%;transform:rotate(0);transform-origin:0 50%;animation:50s spin infinite linear,100s background infinite step-end;animation-play-state:paused;animation-delay:inherit}.contact table td{vertical-align:middle;padding-bottom:10px}.contact .info{color:rgba(0,0,0,.870588);display:inline-block;font-size:15px;font-weight:300;width:100%}.contact .description{color:rgba(0,0,0,.541176);display:inline-block;font-weight:300;font-size:14px;width:100%}.contact .icon{color:#d8ab94;display:inline-block;margin-right:20px}.contact .icon i{font-size:30px}.contact .icon i.fa{font-size:34px}
|
||||
1
old/public/styles/resume-oblique.min.css
vendored
@ -1 +0,0 @@
|
||||
#resume3{font-family:'Open Sans Condensed',sans-serif;padding-bottom:50px}#resume3 h3{font-weight:700;text-transform:uppercase;margin-bottom:10px}#resume3 a,#resume3 a:focus,#resume3 a:hover{color:#000;text-decoration:none}#resume3 .resume-header .triangle{width:0;height:0;border-style:solid;border-width:600px 0 0 1500px;border-color:#006064 transparent transparent transparent;position:absolute;left:-600px;top:0}#resume3 .resume-header .person-header{position:absolute;z-index:20;right:15%;top:200px}#resume3 .resume-header .person-header .person-wrapper{overflow:hidden;position:relative}#resume3 .resume-header .person-header .img{height:100%;width:100px;float:left;position:absolute;top:0;right:0;background:url(/person.jpg);background-position:center;background-size:cover}#resume3 .resume-header .person-header .person{float:right;color:#fff;margin-right:120px}#resume3 .resume-header .person-header .name{text-transform:uppercase;font-size:50px;display:table-caption;text-align:right;line-height:1;font-weight:700}#resume3 .resume-header .person-header .position{font-size:20px;display:table-caption;text-align:right;line-height:1;margin-top:10px}#resume3 .resume-content{margin-top:435px;margin-left:15%;width:70%}#resume3 .resume-content .experience .experience-block{line-height:1;margin-bottom:10px}#resume3 .resume-content .experience .experience-block:first-of-type{width:80%}#resume3 .resume-content .experience .experience-block .row:first-child{font-size:20px;text-transform:uppercase}#resume3 .resume-content .experience .experience-block .row:first-child i{font-size:17px}#resume3 .education-block{line-height:1;margin-bottom:10px}#resume3 .education-block .row:first-child{font-size:20px;text-transform:uppercase}#resume3 .skill-section .skills{width:100%}#resume3 .skill-section .skills .skill-block{width:50%;float:left}#resume3 .skill-section .skills .skill-block i{font-size:17px;margin-right:15px}#resume3 .skill-section .skills .skill-block .skill{font-size:20px}#resume3 .skills-other{display:inline-block;font-size:20px;margin-top:10px;line-height:1}#resume3 .contact{margin-top:50px}#resume3 .contact a,#resume3 .contact span{display:inline-block;font-size:20px;list-style:none;margin-top:0;line-height:1;float:left;padding-left:0;margin-left:0}
|
||||
1
old/public/styles/resume-side-bar.min.css
vendored
@ -1 +0,0 @@
|
||||
#resume2{font-family:Raleway,sans-serif;padding-bottom:50px}#resume2 h3{text-transform:uppercase;padding-top:0;margin-top:0;letter-spacing:5px;font-weight:400}#resume2 a,#resume2 a:focus,#resume2 a:hover,#resume2 a:visited{text-decoration:none}#resume2 .top-row{width:100%;padding-top:100px;padding-bottom:100px}#resume2 .top-row span{width:100%;display:block;text-align:center;font-weight:400}#resume2 .top-row span.person-name{text-transform:uppercase;font-size:50px;letter-spacing:10px}#resume2 .top-row span.person-position{letter-spacing:5px}#resume2 .left-col{width:26%;float:left;padding-left:8%;padding-right:4%}#resume2 .left-col .person-image .image-centerer{display:flex;justify-content:center;height:auto;overflow:hidden}#resume2 .left-col .person-image .image-centerer .img{flex:none;background:url(/person.jpg);background-position:center;background-size:cover;height:250px;width:100%}#resume2 .left-col .contact h3{text-align:center;margin-top:20px}#resume2 .left-col .contact .contact-row{text-align:center;letter-spacing:2px;margin-bottom:3px}#resume2 .left-col .contact .contact-row:first-of-type{margin-top:50px}#resume2 .left-col .contact .contact-row.dots{margin-top:20px;margin-bottom:15px;font-size:10px;color:rgba(153,153,153,.6)}#resume2 .left-col .contact .contact-row a{color:#000}#resume2 .right-col{width:50%;float:right;padding-left:4%;padding-right:8%}#resume2 .right-col .experience-block{margin-bottom:10px}#resume2 .right-col .experience-block .row:first-child{margin-bottom:3px}#resume2 .right-col .experience-block .row .company{text-transform:uppercase;font-size:19px}#resume2 .right-col .experience-block .row .job-title{font-size:19px}#resume2 .right-col .education{margin-top:50px}#resume2 .right-col .education .education-block{margin-bottom:10px}#resume2 .right-col .education .education-block .degree{font-size:19px;text-transform:uppercase;margin-bottom:3px}#resume2 .right-col .skills-block{margin-top:50px;position:relative}#resume2 .right-col .skills-block .skills{margin-bottom:10px;position:relative;margin-left:auto;margin-right:auto;display:inline-block;margin-bottom:20px}#resume2 .right-col .skills-block .skills .skill{width:80px;height:80px;border-radius:50%;position:relative;border:#333 1px solid;margin:3px;float:left;font-size:13px}#resume2 .right-col .skills-block .skills .skill .skill-name{text-align:center;position:absolute;top:50%;transform:translateY(-50%);width:100%}#resume2 .right-col .skills-block .skills .skills-other{display:inline-block;width:100%;margin-top:20px}
|
||||
1
old/public/styles/resume-spotify.min.css
vendored
@ -1 +0,0 @@
|
||||
.resume6{background:#171717;font-family:'TypoPRO Montserrat';font-weight:300}#resume6{padding-bottom:50px;color:#fff}#resume6 h3{background:#1cb251;margin:0;text-align:center;font-weight:300;text-transform:uppercase;letter-spacing:9px;padding-top:20px;padding-bottom:20px;border-radius:35px}#resume6 .left-col{float:left;width:38%;padding:3%}#resume6 .left-col .person-box{width:100%;background:#282828}#resume6 .left-col .person-box .img{height:300px;width:100%;background:url(/person.jpg);background-size:cover;background-position:center}#resume6 .left-col .person-box .content{padding:7%}#resume6 .left-col .person-box .content .person-name{width:100%;margin-bottom:10px;font-size:20px}#resume6 .left-col .person-box .content .person-position{color:#767676;width:100%}#resume6 .left-col .skill{margin-bottom:35px;width:90%;margin-left:auto;margin-right:auto}#resume6 .left-col .skill .skill-name{color:#9a9a9a}#resume6 .left-col .skills-other{color:rgba(154,154,154,.8)}#resume6 .left-col .skills-block h3{margin-top:30px;margin-bottom:20px}#resume6 .left-col .skills-block .skill-bar{width:100%;background:#282828;height:10px;border-radius:20px;position:relative;overflow:hidden;margin-top:10px}#resume6 .left-col .skills-block .skill-bar .level{width:99%;position:absolute;background:#9a9a9a;height:10px}#resume6 .left-col .skills-block .skill-circle{position:relative;width:100%;margin-top:-15px;transform:translateX(-15px)}#resume6 .left-col .skills-block .skill-circle .circle{background:#c6c6c6;height:20px;width:20px;border-radius:50%;position:absolute}#resume6 .right-col{width:53%;float:left;padding-top:3%;padding-right:3%}#resume6 .right-col .education,#resume6 .right-col .experience{margin-bottom:20px}#resume6 .right-col .education .education-block,#resume6 .right-col .education .experience-block,#resume6 .right-col .experience .education-block,#resume6 .right-col .experience .experience-block{font-size:20px;padding:20px;border-bottom:1px #262626 solid;color:rgba(154,154,154,.8)}#resume6 .right-col .education .education-block:last-child,#resume6 .right-col .education .experience-block:last-child,#resume6 .right-col .experience .education-block:last-child,#resume6 .right-col .experience .experience-block:last-child{border-bottom:none}#resume6 .right-col .education .education-block .row:first-child,#resume6 .right-col .education .experience-block .row:first-child,#resume6 .right-col .experience .education-block .row:first-child,#resume6 .right-col .experience .experience-block .row:first-child{color:#9a9a9a}#resume6 .right-col .contact table{color:#9a9a9a;padding:20px;font-size:20px;font-weight:300}#resume6 .right-col .contact table a,#resume6 .right-col .contact table a:focus,#resume6 .right-col .contact table a:hover,#resume6 .right-col .contact table a:visited{color:#9a9a9a;text-decoration:none}#resume6 .right-col .contact table i.fa{color:rgba(154,154,154,.8);font-size:30px;margin-right:20px;margin-top:2px}
|
||||
1
old/public/styles/style.min.css
vendored
@ -1,90 +0,0 @@
|
||||
<page class="a4 resume4">
|
||||
<div id="resume5" autofont>
|
||||
<div class="introduction dp3">
|
||||
<div class="wrapper">
|
||||
<div class="img dp4">
|
||||
</div>
|
||||
<div class="text">
|
||||
<div class="name">{{person.name.first}} {{person.name.last}}</div>
|
||||
<div class="position">{{person.position}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="resume-content">
|
||||
<div class="card-row">
|
||||
<div class="card dp1">
|
||||
<div class="content">
|
||||
<div class="title dp3">Education</div>
|
||||
<div class="text">
|
||||
{{#person.education}}
|
||||
<div class="row line">
|
||||
<div class="degree">{{degree}}</div>
|
||||
<div class="degree-description">{{description}}</div>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-row multiple">
|
||||
<div class="card dp1">
|
||||
<div class="content ">
|
||||
<div class="title dp3">Experience</div>
|
||||
<div class="text">
|
||||
<div class="timeline">
|
||||
{{#person.experience}}
|
||||
<div class="experience-block">
|
||||
<div class="circle dp1"></div>
|
||||
<div class="job dp1">
|
||||
<div class="job-row">
|
||||
<span class="jobtitle">{{position}}</span>
|
||||
</div>
|
||||
<div class="job-row">
|
||||
<span class="company">{{company}}, </span>
|
||||
<span class="timeperiod">{{timeperiod}}, </span>
|
||||
<span class="description">{{description}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/person.experience}}
|
||||
|
||||
<div class="line"></div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card dp1">
|
||||
<div class="content">
|
||||
<div class="title dp3">Skills</div>
|
||||
<div class="text">
|
||||
<div class="row">
|
||||
<div class="chips">
|
||||
{{#person.skills}}
|
||||
<div class="chip">{{name}}</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
<p class="skill-desc">{{person.skillDescription}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-footer">
|
||||
<div class="contact">
|
||||
<a href="mailto:{{person.contact.email}}">{{person.contact.email}}</a>
|
||||
<i class="fa fa-circle"></i> {{person.contact.phone}}
|
||||
<i class="fa fa-circle"></i> {{person.contact.street}}, {{person.contact.city}}
|
||||
<i class="fa fa-circle"></i>
|
||||
<a href="{{person.contact.website}}">{{person.contact.website}}</a>
|
||||
<i class="fa fa-circle"></i>
|
||||
<a href="https://github.com/{{person.contact.github}}">https://github.com/{{person.contact.github}}</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</page>
|
||||
@ -1,247 +0,0 @@
|
||||
@nameFontSize: 42px;
|
||||
@cardTitleFontSize: 24px;
|
||||
@cardTextFontSize: 14px;
|
||||
@cardTextNameFontSize: 36px;
|
||||
@chipFontSize: 13px;
|
||||
@contactFontSize: 14px;
|
||||
@contactIconFontSize: 8px;
|
||||
@degreeFontSize: 18px;
|
||||
@jobtitleFontSize: 18px;
|
||||
|
||||
.resume5 {
|
||||
background: #ECEFF1;
|
||||
}
|
||||
|
||||
#resume5 {
|
||||
padding-bottom: 50px;
|
||||
|
||||
.dp1 {
|
||||
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14), 0 1px 5px 0 rgba(0,0,0,0.12), 0 3px 1px -2px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.dp2 {
|
||||
box-shadow: 0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.dp3 {
|
||||
box-shadow: 0 6px 10px 0 rgba(0,0,0,0.14), 0 1px 18px 0 rgba(0,0,0,0.12), 0 3px 5px -1px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.dp4 {
|
||||
box-shadow: 0 8px 10px 1px rgba(0,0,0,0.14), 0 3px 14px 2px rgba(0,0,0,0.12), 0 5px 5px -3px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.dp5 {
|
||||
box-shadow: 0 16px 24px 2px rgba(0,0,0,0.14), 0 6px 30px 5px rgba(0,0,0,0.12), 0 8px 10px -5px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.introduction {
|
||||
height: 25%;
|
||||
position: relative;
|
||||
background: #009688;
|
||||
|
||||
.wrapper {
|
||||
width: 100%;
|
||||
display: inline-block;
|
||||
margin-top: 50px;
|
||||
height: auto;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
|
||||
.img {
|
||||
background: url('/person.jpg');
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
border-radius: 50%;
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.position {
|
||||
color: white;
|
||||
}
|
||||
|
||||
.name {
|
||||
color: white;
|
||||
margin-top: 16px;
|
||||
font-size: @nameFontSize;
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resume-content {
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.card-row {
|
||||
display: flex;
|
||||
padding-left: 2.5%;
|
||||
padding-right: 2.5%;
|
||||
margin-bottom: 15px;
|
||||
|
||||
&.multiple .card:last-child {
|
||||
margin-left: 2.5%;
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
flex: 1;
|
||||
background: white;
|
||||
border-radius: 2px;
|
||||
|
||||
.title {
|
||||
display: block;
|
||||
line-height: 32px;
|
||||
margin-bottom: 8px;
|
||||
font-size: @cardTitleFontSize;
|
||||
font-weight: 300;
|
||||
padding: 24px;
|
||||
background: #607D8B;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.text {
|
||||
line-height: 1.5;
|
||||
font-family: "Roboto", sans-serif;
|
||||
font-weight: normal;
|
||||
font-size: @cardTextFontSize;
|
||||
color: black;
|
||||
|
||||
.name {
|
||||
font-size: @cardTextNameFontSize;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.row {
|
||||
padding: 24px;
|
||||
border-bottom: 1px solid #B0BEC5;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chip {
|
||||
display: inline-block;
|
||||
height: 32px;
|
||||
font-size: @chipFontSize;
|
||||
font-weight: 500;
|
||||
color: rgba(0, 0, 0, 0.6);
|
||||
line-height: 32px;
|
||||
padding: 0 12px;
|
||||
border-radius: 16px;
|
||||
background-color: #CFD8DC;
|
||||
margin-bottom: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.resume-footer {
|
||||
background: rgba(51, 51, 51, 0.08);
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
|
||||
.contact {
|
||||
width: 100%;
|
||||
padding: 2.5%;
|
||||
font-weight: 300px;
|
||||
font-size: @contactFontSize;
|
||||
text-align: center;
|
||||
color: #455A64;
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover,
|
||||
a:visited {
|
||||
color: #455A64;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
i.fa {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
font-size: @contactIconFontSize;
|
||||
color: #969da0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.degree {
|
||||
font-size: @degreeFontSize;
|
||||
}
|
||||
|
||||
.degree-description {
|
||||
color: #455A64;
|
||||
}
|
||||
|
||||
.skill-desc {
|
||||
color: #455A64;
|
||||
}
|
||||
|
||||
.timeline {
|
||||
position: relative;
|
||||
margin-top: -6px;
|
||||
|
||||
.line {
|
||||
border-left: 1px solid #B0BEC5;
|
||||
height: 100px;
|
||||
position: absolute;
|
||||
left: 38px;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.experience-block {
|
||||
padding-left: 24px;
|
||||
padding-right: 24px;
|
||||
display: inline-block;
|
||||
margin-bottom: 20px;
|
||||
|
||||
&:first-of-type {
|
||||
padding-top: 29px;
|
||||
}
|
||||
|
||||
.circle {
|
||||
height: 30px;
|
||||
width: 30px;
|
||||
display: inline-block;
|
||||
background: #009688;
|
||||
border-radius: 50%;
|
||||
float: left;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.job {
|
||||
margin-left: 53px;
|
||||
margin-top: -5px;
|
||||
padding: 10px;
|
||||
background: #CFD8DC;
|
||||
width: 240px;
|
||||
|
||||
.jobtitle {
|
||||
line-height: 1.0;
|
||||
font-family: Roboto,sans-serif;
|
||||
font-weight: 400;
|
||||
font-size: @jobtitleFontSize;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
.company,
|
||||
.description,
|
||||
.timeperiod {
|
||||
line-height: 1.0;
|
||||
color: #455A64;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,78 +0,0 @@
|
||||
<page class="a4">
|
||||
<div id="resume1" class="resume" autofont>
|
||||
<div class="row text-center">
|
||||
<span class="name">{{person.name.first}} {{person.name.last}}</span>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<p class="position center">{{person.position}}</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="image center">
|
||||
<div class="img"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="left half">
|
||||
<div class="experience">
|
||||
<h3>Experience</h3>
|
||||
{{#person.experience}}
|
||||
<div class="experience-block">
|
||||
<span class="company"> {{company}} </span>
|
||||
<span class="job-title"> {{position}} </span>
|
||||
<span class="time-period"> {{timeperiod}}</span>
|
||||
<span class="job-description"> {{description}} </span>
|
||||
</div>
|
||||
{{/person.experience}}
|
||||
</div>
|
||||
<div class="contact">
|
||||
<h3>Contact</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td><a href="mailto:{{person.contact.email}}">{{person.contact.email}}</a></td>
|
||||
<td><i class="fa fa-envelope" aria-hidden="true"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="tel:{{person.contact.phone}}">{{person.contact.phone}}</a></td>
|
||||
<td><i class="fa fa-phone" aria-hidden="true"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{person.contact.street}} <br> {{person.contact.city}}</td>
|
||||
<td><i class="fa fa-home" aria-hidden="true"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="{{person.contact.website}}">{{person.contact.website}}</a></td>
|
||||
<td><i class="fa fa-globe" aria-hidden="true"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/{{person.contact.github}}">https://github.com/{{person.contact.github}}</a></td>
|
||||
<td><i class="fa fa-github" aria-hidden="true"></i></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right half">
|
||||
<div class="education">
|
||||
<h3>Education</h3>
|
||||
{{#person.education}}
|
||||
<div class="education-block">
|
||||
<span class="degree">{{degree}}</span>
|
||||
<span class="degree-description">{{description}}</span>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
<h3>Skills</h3>
|
||||
<div class="skills">
|
||||
{{#person.skills}}
|
||||
<div class="skill-block">
|
||||
<span class="skill">{{name}}</span>
|
||||
<div class="skill-bar">
|
||||
<div style="width: {{level}}%" class="level"> </div>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
<span class="skills-other"> {{person.skillDescription}} </span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</page>
|
||||
@ -1,183 +0,0 @@
|
||||
@fontSize: 20px;
|
||||
@name: black;
|
||||
@lightergrey: #616161;
|
||||
@grey: #757575;
|
||||
@whitegrey: #E0E0E0;
|
||||
@nameFontSize: 35px;
|
||||
@positionFontSize: smaller;
|
||||
|
||||
#resume1 {
|
||||
font-family: 'Source Sans Pro', sans-serif;
|
||||
font-size: @fontSize;
|
||||
padding-bottom: 50px;
|
||||
|
||||
h3 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover,
|
||||
a:visited {
|
||||
color: @lightergrey;
|
||||
}
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.row {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.half {
|
||||
width: 44%;
|
||||
|
||||
&.left {
|
||||
float: left;
|
||||
text-align: right;
|
||||
padding-left: 4%;
|
||||
padding-right: 2%;
|
||||
}
|
||||
|
||||
&.right {
|
||||
float: right;
|
||||
text-align: left;
|
||||
padding-right: 4%;
|
||||
padding-left: 2%;
|
||||
}
|
||||
}
|
||||
|
||||
.center {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.name {
|
||||
border: 1px solid @name;
|
||||
text-transform: uppercase;
|
||||
padding: 10px 20px;
|
||||
margin-top: 80px;
|
||||
margin-bottom: 5px;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-size: @nameFontSize;
|
||||
font-weight: 600;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
.position {
|
||||
text-transform: uppercase;
|
||||
font-family: 'Open Sans', sans-serif;
|
||||
font-size: @positionFontSize;
|
||||
color: @grey;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
.image {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
margin-top: 50px;
|
||||
margin-bottom: 50px;
|
||||
|
||||
.img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 50%;
|
||||
background: url('/person.jpg');
|
||||
background-repeat: none;
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
}
|
||||
|
||||
.contact {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.experience {
|
||||
.experience-block span {
|
||||
width: 100%;
|
||||
color: @lightergrey;
|
||||
|
||||
&.company {
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 10px;
|
||||
color: #424242;
|
||||
}
|
||||
|
||||
&.job-title {
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.education-block span {
|
||||
color: @lightergrey;
|
||||
|
||||
&.degree {
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
padding-top: 10px;
|
||||
color: #424242;
|
||||
}
|
||||
}
|
||||
|
||||
.skills-other {
|
||||
color: @lightergrey;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.skills {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.skill-block {
|
||||
padding-bottom: 10px;
|
||||
display: inline-block;
|
||||
|
||||
.skill {
|
||||
width: 100px;
|
||||
color: @lightergrey;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.skill-bar {
|
||||
float: right;
|
||||
background: @whitegrey;
|
||||
overflow: hidden;
|
||||
height: 8px;
|
||||
border-radius: 3px;
|
||||
margin-top: 6.5px;
|
||||
position: relative;
|
||||
width: 249px;
|
||||
|
||||
.level {
|
||||
background: @grey;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact table {
|
||||
text-align: right;
|
||||
float: right;
|
||||
margin-top: 5px;
|
||||
color: @lightergrey;
|
||||
font-size: @fontSize;
|
||||
|
||||
i {
|
||||
padding: 2px;
|
||||
color: @lightergrey;
|
||||
}
|
||||
|
||||
tr td:nth-child(2) {
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,134 +0,0 @@
|
||||
<meta name="name" content="material blue" />
|
||||
<meta name="author" content="pubkey" link="https://github.com/pubkey" />
|
||||
|
||||
<page class="a4" id="material-blue">
|
||||
<div class="leftCol m_box">
|
||||
<div class="heading" id="myselfpic">
|
||||
<div class="title">
|
||||
<h2>{{person.name.first}} {{person.name.last}}</h2>
|
||||
<div>{{person.position}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-user"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<ul>
|
||||
<li>Born {{person.birth.year}} in {{person.birth.location}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-location-arrow"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<ul>
|
||||
<li>{{person.contact.street}}</li>
|
||||
<li>{{person.contact.city}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="tel:{{person.contact.phone}}">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-phone"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h4>{{person.contact.phone}}</h4>
|
||||
<span>mobil</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="mailto:{{person.contact.email}}">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-envelope"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h4>{{person.contact.email}}</h4>
|
||||
<span>private</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/{{person.contact.github}}" target="_blank">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-github"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h4>@{{person.contact.github}}</h4>
|
||||
<span>https://github.com/{{person.contact.github}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="item last">
|
||||
<div class="icon">
|
||||
<i class="fa fa-cogs"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<h3>Skills</h3>
|
||||
<div style="width: 100%; height: 15px;"></div>
|
||||
</div>
|
||||
{{#person.skills}}
|
||||
<div class="skill">
|
||||
<div class="right">
|
||||
<span>{{name}}</span>
|
||||
<div class="progress">
|
||||
<div class="determinate" style="width: {{level}}%;">
|
||||
<i class="fa fa-circle"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rightCol">
|
||||
|
||||
<div class="block">
|
||||
<div class="icon">
|
||||
<i class="fa fa-suitcase"></i>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h2>Experience</h2>
|
||||
{{#person.experience}}
|
||||
<div class="item">
|
||||
<h3>{{position}} - {{company}}</h3>
|
||||
<span>{{timeperiod}}</span>
|
||||
<p>
|
||||
{{description}}
|
||||
</p>
|
||||
</div>
|
||||
{{/person.experience}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block">
|
||||
<div class="icon">
|
||||
<i class="fa fa-graduation-cap"></i>
|
||||
</div>
|
||||
<div class="content">
|
||||
<h2>Education</h2>
|
||||
|
||||
{{#person.education}}
|
||||
<div class="item">
|
||||
<h3>{{degree}}</h3>
|
||||
<span>{{timeperiod}}</span>
|
||||
<p> {{description}} </p>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
</page>
|
||||
@ -1,287 +0,0 @@
|
||||
@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,700,500);
|
||||
|
||||
#material-blue {
|
||||
.c {
|
||||
clear: both;
|
||||
}
|
||||
font-family: 'roboto', sans-serif;
|
||||
background-color: #ccc;
|
||||
font-size: 15px;
|
||||
line-height: 1.5;
|
||||
color: #767270;
|
||||
letter-spacing: 0.072em;
|
||||
font-weight: normal;
|
||||
|
||||
li,
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
padding-top: 9px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 25px;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 10pt;
|
||||
line-height: 17pt;
|
||||
}
|
||||
|
||||
.m_box {
|
||||
box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
.fa {
|
||||
display: inline-block;
|
||||
font-family: FontAwesome;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: 400;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 22pt;
|
||||
line-height: 37pt;
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 12pt;
|
||||
line-height: 20pt;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.rightCol {
|
||||
width: 63.5%;
|
||||
height: 100%;
|
||||
float: right;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.block {
|
||||
box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
|
||||
width: 100%;
|
||||
min-height: 50px;
|
||||
flex: 1;
|
||||
position: relative;
|
||||
background-color: white;
|
||||
padding-top: 24px;
|
||||
padding-bottom: 10px;
|
||||
margin-top: 6px;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.icon {
|
||||
width: 16%;
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
|
||||
.fa {
|
||||
text-align: center;
|
||||
display: block;
|
||||
font-size: 30pt;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 80%;
|
||||
position: absolute;
|
||||
height: 96%;
|
||||
left: 17%;
|
||||
padding-right: 3%;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.item {
|
||||
border-bottom: 1px solid #bdbdbd;
|
||||
flex: 1;
|
||||
width: 97%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
text-align: left;
|
||||
|
||||
span {
|
||||
color: #5da4d9;
|
||||
margin-top: 0;
|
||||
font-size: 10pt;
|
||||
line-height: 16pt;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.item:last-of-type {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.leftCol {
|
||||
width: 35%;
|
||||
height: 100%;
|
||||
float: left;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
color: #ffffff;
|
||||
background-color: #5da4d9;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
|
||||
a {
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.heading {
|
||||
background-color: white;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 340px;
|
||||
}
|
||||
|
||||
.title {
|
||||
position: absolute;
|
||||
right: 25px;
|
||||
bottom: 25px;
|
||||
|
||||
span {
|
||||
margin-top: -5px;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 15pt;
|
||||
}
|
||||
}
|
||||
@paddingVertical: 13px;
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
margin-top: @paddingVertical;
|
||||
float: left;
|
||||
|
||||
.icon {
|
||||
width: 20%;
|
||||
margin-top: 8px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fa {
|
||||
display: inherit;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.text {
|
||||
float: right;
|
||||
width: 69%;
|
||||
padding-right: 10%;
|
||||
padding-bottom: @paddingVertical;
|
||||
border-bottom: 1px solid #4783c2;
|
||||
|
||||
li {
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.skill {
|
||||
clear: both;
|
||||
width: 77%;
|
||||
margin-left: 14%;
|
||||
padding-top: 4px;
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
width: 10%;
|
||||
padding-top: 3px;
|
||||
|
||||
i {}
|
||||
|
||||
i:nth-child(2) {
|
||||
float: left;
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
width: 90%;
|
||||
|
||||
.progress {
|
||||
float: left;
|
||||
position: relative;
|
||||
height: 2px;
|
||||
display: block;
|
||||
width: 95%;
|
||||
background-color: #4783c2;
|
||||
border-radius: 2px;
|
||||
margin: 0.5rem 0 1rem;
|
||||
overflow: visible;
|
||||
|
||||
.determinate {
|
||||
background-color: white;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
.fa {
|
||||
font-size: 12px;
|
||||
position: absolute;
|
||||
top: -6px;
|
||||
right: -2px;
|
||||
margin-left: 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item.last .text {
|
||||
border-bottom-style: none;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#myselfpic {
|
||||
background-image: url("/person.jpg");
|
||||
color: black;
|
||||
}
|
||||
|
||||
#githubIcon {
|
||||
width: 25px;
|
||||
padding-left: 17px;
|
||||
}
|
||||
}
|
||||
@ -1,131 +0,0 @@
|
||||
<page class="a4" id="material-blue">
|
||||
<div class="resume leftCol m_box">
|
||||
<div class="shadow"></div>
|
||||
<div class="heading" id="myselfpic">
|
||||
</div>
|
||||
<div class="section-headline">
|
||||
Contact
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="material-icons">account_circle</i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<ul>
|
||||
<li> Born {{person.birth.year}} in {{person.birth.location}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="material-icons">location_city</i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<ul>
|
||||
<li>{{person.contact.street}}</li>
|
||||
<li>{{person.contact.city}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a href="tel:{{person.contact.phone}}">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="material-icons">phone</i>
|
||||
</div>
|
||||
<div class="text">
|
||||
{{person.contact.phone}}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="mailto:{{person.contact.email}}">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="material-icons">email</i>
|
||||
</div>
|
||||
<div class="text">
|
||||
{{person.contact.email}}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="https://github.com/{{person.contact.github}}" target="_blank">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="fa fa-github"></i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<span>@{{person.contact.github}}</span>
|
||||
<span>github.com/{{person.contact.github}}</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<a href="{{person.contact.website}}" target="_blank">
|
||||
<div class="item">
|
||||
<div class="icon">
|
||||
<i class="material-icons">language</i>
|
||||
</div>
|
||||
<div class="text">
|
||||
<span>{{person.contact.website}}m</span>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
<div class="item last">
|
||||
<div class="section-headline">
|
||||
Skills
|
||||
</div>
|
||||
{{#person.skills}}
|
||||
<div class="skill">
|
||||
<div class="right">
|
||||
<span>{{name}}</span>
|
||||
<div class="progress">
|
||||
<div class="determinate" style="width: {{level}}%;">
|
||||
<i class="fa fa-circle"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="rightCol">
|
||||
<div class="title">
|
||||
<h2>{{person.name.first}} {{person.name.last}}</h2>
|
||||
<div>{{person.position}}</div>
|
||||
</div>
|
||||
|
||||
<div class="section-headline">Working experience</div>
|
||||
|
||||
|
||||
{{#person.experience}}
|
||||
<div class="block">
|
||||
<div class="block-helper"></div>
|
||||
<div class="headline">{{position}} - {{company}}</h3>
|
||||
<div class="subheadline">{{timeperiod}}</div>
|
||||
<p class="info">
|
||||
{{description}}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.experience}}
|
||||
|
||||
<div class="section-headline">Education</div>
|
||||
|
||||
{{#person.education}}
|
||||
<div class="block">
|
||||
<div class="block-helper"></div>
|
||||
<div class="headline">{{degree}}</div>
|
||||
<p class="info">
|
||||
{{timeperiod}}, {{description}}
|
||||
</p>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
<div style="clear:both;"></div>
|
||||
|
||||
</page>
|
||||
@ -1,389 +0,0 @@
|
||||
@main: #d8ab94;
|
||||
@dark: #16151c;
|
||||
@red: #a80202;
|
||||
@determinate: #78909C;
|
||||
|
||||
body {
|
||||
font-family: Roboto !important;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.description-personal {
|
||||
margin-let: 20px;
|
||||
margin-top: 20px;
|
||||
padding-right: 40px;
|
||||
text-align: justify;
|
||||
font-family: Roboto;
|
||||
}
|
||||
|
||||
.title {
|
||||
right: 25px;
|
||||
padding-left: 20px;
|
||||
padding-top: 20px;
|
||||
bottom: 25px;
|
||||
|
||||
h2 {
|
||||
letter-spacing: 10px;
|
||||
text-transform: uppercase;
|
||||
display: block;
|
||||
font-size: 1.17em;
|
||||
-webkit-margin-before: 1em;
|
||||
-webkit-margin-after: 1em;
|
||||
-webkit-margin-start: 0;
|
||||
-webkit-margin-end: 0;
|
||||
color: white;
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
letter-spacing: 10px;
|
||||
font-weight: 400;
|
||||
color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
|
||||
div {
|
||||
margin-top: -5px;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
line-height: 15pt;
|
||||
font-weight: 300;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
color: white;
|
||||
display: block;
|
||||
font-size: 0.67em;
|
||||
-webkit-margin-before: 2.33em;
|
||||
-webkit-margin-start: 0;
|
||||
-webkit-margin-end: 0;
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
color: #16151c;
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
letter-spacing: 3px;
|
||||
font-size: 10pt;
|
||||
opacity: 0.8;
|
||||
color: rgba(63, 61, 60, 0.71);
|
||||
}
|
||||
}
|
||||
|
||||
.section-headline {
|
||||
text-transform: uppercase;
|
||||
font-weight: 500;
|
||||
letter-spacing: 3px;
|
||||
font-size: 10pt;
|
||||
opacity: 0.8;
|
||||
margin-left: 20px;
|
||||
margin-top: 40px;
|
||||
margin-bottom: 20px;
|
||||
color: #3f3d3c;
|
||||
}
|
||||
|
||||
#material-blue {
|
||||
.c {
|
||||
clear: both;
|
||||
}
|
||||
font-family: Roboto, sans-serif !important;
|
||||
background-color: #ccc;
|
||||
font-size: 15px;
|
||||
line-height: 1.5;
|
||||
color: #767270;
|
||||
letter-spacing: 0.072em;
|
||||
font-weight: normal;
|
||||
|
||||
li,
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
padding-top: 9px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 25px;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-weight: 300;
|
||||
font-size: 10pt;
|
||||
line-height: 17pt;
|
||||
}
|
||||
|
||||
.m_box {
|
||||
box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);
|
||||
}
|
||||
|
||||
.fa,
|
||||
.material-icons {
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
line-height: 1;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
font-size: 26px;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: 400;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 22pt;
|
||||
line-height: 37pt;
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 12pt;
|
||||
line-height: 20pt;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.rightCol {
|
||||
width: 63.5%;
|
||||
height: 100%;
|
||||
float: right;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.block {
|
||||
width: 90%;
|
||||
position: relative;
|
||||
background-color: #fff;
|
||||
padding: 20px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
display: inline-block;
|
||||
box-shadow: 0 2px 5px 0 rgba(0,0,0,.16), 0 2px 10px 0 rgba(0,0,0,.12);
|
||||
|
||||
.headline {
|
||||
font-weight: 300;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
color: rgba(0, 0, 0, 0.870588);
|
||||
}
|
||||
|
||||
.subheadline {
|
||||
color: rgba(0, 0, 0, 0.541176);
|
||||
display: block;
|
||||
font-size: 14px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.info {
|
||||
font-size: 14px;
|
||||
color: rgba(0, 0, 0, 0.870588);
|
||||
margin-bottom: 0;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.icon {
|
||||
width: 16%;
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
|
||||
.fa,
|
||||
.material-icons {
|
||||
text-align: center;
|
||||
display: block;
|
||||
font-size: 30pt;
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
width: 80%;
|
||||
position: absolute;
|
||||
height: 96%;
|
||||
left: 17%;
|
||||
padding-right: 3%;
|
||||
text-align: left;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.item {
|
||||
border-bottom: 1px solid #bdbdbd;
|
||||
flex: 1;
|
||||
width: 97%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
text-align: left;
|
||||
padding-top: 0;
|
||||
|
||||
span {
|
||||
color: @main;
|
||||
margin-top: 0;
|
||||
font-size: 10pt;
|
||||
line-height: 16pt;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.item:last-of-type {
|
||||
border-bottom-style: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.leftCol {
|
||||
width: 35%;
|
||||
height: 100%;
|
||||
float: left;
|
||||
padding: 0;
|
||||
text-align: left;
|
||||
color: #ffffff;
|
||||
background-color: @dark;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
color: rgba(255, 255, 255, 0.59);
|
||||
|
||||
.shadow {}
|
||||
|
||||
.section-headline {
|
||||
color: rgba(255, 255, 255, 0.54);
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(255, 255, 255, 0.59);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.heading {
|
||||
background-color: white;
|
||||
background-repeat: no-repeat;
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 277px;
|
||||
}
|
||||
@paddingVertical: 13px;
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
margin-top: @paddingVertical;
|
||||
float: left;
|
||||
|
||||
.icon {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fa,
|
||||
.material-icons {
|
||||
display: inherit;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.text {
|
||||
float: right;
|
||||
width: 69%;
|
||||
padding-right: 10%;
|
||||
padding-top: 0;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
font-weight: 300;
|
||||
|
||||
li {
|
||||
padding-top: 0;
|
||||
display: block;
|
||||
font-size: 15px;
|
||||
font-weight: 300;
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.skill {
|
||||
clear: both;
|
||||
width: 97%;
|
||||
padding-top: 4px;
|
||||
|
||||
.left {
|
||||
float: left;
|
||||
width: 10%;
|
||||
padding-top: 3px;
|
||||
|
||||
i {}
|
||||
|
||||
i:nth-child(2) {
|
||||
float: left;
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.right {
|
||||
float: right;
|
||||
width: 93%;
|
||||
|
||||
.progress {
|
||||
float: left;
|
||||
position: relative;
|
||||
height: 2px;
|
||||
display: block;
|
||||
width: 95%;
|
||||
background-color: rgba(255, 255, 255, 0.19);
|
||||
border-radius: 2px;
|
||||
margin: 0.5rem 0 1rem;
|
||||
overflow: visible;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.determinate {
|
||||
background-color: @determinate;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
|
||||
.fa,
|
||||
.material-icons {
|
||||
font-size: 13px;
|
||||
position: absolute;
|
||||
top: -4px;
|
||||
right: -2px;
|
||||
margin-left: 50%;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.item.last .text {
|
||||
border-bottom-style: none;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
#myselfpic {
|
||||
background-image: url("/person.jpg");
|
||||
color: black;
|
||||
}
|
||||
|
||||
#githubIcon {
|
||||
width: 25px;
|
||||
padding-left: 17px;
|
||||
}
|
||||
}
|
||||
@ -1,80 +0,0 @@
|
||||
<page class="a4">
|
||||
|
||||
<div id="resume3" class="resume" autofont>
|
||||
<div class="resume-header">
|
||||
<div class="triangle"></div>
|
||||
<div class="person-header">
|
||||
<div class="person-wrapper">
|
||||
<div class="person">
|
||||
<div class="name">{{person.name.first}} {{person.name.last}}</div>
|
||||
<div class="position">{{person.position}}</div>
|
||||
</div>
|
||||
<div class="img">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="resume-content">
|
||||
<div class="experience">
|
||||
<h3>Experience</h3>
|
||||
|
||||
{{#person.experience}}
|
||||
<div class="experience-block">
|
||||
<div class="row">
|
||||
<span class="job-title"> {{position}} </span>
|
||||
<i class="material-icons">details</i>
|
||||
<span class="company"> {{company}} </span>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<span class="time-period"> {{timeperiod}}</span>
|
||||
<span class="job-description">, {{description}} </span>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.experience}}
|
||||
</div>
|
||||
<div class="education">
|
||||
<h3>Education</h3>
|
||||
{{#person.education}}
|
||||
<div class="education-block">
|
||||
<div class="row">
|
||||
<span class="degree">{{degree}}</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="degree-description">{{description}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
<div class="skill-section">
|
||||
<h3>Skills</h3>
|
||||
{{#person.skills}}
|
||||
<div class="skills">
|
||||
<div class="skill-block">
|
||||
<i class="material-icons">details</i>
|
||||
<span class="skill">{{name}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
<div class="skills-other">
|
||||
<span>{{person.skillDescription}} </span>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<h3>Contact</h3>
|
||||
<a href="mailto:{{person.contact.email}}"> {{person.contact.email}}</a>
|
||||
<span>; </span>
|
||||
<a href="tel:{{person.contact.phone}}">{{person.contact.phone}}</a>
|
||||
<span>; </span>
|
||||
<span>{{person.contact.street}}, {{person.contact.city}}</span>
|
||||
<span>; </span>
|
||||
<a href="{{person.contact.website}}">
|
||||
{{person.contact.website}}</a>
|
||||
<span>; </span>
|
||||
<a href="https://github.com/{{person.contact.github}}">
|
||||
https://github.com/{{person.contact.github}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
@ -1,170 +0,0 @@
|
||||
@triangle: #006064;
|
||||
@link: black;
|
||||
@nameFontSize: 50px;
|
||||
@positionFontSize: 20px;
|
||||
@firstRowIconFontSize: 17px;
|
||||
@firstRowFontSize: 20px;
|
||||
@educationFirstRowFontSize: 20px;
|
||||
@skillIconFontSize: 17px;
|
||||
@skillFontSize: 20px;
|
||||
@contactFontSize: 20px;
|
||||
|
||||
#resume3 {
|
||||
font-family: 'Open Sans Condensed', sans-serif;
|
||||
padding-bottom: 50px;
|
||||
|
||||
h3 {
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover {
|
||||
color: @link;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.resume-header {
|
||||
.triangle {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
border-width: 600px 0 0 1500px;
|
||||
border-color: @triangle transparent transparent transparent;
|
||||
position: absolute;
|
||||
left: -600px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.person-header {
|
||||
position: absolute;
|
||||
z-index: 20;
|
||||
right: 15%;
|
||||
top: 200px;
|
||||
|
||||
.person-wrapper {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.img {
|
||||
height: 100%;
|
||||
width: 100px;
|
||||
float: left;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
background: url('/person.jpg');
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
.person {
|
||||
float: right;
|
||||
color: white;
|
||||
margin-right: 120px;
|
||||
}
|
||||
|
||||
.name {
|
||||
text-transform: uppercase;
|
||||
font-size: @nameFontSize;
|
||||
display: table-caption;
|
||||
text-align: right;
|
||||
line-height: 1.0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.position {
|
||||
font-size: @positionFontSize;
|
||||
display: table-caption;
|
||||
text-align: right;
|
||||
line-height: 1.0;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.resume-content {
|
||||
margin-top: 435px;
|
||||
margin-left: 15%;
|
||||
width: 70%;
|
||||
|
||||
.experience {
|
||||
.experience-block {
|
||||
line-height: 1;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&:first-of-type {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
.row:first-child {
|
||||
font-size: @firstRowFontSize;
|
||||
text-transform: uppercase;
|
||||
|
||||
i {
|
||||
font-size: @firstRowIconFontSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.education-block {
|
||||
line-height: 1;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.row:first-child {
|
||||
font-size: @educationFirstRowFontSize;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.skill-section {
|
||||
.skills {
|
||||
width: 100%;
|
||||
|
||||
.skill-block {
|
||||
width: 50%;
|
||||
float: left;
|
||||
|
||||
i {
|
||||
font-size: @skillIconFontSize;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.skill {
|
||||
font-size: @skillFontSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.skills-other {
|
||||
display: inline-block;
|
||||
font-size: @skillFontSize;
|
||||
margin-top: 10px;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.contact {
|
||||
margin-top: 50px;
|
||||
|
||||
a,
|
||||
span {
|
||||
display: inline-block;
|
||||
font-size: @contactFontSize;
|
||||
padding-left: 0;
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
margin-top: 0;
|
||||
line-height: 1;
|
||||
float: left;
|
||||
padding-left: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,95 +0,0 @@
|
||||
<page class="a4">
|
||||
<div id="resume2" class="resume" autofont>
|
||||
<div class="top-row">
|
||||
<span class="person-name"> {{person.name.first}} {{person.name.last}} </span>
|
||||
<span class="person-position"> {{person.position}} </span>
|
||||
</div>
|
||||
<div class="left-col">
|
||||
<div class="person-image">
|
||||
<div class="image-centerer">
|
||||
<div class="img"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact">
|
||||
<h3>Contact</h3>
|
||||
<div class="contact-row">
|
||||
<a href="mailto:{{person.contact.email}}">{{person.contact.email}}</a>
|
||||
</div>
|
||||
<div class="contact-row dots">
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="contact-row">
|
||||
<a href="tel:{{person.contact.phone}}">{{person.contact.phone}}</a>
|
||||
</div>
|
||||
<div class="contact-row dots">
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="contact-row">
|
||||
{{person.contact.street}} <br> {{person.contact.city}}
|
||||
</div>
|
||||
<div class="contact-row dots">
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="contact-row">
|
||||
<a href="https://github.com/{{person.contact.github}}">https://github.com/{{person.contact.github}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right-col">
|
||||
<div class="experience">
|
||||
<h3>Experience</h3>
|
||||
{{#person.experience}}
|
||||
<div class="experience-block">
|
||||
<div class="row">
|
||||
<span class="company"> {{company}} -</span>
|
||||
<span class="job-title"> {{position}} </span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="time-period"> {{timeperiod}}</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
|
||||
<span class="job-description"> {{description}} </span>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.experience}}
|
||||
</div>
|
||||
<div class="education">
|
||||
<h3>Education</h3>
|
||||
{{#person.education}}
|
||||
<div class="education-block">
|
||||
<div class="row">
|
||||
<span class="degree">{{degree}}</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="degree-description">{{description}}</span>
|
||||
</div>
|
||||
</div>
|
||||
{{/person.education}}
|
||||
</div>
|
||||
<div class="skills-block">
|
||||
<h3>Skills</h3>
|
||||
|
||||
<div class="skills">
|
||||
{{#person.skills}}
|
||||
<div class="skill">
|
||||
<span class="skill-name">{{name}}</span>
|
||||
</div>
|
||||
{{/person.skills}}
|
||||
</div>
|
||||
|
||||
<span class="skills-other"> {{person.skillDescription}} </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</page>
|
||||
</div>
|
||||
</page>
|
||||
@ -1,183 +0,0 @@
|
||||
@dots: rgba(153, 153, 153, 0.6);
|
||||
@links: black;
|
||||
@skill: #333;
|
||||
@nameFontSize: 50px;
|
||||
@dotsFontSize: 10px;
|
||||
@experienceFontSize: 19px;
|
||||
@educationFontSize: 19px;
|
||||
@skillFontSize: 13px;
|
||||
|
||||
#resume2 {
|
||||
font-family: 'Raleway', sans-serif;
|
||||
padding-bottom: 50px;
|
||||
|
||||
h3 {
|
||||
text-transform: uppercase;
|
||||
padding-top: 0;
|
||||
margin-top: 0;
|
||||
letter-spacing: 5px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
a,
|
||||
a:focus,
|
||||
a:hover,
|
||||
a:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.top-row {
|
||||
width: 100%;
|
||||
padding-top: 100px;
|
||||
padding-bottom: 100px;
|
||||
|
||||
span {
|
||||
width: 100%;
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-weight: normal;
|
||||
|
||||
&.person-name {
|
||||
text-transform: uppercase;
|
||||
font-size: @nameFontSize;
|
||||
letter-spacing: 10px;
|
||||
}
|
||||
|
||||
&.person-position {
|
||||
letter-spacing: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.left-col {
|
||||
width: 26%;
|
||||
float: left;
|
||||
padding-left: 8%;
|
||||
padding-right: 4%;
|
||||
|
||||
.person-image {
|
||||
.image-centerer {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
|
||||
.img {
|
||||
flex: none;
|
||||
background: url('/person.jpg');
|
||||
background-position: center;
|
||||
background-size: cover;
|
||||
height: 250px;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.contact {
|
||||
h3 {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.contact-row {
|
||||
text-align: center;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 3px;
|
||||
|
||||
&:first-of-type {
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
&.dots {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 15px;
|
||||
font-size: @dotsFontSize;
|
||||
color: @dots;
|
||||
}
|
||||
|
||||
a {
|
||||
color: @links;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.right-col {
|
||||
width: 50%;
|
||||
float: right;
|
||||
padding-left: 4%;
|
||||
padding-right: 8%;
|
||||
|
||||
.experience-block {
|
||||
margin-bottom: 10px;
|
||||
|
||||
.row {
|
||||
&:first-child {
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
.company {
|
||||
text-transform: uppercase;
|
||||
font-size: @experienceFontSize;
|
||||
}
|
||||
|
||||
.job-title {
|
||||
font-size: @experienceFontSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.education {
|
||||
margin-top: 50px;
|
||||
|
||||
.education-block {
|
||||
margin-bottom: 10px;
|
||||
|
||||
.degree {
|
||||
font-size: @educationFontSize;
|
||||
text-transform: uppercase;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.skills-block {
|
||||
margin-top: 50px;
|
||||
position: relative;
|
||||
|
||||
.skills {
|
||||
margin-bottom: 10px;
|
||||
position: relative;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: inline-block;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.skill {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
border-radius: 50%;
|
||||
position: relative;
|
||||
border: @skill 1px solid;
|
||||
margin: 3px;
|
||||
float: left;
|
||||
font-size: @skillFontSize;
|
||||
|
||||
.skill-name {
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.skills-other {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,28 +0,0 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="/styles/style.min.css" rel="stylesheet">
|
||||
<script src="/reload/reload.js"></script>
|
||||
<title>Best resume ever</title>
|
||||
<script src="//127.0.0.1:35729/livereload.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="index-page">
|
||||
<h3>Resumes</h3>
|
||||
<p>Click one of the resumes to preview.</p>
|
||||
{{#resumes}}
|
||||
<a class="resume" href="/{{path}}">
|
||||
<img src="/preview/{{path}}.png" />
|
||||
<span class="resume-title">{{name}}</span>
|
||||
</a>
|
||||
{{/resumes}}
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -1,21 +0,0 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="/font-awesome/css/font-awesome.min.css" rel="stylesheet">
|
||||
<link href="/styles/style.min.css" rel=" stylesheet">
|
||||
<link href="/styles/{{style}}.min.css" rel=" stylesheet">
|
||||
<title> Best resume ever</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
{{>content}}
|
||||
|
||||
<script src="/js/gen/javascript.js"></script>
|
||||
<script src="//127.0.0.1:35729/livereload.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@ -1,23 +0,0 @@
|
||||
const Server = require('./node/Server');
|
||||
const StyleCompiler = require('./node/StyleCompiler');
|
||||
const ResumeToPdf = require('./node/ResumeToPdf');
|
||||
|
||||
process.argv.forEach(argument => {
|
||||
switch (argument) {
|
||||
case 'less':
|
||||
StyleCompiler.run();
|
||||
break;
|
||||
case 'pdf':
|
||||
ResumeToPdf.convert();
|
||||
break;
|
||||
case 'server':
|
||||
Server.run();
|
||||
break;
|
||||
case 'kill':
|
||||
Server.kill();
|
||||
break;
|
||||
case 'wait':
|
||||
setTimeout(() => console.log('waiting'), 3000);
|
||||
break;
|
||||
}
|
||||
});
|
||||
@ -1,5 +0,0 @@
|
||||
const Config = {
|
||||
port: 3000
|
||||
};
|
||||
|
||||
module.exports = Config;
|
||||
@ -1,32 +0,0 @@
|
||||
const path = require('path');
|
||||
const Config = require('./Config');
|
||||
const Util = require('./Util');
|
||||
const Server = require('./Server');
|
||||
const ResumeToPdf = {
|
||||
/**
|
||||
* generates electroshot command for screenshoting resume
|
||||
* @param {string} resume resume name in URL
|
||||
* @return {string} electroshot command
|
||||
*/
|
||||
electroshotScript: function(resume) {
|
||||
const dir = path.join(__dirname, '../../pdf');
|
||||
return 'electroshot localhost:' + Config.port + '/' + resume +
|
||||
' 2481x3508 --pdf-margin none --format pdf --out ' + dir +
|
||||
' --filename "' + resume + '.pdf" --pdf-background; ';
|
||||
},
|
||||
/**
|
||||
* converts resumes to pdf
|
||||
* @return {Promise}
|
||||
*/
|
||||
convert: async function() {
|
||||
Server.run();
|
||||
const directories = Util.getResumesFromDirectories();
|
||||
let script = '';
|
||||
directories.forEach(async(resume) => script += this.electroshotScript(resume.path));
|
||||
script = script.substring(0, script.length - 2);
|
||||
await Util.execBash(script);
|
||||
await Server.kill();
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = ResumeToPdf;
|
||||
@ -1,98 +0,0 @@
|
||||
const path = require('path');
|
||||
const express = require('express');
|
||||
const request = require('request-promise');
|
||||
const Config = require('./Config');
|
||||
const Util = require('./Util');
|
||||
const person = require('../person.js');
|
||||
|
||||
const http = require('http');
|
||||
const reload = require('reload');
|
||||
|
||||
let app, resumes;
|
||||
const Server = {
|
||||
/**
|
||||
* sets configurations of express app
|
||||
*/
|
||||
setup: function() {
|
||||
if (!app) app = express();
|
||||
app.set('views', path.join(__dirname, '../../resumes'));
|
||||
app.engine('mustache', require('hogan-express'));
|
||||
app.set('view engine', 'mustache');
|
||||
app.use(express.static(path.join(__dirname, '../../public')));
|
||||
app.use(express.static(path.join(__dirname, '../../node_modules')));
|
||||
},
|
||||
/**
|
||||
* starts up express app
|
||||
*/
|
||||
start: function() {
|
||||
app.listen(Config.port, '0.0.0.0', () => console.log('Listening on localhost:' + Config.port + '!'));
|
||||
},
|
||||
/**
|
||||
* kills express app
|
||||
*/
|
||||
kill: function() {
|
||||
request.get('http://localhost:' + Config.port + '/kill')
|
||||
.catch(error => {
|
||||
if (error) return false;
|
||||
});
|
||||
},
|
||||
/**
|
||||
* sets route of express app
|
||||
* @param {string} path e.g. '/' or '/resumes'
|
||||
* @param {string} template e.g. 'views/resumeX/index'
|
||||
*/
|
||||
setRoute: function(path, template) {
|
||||
app.get(path, (req, res) => {
|
||||
let style = null;
|
||||
const stylePath = path.replace('/', '');
|
||||
if (path != '') style = stylePath;
|
||||
res.render('views/layout', {
|
||||
partials: {
|
||||
content: template
|
||||
},
|
||||
style: style,
|
||||
resumes: resumes,
|
||||
person: person
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* sets route to kill app
|
||||
*/
|
||||
setKillRoute: function() {
|
||||
app.get('/kill', () => process.exit());
|
||||
|
||||
},
|
||||
/**
|
||||
* does autorealod
|
||||
*/
|
||||
autoReload: function() {
|
||||
const server = http.createServer(app);
|
||||
reload(server, app);
|
||||
},
|
||||
/**
|
||||
* sets routes for each resume
|
||||
*/
|
||||
setRoutesForResumes: function() {
|
||||
const directories = Util.getDirectories();
|
||||
for (let resume of directories) {
|
||||
Server.setRoute('/' + resume, resume + '/index');
|
||||
}
|
||||
},
|
||||
/**
|
||||
* run server
|
||||
* @return {Promise} resolves when server is running
|
||||
*/
|
||||
run: async function() {
|
||||
resumes = Util.getResumesFromDirectories();
|
||||
Server.setup();
|
||||
Server.setRoute('/', 'views/index');
|
||||
Server.setRoutesForResumes();
|
||||
Server.setKillRoute();
|
||||
Server.kill();
|
||||
await Util.setTimeout(500);
|
||||
Server.autoReload();
|
||||
Server.start();
|
||||
}
|
||||
};
|
||||
module.exports = Server;
|
||||
@ -1,64 +0,0 @@
|
||||
const less = require('less');
|
||||
const path = require('path');
|
||||
const CleanCSS = require('clean-css');
|
||||
const Util = require('./Util');
|
||||
|
||||
const StyleCompiler = {
|
||||
/**
|
||||
* compiles less string to css string
|
||||
* @param {string} lessContent
|
||||
* @return {string} css
|
||||
*/
|
||||
compile: function(lessContent) {
|
||||
let lessDir = path.join(__dirname, '../../less');
|
||||
return new Promise((res, rej) => {
|
||||
less.render(lessContent, {
|
||||
paths: [lessDir, lessDir + '/fonts'],
|
||||
}, (e, output) => {
|
||||
if (e) rej(e);
|
||||
else res(output.css);
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* minifies css
|
||||
* @param {string} css
|
||||
* @return {string} minified css
|
||||
*/
|
||||
minify: function(css) {
|
||||
return new Promise((res, rej) => {
|
||||
new CleanCSS().minify(css, (err, output) => {
|
||||
if (err) rej(err);
|
||||
else res(output);
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* compiles less files to minified css file
|
||||
* @return {Promise}
|
||||
*/
|
||||
run: async function() {
|
||||
const styleLess = await Util.readFileContent(path.join(__dirname, '../../less/style.less'));
|
||||
const styleCss = await StyleCompiler.compile(styleLess);
|
||||
const styleMinified = await StyleCompiler.minify(styleCss);
|
||||
const stylePath = path.join(__dirname, '../../public/styles/style.min.css');
|
||||
await Util.writeFile(stylePath, styleMinified.styles);
|
||||
|
||||
const directories = Util.getResumesFromDirectories();
|
||||
await Promise.all(
|
||||
directories
|
||||
.map(async(resume) => {
|
||||
const resumeLess = await Util.readFileContent(
|
||||
path.join(__dirname, '../../resumes/' + resume.path + '/style.less')
|
||||
);
|
||||
const resumeCss = await StyleCompiler.compile(resumeLess);
|
||||
const resumeMinified = await StyleCompiler.minify(resumeCss);
|
||||
//write file
|
||||
const resumePath = path.join(__dirname, '../../public/styles/' + resume.path + '.min.css');
|
||||
await Util.writeFile(resumePath, resumeMinified.styles);
|
||||
})
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = StyleCompiler;
|
||||
@ -1,83 +0,0 @@
|
||||
const path = require('path');
|
||||
const writeFile = require('write');
|
||||
const fs = require('fs');
|
||||
const exec = require('child_process').exec;
|
||||
|
||||
const Util = {
|
||||
/**
|
||||
* gets directories starting with 'resume-'
|
||||
* @return {[]}
|
||||
*/
|
||||
getDirectories: function() {
|
||||
const srcpath = path.join(__dirname, '../../resumes');
|
||||
return fs.readdirSync(srcpath)
|
||||
.filter(file => file.includes('resume-'));
|
||||
},
|
||||
/**
|
||||
* gets resumes names and paths from directories
|
||||
* @return {Object[]} array with resumes object {path: '', name: ''}
|
||||
*/
|
||||
getResumesFromDirectories: function() {
|
||||
const directories = this.getDirectories();
|
||||
let resumes = [];
|
||||
directories.forEach(dir => {
|
||||
let name = dir.replace('resume-', '');
|
||||
resumes.push({
|
||||
path: dir,
|
||||
name: name.replace('-', ' ')
|
||||
});
|
||||
});
|
||||
return resumes;
|
||||
},
|
||||
/**
|
||||
* setTimeout as Promise
|
||||
* @param {number} time time in ms
|
||||
* @return {Promise}
|
||||
*/
|
||||
setTimeout: function(time) {
|
||||
return new Promise(res => setTimeout(res, time));
|
||||
},
|
||||
/**
|
||||
* reads file of content
|
||||
* @param {string} dir directory
|
||||
* @return {Promise}
|
||||
*/
|
||||
readFileContent: function(dir) {
|
||||
return new Promise((res, rej) => {
|
||||
fs.readFile(dir, 'utf8', (err, template) => {
|
||||
if (err) rej(err);
|
||||
else res(template);
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* writes content to given file
|
||||
* @param {string} dir directory
|
||||
* @param {string} content content of file
|
||||
* @return {Promise}
|
||||
*/
|
||||
writeFile: async function(dir, content) {
|
||||
return new Promise((res, rej) => {
|
||||
writeFile(dir, content, (err) => {
|
||||
if (err) rej(err);
|
||||
res();
|
||||
});
|
||||
});
|
||||
},
|
||||
/**
|
||||
* executes command
|
||||
* @param {string} script e.g. 'echo "Hello World"'
|
||||
* @return {Promise}
|
||||
*/
|
||||
execBash: function(script) {
|
||||
return new Promise((res, rej) => {
|
||||
exec(script,
|
||||
error => {
|
||||
if (error) rej(error);
|
||||
else res();
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = Util;
|
||||
@ -1,85 +0,0 @@
|
||||
/* eslint-disable */
|
||||
module.exports = {
|
||||
name: {
|
||||
first: 'John',
|
||||
last: 'Doe',
|
||||
},
|
||||
position: 'Software Developer',
|
||||
birth: {
|
||||
year: 1990,
|
||||
location: 'New York'
|
||||
},
|
||||
experience: [{
|
||||
company: 'Company A',
|
||||
position: 'Developer',
|
||||
timeperiod: 'since January 2016',
|
||||
description: 'Programming and watching cute cat videos.'
|
||||
},
|
||||
{
|
||||
company: 'Company B',
|
||||
position: 'Frontend Developer',
|
||||
timeperiod: 'January 2015 - December 2015',
|
||||
description: 'Fulfillment of extremly important tasks.'
|
||||
},
|
||||
{
|
||||
company: 'Company C',
|
||||
position: 'Trainee',
|
||||
timeperiod: 'March 2014 - December 2014',
|
||||
description: 'Making coffee and baking cookies.'
|
||||
}
|
||||
],
|
||||
education: [{
|
||||
degree: 'Master of Arts',
|
||||
timeperiod: 'March 2012 - December 2013',
|
||||
description: 'Major in Hacking and Computer Penetration, University A, New York, USA.'
|
||||
},
|
||||
{
|
||||
degree: 'Bachelor of Science',
|
||||
timeperiod: 'March 2009 - December 2011',
|
||||
description: 'Major in Engineering, University B, Los Angeles, USA.'
|
||||
}
|
||||
],
|
||||
// skill level goes 0 to 100
|
||||
skills: [{
|
||||
name: 'HTML5',
|
||||
level: '99'
|
||||
},
|
||||
{
|
||||
name: 'CSS3',
|
||||
level: '95'
|
||||
},
|
||||
{
|
||||
name: 'JavaScript',
|
||||
level: '97'
|
||||
},
|
||||
{
|
||||
name: 'Node.js',
|
||||
level: '93'
|
||||
},
|
||||
{
|
||||
name: 'Angular 2',
|
||||
level: '60'
|
||||
},
|
||||
{
|
||||
name: 'TypeScript',
|
||||
level: '80'
|
||||
},
|
||||
{
|
||||
name: 'ES.Next',
|
||||
level: '70'
|
||||
},
|
||||
{
|
||||
name: 'Docker',
|
||||
level: '99'
|
||||
}
|
||||
],
|
||||
skillDescription: 'Also proficient in Adobe Photoshop and Illustrator, grew up bilingual (English and Klingon).',
|
||||
contact: {
|
||||
email: 'john.doe@email.com',
|
||||
phone: '0123 456789',
|
||||
street: '1234 Broadway',
|
||||
city: 'New York',
|
||||
website: 'johndoe.com',
|
||||
github: 'johnyD'
|
||||
}
|
||||
};
|
||||