REMOVE /old

This commit is contained in:
salomonelli 2017-06-04 13:34:36 +02:00
parent ef06b18a3d
commit 23e4fb693d
68 changed files with 0 additions and 4254 deletions

View File

@ -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']);
};

View File

@ -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']);
};

View File

@ -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.

View File

@ -1 +0,0 @@
theme: jekyll-theme-cayman

View File

@ -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";
```

View File

@ -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"}]

View File

@ -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"]
}
]
}
};

View File

@ -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();

View File

@ -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";

View File

@ -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 */
}

View File

@ -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';
}

View File

@ -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;
}

View File

@ -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');
}

View File

@ -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 */

View File

@ -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 */

View File

@ -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");
}

View File

@ -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');
}

View File

@ -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');
}

View File

@ -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%;
}
}

View File

@ -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"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 KiB

View File

@ -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}

View File

@ -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}

View File

@ -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}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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}

File diff suppressed because one or more lines are too long

View File

@ -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>

View File

@ -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;
}
}
}
}
}

View File

@ -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>

View File

@ -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;
}
}
}

View File

@ -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>

View File

@ -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;
}
}

View File

@ -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>

View File

@ -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;
}
}

View File

@ -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>;&nbsp;</span>
<a href="tel:{{person.contact.phone}}">{{person.contact.phone}}</a>
<span>;&nbsp;</span>
<span>{{person.contact.street}}, {{person.contact.city}}</span>
<span>;&nbsp;</span>
<a href="{{person.contact.website}}">
{{person.contact.website}}</a>
<span>;&nbsp;</span>
<a href="https://github.com/{{person.contact.github}}">
https://github.com/{{person.contact.github}}</a>
</div>
</div>
</div>
</page>

View File

@ -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;
}
}
}

View File

@ -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>

View File

@ -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;
}
}
}
}
}

View File

@ -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>

View File

@ -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>

View File

@ -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;
}
});

View File

@ -1,5 +0,0 @@
const Config = {
port: 3000
};
module.exports = Config;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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'
}
};