@page { size: letter portrait; margin: 0; } @media print { body { -webkit-print-color-adjust: exact; } } * { box-sizing: border-box; } :root { --master-font-size: 16px; --page-width: 8.5in; --page-height: 11in; --page-top-padding: 0.25in; --main-width: 6.3in; --sidebar-width: calc(var(--page-width) - var(--main-width)); --decorator-horizontal-margin: 0.2in; --sidebar-horizontal-padding: 0.2in; /* XXX: using px for very good precision control */ --decorator-outer-offset-top: 10px; --decorator-outer-offset-left: -5.5px; --decorator-border-width: 1px; --decorator-outer-dim: 9px; --decorator-border: 1px solid #ccc; --row-blocks-padding-top: 5pt; --date-block-width: 0.6in; --main-blocks-title-icon-offset-left: -19pt; --primary-text-color: #444; } body { width: var(--page-width); height: var(--page-height); margin: 0; font-family: "Open Sans", sans-serif; font-weight: 300; line-height: 1.3; color: var(--primary-text-color); hyphens: none; } h1, h2, h3, h4 { margin: 0; color: #000; } h4 { margin: 10px 0 5px; } li { list-style-type: none; } a { color: var(--primary-text-color); text-decoration: none; transition: color 0.25s linear; } a:hover { color: #000; } #main { float: left; width: var(--main-width); padding: var(--page-top-padding) 0.25in 0 0.25in; font-size: 10pt; } #sidebar { float: right; position: relative; /* for disclaimer */ width: var(--sidebar-width); height: 100%; padding: var(--page-top-padding) var(--sidebar-horizontal-padding); background-color: #eae9e9; font-size: 8.5pt; } /* main */ /** big title **/ #title, h1, h2 { text-transform: uppercase; } #title { position: relative; left: 0.55in; margin-bottom: 0.15in; line-height: 1.2; } #title h1 { font-weight: 300; font-size: 22pt; line-height: 1; } #title h1 strong { margin: auto 2pt auto 4pt; font-weight: 600; } .subtitle { font-size: 8pt; } /*** categorial blocks ***/ #mission-statement { position: relative; margin: 0 0 0.15in 0.55in; } .main-block { margin-top: 0.1in; } #main h2 { position: relative; top: var(--row-blocks-padding-top); /* XXX: 0.5px for aligning fx printing */ left: calc((var(--date-block-width) + var(--decorator-horizontal-margin))); font-weight: 400; font-size: calc(var(--master-font-size) * 1.1); color: #555; } #main h2 > i { /* use absolute position to prevent icon's width from misaligning title */ /* assigning a fixed width here is no better due to needing to align decorator line too */ position: absolute; left: var(--main-blocks-title-icon-offset-left); z-index: 1; /* over decorator line */ color: #444; } #main h2::after { /* extends the decorator line */ height: calc(var(--row-blocks-padding-top) * 2); position: relative; top: calc(-1 * var(--row-blocks-padding-top)); /* XXX: 0.5px for aligning fx printing */ left: calc(-1 * var(--decorator-horizontal-margin)); display: block; border-left: var(--decorator-border); z-index: 0; line-height: 0; font-size: 0; content: " "; } /**** minor tweaks on the icon fonts ****/ #main h2 > .fa-graduation-cap { left: calc(var(--main-blocks-title-icon-offset-left) - 2pt); top: 2pt; } #main h2 > .fa-suitcase { top: 1pt; } #main h2 > .fa-folder-open { top: 1.5pt; } /**** individual row blocks (date - decorator - details) ****/ .blocks { display: flex; flex-flow: row nowrap; } .blocks > div { padding-top: var(--row-blocks-padding-top); } .date { flex: 0 0 var(--date-block-width); padding-top: calc(var(--row-blocks-padding-top) + 2.5pt) !important; padding-right: var(--decorator-horizontal-margin); font-size: calc(var(--master-font-size) * 0.7); text-align: right; line-height: 1; } .date span { display: block; text-align: center; } .date span:nth-child(2)::before { position: relative; top: 1pt; display: block; height: 10pt; content: "|"; } .decorator { flex: 0 0 0; position: relative; width: 2pt; min-height: 100%; border-left: var(--decorator-border); } /* * XXX: Use two filled circles to achieve the circle-with-white-border effect. * The normal technique of only using one pseudo element and * border: 1px solid white; style makes firefox erroneously either: * 1) overflows the grayshade background (if no background-clip is set), or * 2) shows decorator line which should've been masked by the white border * */ .decorator::before { position: absolute; top: var(--decorator-outer-offset-top); left: var(--decorator-outer-offset-left); content: " "; display: block; width: var(--decorator-outer-dim); height: var(--decorator-outer-dim); border-radius: calc(var(--decorator-outer-dim) / 2); background-color: #fff; } .decorator::after { position: absolute; top: calc(var(--decorator-outer-offset-top) + var(--decorator-border-width)); left: calc( var(--decorator-outer-offset-left) + var(--decorator-border-width) ); content: " "; display: block; width: calc(var(--decorator-outer-dim) - (var(--decorator-border-width) * 2)); height: calc( var(--decorator-outer-dim) - (var(--decorator-border-width) * 2) ); border-radius: calc( (var(--decorator-outer-dim) - (var(--decorator-border-width) * 2)) / 2 ); background-color: #555; } .blocks:last-child .decorator { /* slightly shortens it */ margin-bottom: 0.1in; } /***** fine-tunes on the details block where the real juice is *****/ .details { flex: 1 0 0; padding-left: var(--decorator-horizontal-margin); padding-top: calc(var(--row-blocks-padding-top) - 0.5pt) !important; /* not sure why but this is needed for better alignment */ } .details header { color: #000; } .details h3 { font-size: calc(var(--master-font-size) * 1); } .main-block:not(.concise) .details div { margin: 0.25in 0 0.1in 0; } .main-block:not(.concise) .blocks:last-child .details div { margin-bottom: 0; } .main-block.concise .details div:not(.concise) { /* use padding to work around the fact that margin doesn't affect floated neighboring elements */ padding: 0.05in 0 0.07in 0; } .details .place { float: left; font-size: calc(var(--master-font-size) * 0.8); } .details .location { float: right; font-size: calc(var(--master-font-size) * 0.8); } .details div { clear: both; } .details .location::before { display: inline-block; position: relative; right: 3pt; top: 0.25pt; font-family: FontAwesome; font-weight: normal; font-style: normal; text-decoration: inherit; content: "\f041"; } /***** fine-tunes on the lists... *****/ #main ul { padding-left: 0.07in; margin: 0in 0; } #main li { display: flex; margin: 0 0 0.1in 0; } /****** customize list symbol style ******/ #main li::before { position: relative; margin-left: -4.25pt; margin-right: 5px; content: "•"; } .details ul.concise { margin: 0 !important; -webkit-columns: 2; -moz-columns: 2; columns: 2; } .details .concise li { margin: 0 !important; } .details .concise li { margin-left: 0 !important; } /* sidebar */ #sidebar h2 { font-weight: 400; font-size: 12pt; } #sidebar h3 { font-weight: 400; font-size: 10pt; line-height: 10pt; } #sidebar li { font-size: 9pt; } #sidebar .side-block:first-child { margin-top: 0; } .side-block { margin-top: 0.25in; } #contact ul, #education ul { margin-top: 0.05in; padding-left: 0; font-weight: 400; line-height: 1.75; font-size: 12px; } #contact li > i, #education li > i { width: 9pt; /* for text alignment */ text-align: right; margin-right: 5px; } #skills { line-height: 1.5; } #skills ul { margin: 0 0 0.05in; padding: 0; } #skills h1 { margin-bottom: 4px; } .group { margin: 20px 0; } .group:first-of-type { margin: 10px 0; } .group ul li:first-child { margin-top: 5px; } /** util classes **/ .centered { text-align: center; }