Jekyll2023-08-18T13:33:49+00:00https://sanjaymeena.io/feed.xmlSeeking WisdomBlog on Equities, Tech, BooksSanjay Meenasanjaymeena@gmail.comKaizen (改善)- The art of continuous life improvement2020-01-01T00:00:00+00:002020-01-01T00:00:00+00:00https://sanjaymeena.io/books/book_notes_kaizen_way_the_art_of_continuous_life_improvement<blockquote>
<p>The journey of a thousand miles must begin with a single step</p>
<ul>
<li>Lao Tzu</li>
</ul>
</blockquote>
<p><strong>Kaizen(改善)</strong> is a japanese philosophy that can help you to improve the efficiency and quality of your daily life. Its the same philosophy that helped Japan get back on its feet after the terrible destruction it faced during second world war.</p>
<p>Kaizen way is about implementing small changes, monitoring their results and then making adjustments wherever needed. This way over a period of time, these small improvements have compounding effect which can have life changing results.</p>
<p><img src="/images/posts/books/kaizen_way/pdca.png" align="centre" height="500" width="500" alt="Meaning of Kaizen and the improvement loop" /></p>
<p><em>Fig 1: Meaning of Kaizen and the improvement loop</em></p>
<p><b> Table of Content </b></p>
<ul id="markdown-toc">
<li><a href="#pearl-of-wisdoms" id="markdown-toc-pearl-of-wisdoms">Pearl of Wisdoms</a> <ul>
<li><a href="#dont-try-to-do-everything-perfectly-its-alright-even-if-you-get-it-50-right" id="markdown-toc-dont-try-to-do-everything-perfectly-its-alright-even-if-you-get-it-50-right">Don’t try to do everything perfectly. It’s alright even if you get it 50% right</a></li>
<li><a href="#whenever-you-commit-an-error-acknowledge-and-correct-it-immediately" id="markdown-toc-whenever-you-commit-an-error-acknowledge-and-correct-it-immediately">Whenever you commit an error, acknowledge and correct it immediately</a></li>
<li><a href="#you-should-ask-why-at-least-5-times-and-try-to-find-the-root-causes" id="markdown-toc-you-should-ask-why-at-least-5-times-and-try-to-find-the-root-causes">You should ask “Why” at least 5 times and try to find the root causes</a></li>
<li><a href="#go-after-wisdom-and-not-just-knowledge" id="markdown-toc-go-after-wisdom-and-not-just-knowledge">Go after wisdom, and not just knowledge</a></li>
<li><a href="#your-true-potential-and-wisdom-gets-revealed-only-in-hardship" id="markdown-toc-your-true-potential-and-wisdom-gets-revealed-only-in-hardship">Your true potential and wisdom gets revealed only in hardship</a></li>
<li><a href="#rather-than-thinking-why-something-cant-be-done-think-about-how-you-can-do-it" id="markdown-toc-rather-than-thinking-why-something-cant-be-done-think-about-how-you-can-do-it">Rather than thinking ‘why something can’t be done’, think about how you can do it.</a></li>
<li><a href="#get-rid-of-the-conventional-notions" id="markdown-toc-get-rid-of-the-conventional-notions">Get rid of the conventional notions</a></li>
</ul>
</li>
<li><a href="#references" id="markdown-toc-references">References</a></li>
</ul>
<h1 id="pearl-of-wisdoms">Pearl of Wisdoms</h1>
<p>Lets go through some pearls of wisdom that are critical in the successful implementation of Kaizen concepts.</p>
<h2 id="dont-try-to-do-everything-perfectly-its-alright-even-if-you-get-it-50-right">Don’t try to do everything perfectly. It’s alright even if you get it 50% right</h2>
<p>Life is rarely perfect. What’s more important is that we’re doing the work, achieving goals and getting things done. We can start doing this by aiming for a 50-80% solution.</p>
<p><strong>Getting things done is more important than perfection.</strong> We can always make adjustments later as we go along.</p>
<p>We need to remember <em>Gall’s law</em> here:</p>
<blockquote>
<p>Every complex system evolved from a simpler system.</p>
</blockquote>
<h2 id="whenever-you-commit-an-error-acknowledge-and-correct-it-immediately">Whenever you commit an error, acknowledge and correct it immediately</h2>
<p><em>Mistakes are part of life. Everyone makes them!</em></p>
<p>Once a mistake happens, we must accept it, acknowledge it, especially if it impacts other people in your environment.</p>
<p>Ask an airplane pilot and he’d tell you that a plane is rarely on it due course. Its always slightly off during its entire journey. However, the pilot or autopilot mode keeps adjustment to ensure that it reaches its destination. The same holds true for personal development.</p>
<h2 id="you-should-ask-why-at-least-5-times-and-try-to-find-the-root-causes">You should ask “Why” at least 5 times and try to find the root causes</h2>
<p><em>Why?</em> has a lot of inherent power in it!</p>
<p>If there’s a strong why associated with something, ‘how’ definitely comes up after some time. Asking why repeatedly can help you unearth new layers and get to the root cause of the issue.</p>
<p>The smartest people are not the ones who have all the answers, but the ones who ask the right questions!</p>
<h2 id="go-after-wisdom-and-not-just-knowledge">Go after wisdom, and not just knowledge</h2>
<p>Wisdom is the ability to take actions based on our cumulative knowledge, insights, experiences, common sense…</p>
<p><strong>How do we get more wisdom?</strong></p>
<ul>
<li>If we really want to be successful at something, the best way to get about it is by asking a group of people who’ve already been there and done that and learn from their wisdom.</li>
</ul>
<p><strong>How do we connect with these people?</strong></p>
<ul>
<li>
<p>If we can’t connect with them 1-1 , we can always read their books, blogs, watch their videos, listen to their podcasts.</p>
</li>
<li>
<p>We can also go to many internet forums where we can actively participate, surround ourself with like minded people and brainstorm together.</p>
</li>
</ul>
<h2 id="your-true-potential-and-wisdom-gets-revealed-only-in-hardship">Your true potential and wisdom gets revealed only in hardship</h2>
<p><em>Embrace the hardship! Embrace everything!</em></p>
<p>Even though challenges are undesirable, they are normally tremendous learning opportunities</p>
<p>Always be thankful and take full responsibility, it puts you in the strongest position.</p>
<h2 id="rather-than-thinking-why-something-cant-be-done-think-about-how-you-can-do-it">Rather than thinking ‘why something can’t be done’, think about how you can do it.</h2>
<p>Have a clear vision of where you are going, what you want to achieve and why, and ‘how’ will gradually reveal itself more and more.</p>
<p>As you take action, your vision will become clearer and cleared and it might also evolve into something else. The universe in some way rewards the one who dares to follow their heart.</p>
<h2 id="get-rid-of-the-conventional-notions">Get rid of the conventional notions</h2>
<p>Statistics reveal that 95% of the global population is not at all interested in taking any life-improvement steps. Conventional wisdom suggests that there’s no need to keep learning throughout one’s life.</p>
<p>People must continue to learn and improve. We need to keep growing as that is in our true nature.</p>
<h1 id="references">References</h1>
<ul>
<li>Book : Kaizen Way - The art of continuous life improvement</li>
<li>Author: Nicolas Carter</li>
</ul>Sanjay Meenasanjaymeena@gmail.comThe art of continuous life improvementHow to Lie with Statistics2019-06-05T00:00:00+00:002019-06-05T00:00:00+00:00https://sanjaymeena.io/tech/how_to_lie_with_statistics<p>I have written a blog post on <a href="https://medium.com/p/how-to-lie-with-statistics-b671b66399d?source=email-c78b6fd46a--writer.postDistributed&sk=ebfedf62c6fcdf6b8a91b1f8abe0ac9d">“How to Lie with Statistics”</a> on <a href="https://medium.com/p/how-to-lie-with-statistics-b671b66399d?source=email-c78b6fd46a--writer.postDistributed&sk=ebfedf62c6fcdf6b8a91b1f8abe0ac9d">Medium</a>. Please check out it out. The original version written by me is <a href="https://sanjaymeena.io/books/book_notes_how_to_lie_with_stats/">here</a></p>Sanjay MeenaThere is something about numbers isn’t there? They have an uncanny ability to suspend our common sense.Your Guide to Sentiment Analysis2019-02-08T00:00:00+00:002019-02-08T00:00:00+00:00https://sanjaymeena.io/tech/your-guide-to-sentiment-analysis<p>I had written this post on <a href="https://medium.com/seek-blog/your-guide-to-sentiment-analysis-344d43d225a7">Medium</a> for my company. Please check it out <a href="https://medium.com/seek-blog/your-guide-to-sentiment-analysis-344d43d225a7">here</a></p>Sanjay MeenaSentiment Analysis is used to discover people’s opinions, emotions and feelings about a product or service.UX Design Principles and Investing2018-11-09T00:00:00+00:002018-11-09T00:00:00+00:00https://sanjaymeena.io/investing/applying-ux-design-principles-to-investing<h1 id="introduction">Introduction</h1>
<p>I started working at <a href="https://www.seek.com.au/">Seek</a> since past few weeks. I saw some posters from the User interface designer team that really caught my attention. I started wondering if many of these principles can be applied to other domains. A little big of digging and i found Laws of User Interface design on web.</p>
<p>Laws of UX is a collection of the maxims and principles that designers can consider when building user interfaces. It was created by <a href="https://jonyablonski.com/">Jon Yablonski</a>. The maxims are illustrated beautifully and you can see them <a href="https://lawsofux.com/">here</a></p>
<p>I started thinking if many of these principles can be applicable to investing.</p>
<h2 id="parkinson-law">Parkinson’ law</h2>
<p><img src="/images/posts/investment_notes/ux_design/parkinsons_law.png" height="100" width="300" /></p>
<p>Parkinson’s law is the adage that</p>
<blockquote>
<p>“work expands so as to fill the time available for its completion”.</p>
</blockquote>
<p>When applied to personal finance, Parkinson’s law states that expenses always match income. This implies that when income increases, expenses always increase to the same level as income.</p>
<p>One of the reasons why Parkinson’s law sets in is because of our consumer driven world. The latest phone or cars are constantly advertised and they make us feel, if we don’t have latest this or that, then we are missing out.</p>
<p>We should not allow Parkinson’s law to take place in our lives is because it prevents us from building an investment portfolio. We often feel there will always be time to save, but that may not be the case.</p>
<h2 id="occams-razor">Occam’s Razor</h2>
<p><img src="/images/posts/investment_notes/ux_design/occams_razor.png" height="100" width="300" /></p>
<p>Occam’s razor principle states that if there are multiple competing hypothesis, the one with fewest assumptions should be selected. In other words, simpler is usually better.</p>
<p>Another interesting way to explain Occam’s razor is through one of its humorous (but equally valid) offshoots called Hanlon’s Razor:</p>
<blockquote>
<p>Never attribute to malice what can be explained by incompetence or stupidity.</p>
</blockquote>
<p>It’s also applicable to our finances and investments. Complexity doesn’t necessarily result in higher investment returns.</p>
<p>Investment analysis often require numerous assumptions. The greater the complexity, larger the dispersion of possible outcomes. We should avoid too much complication in our investing decisions. Some examples are :</p>
<ul>
<li>Diworsification : If you can achieve your asset and sector allocation goals with a handful of stocks, you should not complicate things by owning too many different shares or instruments.</li>
<li>Buy/Hold/Sell decisions : One should resist the temptation to sell a share on every bad news. Similarly shares that do very well in certain circumstances should be avoided. Those circumstances may not arise again for many years.</li>
</ul>
<h2 id="pareto-principle">Pareto Principle</h2>
<p><img src="/images/posts/investment_notes/ux_design/pareto_principle.png" height="100" width="300" /></p>
<p>This is a popular principle which states that :</p>
<blockquote>
<p>80% of the effects come from 20% of the events.</p>
</blockquote>
<p>This principle is widely applicable to investing also :</p>
<ul>
<li>20% of our best stocks will probably generate 80% of our overall profit.</li>
<li>20% of the time we spent doing research usually generates 80% of the most useful information</li>
<li>80% of the time we spent doing research is likely not very productive.</li>
</ul>
<h2 id="von-restoraff-effect">Von Restoraff Effect</h2>
<p><img src="/images/posts/investment_notes/ux_design/von_restoraff_effect.png" height="100" width="300" /></p>
<blockquote>
<p>Something that stands out is more likely to be remembered. So a highlighted item on the list is more likely to be remembered than the remainder of the list.</p>
</blockquote>
<p>People will tend to invest in stocks they remember because they’re either popular or they’ve been recently in the news. In essence we’re biased in favor of remembering the unusual. Unfortunately relying on our memories to recall possible investment targets isn’t really a very sensible approach.</p>
<h2 id="teslers-law">Tesler’s Law</h2>
<p><img src="/images/posts/investment_notes/ux_design/teslers_law.png" height="100" width="300" /></p>
<blockquote>
<p>Tesler’s Law, also known as the Law of Conservation of Complexity, states that for any system there is a certain amount of complexity which cannot be reduced.</p>
</blockquote>
<p>The law of conservation of energy states that total energy of an isolated system remains constant, it cannot be created nor destroyed. Instead, energy transforms from one form to another. Similarly there must be a law of conservation of complexity.</p>
<p>Based on that, one way to describe simplicity is being devoid of unnecessary complexity.</p>
<p>All companies considered for investment have an inherent amount of irreducible complexity. The complexity can be due many factors like company structure, holding companies, subsidiaries, acquisitions, other investments etc.</p>
<p>An investor can only make things simple to understand to an extent. Making things too simple beyond a point lead to make many assumptions that can have undesirable effects.</p>
<p>References:</p>
<ul>
<li><a href="https://lawsofux.com">Laws of UX </a></li>
<li><a href="https://blog.marvelapp.com/simplicity-is-overrated/">Simplicity is Overrated</a></li>
<li><a href="https://www.humanist.co/blog/law-of-conservation-of-complexity/">Law of conservation of complexity</a></li>
</ul>Sanjay Meenasanjaymeena@gmail.comApplying UX design principles to investingHow to get rich (Without getting Lucky)2018-11-04T00:00:00+00:002018-11-04T00:00:00+00:00https://sanjaymeena.io/misc/how-to-get-rich<p>Naval Ravikant (<a href="https://twitter.com/naval/status/1002103360646823936?lang=en">@naval</a>) is one of my favorite thinkers. He is CEO and founder of AngelList. He’s invested in more than 100 companies including Uber, Twitter, Yammer, and many others.</p>
<p>His thoughts on various topics of Investing, Life, Economics are profound. He has a wonderful <a href="https://twitter.com/naval/status/1002103360646823936?lang=en">twitter thread</a> on “How to get Rich (Without getting Lucky)” which i am reproducing here for sharing and learning purpose.</p>
<blockquote>
<p>Seek Wealth, not money or status. Wealth is having assets that earn while you sleep. Money is how we transfer time and wealth. Status is your place in the social hierarchy.</p>
</blockquote>
<blockquote>
<p>Understand that ethical wealth creation is possible. If you secretly despise wealth, it will elude you.</p>
</blockquote>
<blockquote>
<p>Ignore people playing status games. They gain status by attacking people playing wealth creation games.</p>
</blockquote>
<blockquote>
<p>You’re not going to get rich by renting out your time. You must own equity - a piece of business - to gain you financial freedom.</p>
</blockquote>
<blockquote>
<p>You will get rich by giving society what it wants but does not yet know how to get. At Scale.</p>
</blockquote>
<blockquote>
<p>Pick an industry where you can play long term gains with long term people.</p>
</blockquote>
<blockquote>
<p>The Internet has massively broadened the the possible space of careers. Most people haven’t figured this out yet.</p>
</blockquote>
<blockquote>
<p>Pick iterated games. All the returns in life, whether in wealth, relationships, or knowledge, come from compound interest.</p>
</blockquote>
<blockquote>
<p>Pick business partners with high intelligence, energy, and above all, integrity.</p>
</blockquote>
<blockquote>
<p>Don’t partner with cynics and pessimists. Their beliefs are self-fulfilling.</p>
</blockquote>
<blockquote>
<p>Learn to sell, Learn to build. If you can do both, you will be unstoppable.</p>
</blockquote>
<blockquote>
<p>Arm yourself with specific knowledge, accountability, and leverage.</p>
</blockquote>
<blockquote>
<p>Specific knowledge is knowledge that you cannot be trained for. If society can train you, it can train someone else, and replace you.</p>
</blockquote>
<blockquote>
<p>Specific knowledge is found by pursuing your genuine curiosity and passion rather than whatever is hot right now.</p>
</blockquote>
<blockquote>
<p>Building specific knowledge will feel like play to you but will look like work to others.</p>
</blockquote>
<blockquote>
<p>When specific knowledge is taught, it is through apprenticeships, not schools.</p>
</blockquote>
<blockquote>
<p>Specific knowledge is often highly technical or creative. It cannot be outsourced or automated.</p>
</blockquote>
<blockquote>
<p>Embrace accountability and take business risks under your name. Society will reward you with responsibility, equity, and leverage</p>
</blockquote>
<blockquote>
<p>The most accountable persons have singular, public, and risky brands : Oprah Winfrey, Donald Trump, Kanye west, Elon Musk</p>
</blockquote>
<blockquote>
<p>“Give me a lever long enough, and a place to stand , and i will move the earth” - Archimedes</p>
</blockquote>
<blockquote>
<p>Fortune requires leverage. Business leverage comes from capital, people and products with no marginal cost of replication (code and media).</p>
</blockquote>
<blockquote>
<p>Capital means money. To raise money, apply your specific knowledge, with accountability, and show resulting good judgment.</p>
</blockquote>
<blockquote>
<p>Labor means people working for you. It’s the oldest and most fought-over form of leverage. Labor leverage will impress your parents, but don’t waster your life chasing it.</p>
</blockquote>
<blockquote>
<p>Capital and labor are permissionless leverage. Everyone is chasing capital, but someone has to give it to you. Everyone is trying to lead, but someone has to follow you.</p>
</blockquote>
<blockquote>
<p>Code and media are permissionless leverage. They’re the leverage behind the newly rich. You can create software and media that works for you while you sleep.</p>
</blockquote>
<blockquote>
<p>An army of robots is freely available - it’s just packed in data centers for heat and space efficiency . Use it.</p>
</blockquote>
<blockquote>
<p>If you can’t code, write books and blogs, record videos and podcasts.</p>
</blockquote>
<blockquote>
<p>Leverage is a force multiplier for your judgement.</p>
</blockquote>
<blockquote>
<p>Judgement requires experience, but can be build faster by learning foundational skills.</p>
</blockquote>
<blockquote>
<p>There is no skill called “Business”. Avoid business magazines and business classes.</p>
</blockquote>
<blockquote>
<p>Study microeconomics, game theory, psychology, persuasion, ethics, mathematics, and computers.</p>
</blockquote>
<blockquote>
<p>Reading is faster than listening. Doing is faster than watching.</p>
</blockquote>
<blockquote>
<p>You should be too busy to “do coffee”, while still keeping an uncluttered calendar.</p>
</blockquote>
<blockquote>
<p>Set and enforce an aspirational personal hourly rate. If fixing a problem will save less than your hourly rate, ignore it. If outsourcing a task will cost less than your hourly rate, outsource it.</p>
</blockquote>
<blockquote>
<p>Work as hard as you can. Even though who you work with and what you work on are more important than how hard you work.</p>
</blockquote>
<blockquote>
<p>Become the best in the world at what you do. Keep redefining what you do until this is true.</p>
</blockquote>
<blockquote>
<p>There are no get rich quick schemes. That’s just someone else getting rich off you.</p>
</blockquote>
<blockquote>
<p>Apply specific knowledge, with leverage, and eventually you will get what you deserve.</p>
</blockquote>
<blockquote>
<p>When you’re wealthy, you’ll realize that it wasn’t what you were seeking in the first place. But that’s for another day.</p>
</blockquote>Sanjay Meenasanjaymeena@gmail.comHow to Get Rich - NavalismHow to Lie with Statistics2018-06-19T00:00:00+00:002018-06-19T00:00:00+00:00https://sanjaymeena.io/books/book_notes_how_to_lie_with_stats<p><b> Table of Content </b></p>
<ul id="markdown-toc">
<li><a href="#introduction" id="markdown-toc-introduction">Introduction</a></li>
<li><a href="#biased-samples---the-samples-with-the-built-in-bias" id="markdown-toc-biased-samples---the-samples-with-the-built-in-bias">Biased Samples - The samples with the built in bias</a></li>
<li><a href="#the-well-chosen-average" id="markdown-toc-the-well-chosen-average">The Well Chosen Average</a></li>
<li><a href="#discarded-data-the-data-which-is-absent" id="markdown-toc-discarded-data-the-data-which-is-absent">Discarded Data, The data which is absent.</a></li>
<li><a href="#graph-manipulation" id="markdown-toc-graph-manipulation">Graph Manipulation</a> <ul>
<li><a href="#non-zero-baseline" id="markdown-toc-non-zero-baseline">Non Zero Baseline</a></li>
<li><a href="#incomplete-data" id="markdown-toc-incomplete-data">Incomplete Data</a></li>
</ul>
</li>
<li><a href="#correlation-vs-causation" id="markdown-toc-correlation-vs-causation">Correlation vs Causation</a></li>
<li><a href="#semi-attached-figure" id="markdown-toc-semi-attached-figure">Semi Attached Figure</a></li>
<li><a href="#how-to-statisticulatemanipulate" id="markdown-toc-how-to-statisticulatemanipulate">How to Statisticulate/Manipulate</a></li>
<li><a href="#how-to-talk-back-to-statistics" id="markdown-toc-how-to-talk-back-to-statistics">How to talk back to Statistics</a> <ul>
<li><a href="#who-says-so-" id="markdown-toc-who-says-so-">Who says so ?</a></li>
<li><a href="#how-does-he-know" id="markdown-toc-how-does-he-know">How does he know?</a></li>
<li><a href="#whats-missing" id="markdown-toc-whats-missing">What’s missing?</a></li>
<li><a href="#did-someone-change-the-subject" id="markdown-toc-did-someone-change-the-subject">Did someone change the subject?</a></li>
<li><a href="#does-it-make-sense" id="markdown-toc-does-it-make-sense">Does it make sense</a></li>
</ul>
</li>
<li><a href="#references" id="markdown-toc-references">References</a></li>
</ul>
<h1 id="introduction">Introduction</h1>
<p>Semantics basically means “Study of meaning”. Semantically correct means that you’re calling something what it actually is.</p>
<p>“Without Writers who use the words with honesty and understanding and readers who know what they mean, the result can only be semantic nonsense”</p>
<p>“A well-wrapped statistic is better than Hitler’s big lie; it misleads yet it cannot be pinned down” The crooks already know these tricks; honest men must learn them in self defense.</p>
<p>Sneaky use of statistics is quite common in news, media and even medical research. Once we know this statistical tricks it is difficult to unsee them.</p>
<h1 id="biased-samples---the-samples-with-the-built-in-bias">Biased Samples - The samples with the built in bias</h1>
<p>“Average Americans brushes their teeth 1.02 times a day.” When we hear these statistic, We can ask many questions. :</p>
<ul>
<li>How could they have figured out</li>
<li>Does it make sense that it could have been researched properly. In case if it had been researched, don’t we think that people could have lied ?</li>
</ul>
<p>Many conclusions we see come from samples that are too small , biased or both. If our sample is large enough and selected properly , it will represent the whole well enough for most purposes. If it is not, it may be far less accurate than an intelligent guess.</p>
<p>A result of a sampling study is no better than the sample it is based on . By the time data have been filtered through layers of statistical manipulations and reduced to a decimal pointed average, the result would look very convincing. A close look at the sample will dent the confidence.</p>
<p>A pure random sample is the only kind that can be examined with complete confidence by statistical theories. There is one big thing wrong there. It is so difficult and expensive to obtain for many uses that the sheer cost eliminates it. A more economical substitute which is almost universally used in such fields as opinion polling and market research, is called stratified random sampling.</p>
<p>To get stratified random sampling, we divided the population into several groups in proportion to their known prevalence. There are few big issues there :</p>
<ul>
<li>The information about the proportions may not be correct.</li>
<li>On top of that, how do you get a random sample within the stratification?</li>
</ul>
<p>The obvious thing is to start with a name of everyone and go after names choses from it randomly. but this is too expensive.</p>
<p>So we go into the streets, bias your sample against stay at home people. We go from door to door by day and miss out on employed people . We switch to evening interviews and neglect the movie-goers and night-clubbers.</p>
<p><img src="/images/posts/books/how_to_lie_with_statistics/biased_sampling.jpg" height="400" width="400" /></p>
<p>To summarize it is very important to choose the right sample selection process and to do it correctly so that exact findings may be attained. For Clients it is important to inquire about the sample selection process to understand the possible biases in the Results.</p>
<h1 id="the-well-chosen-average">The Well Chosen Average</h1>
<p>There are tricks that can be manipulated by the user/researcher while using average in describing any fact. The main idea is that there are three types of averages rather than one which is commonly assumed. The same data can give three different types of values when all three types of averages are calculated.</p>
<p>The 3 type of averages are :</p>
<ol>
<li>Mean : The mean is the usual average</li>
<li>Median : The median is the median value, after sorting the data in order.</li>
<li>Mode : The mode is the number repeated more often than any other number .</li>
</ol>
<p>We assume that these are same but in reality different kind of scenario requires different kinds of average to describe the situation precisely. The reporters and others many times choose the one that supports their argument.</p>
<p>In normal distributions (Bell curve) , the three will be near to each other but in irregular distributions (e.g annual household income), these numbers will be vastly different.</p>
<p><img src="/images/posts/books/how_to_lie_with_statistics/mean_median_mode.jpg" height="400" width="400" /></p>
<h1 id="discarded-data-the-data-which-is-absent">Discarded Data, The data which is absent.</h1>
<p><img src="/images/posts/books/how_to_lie_with_statistics/hiding_numbers.jpg" height="400" width="400" /></p>
<p>The statistics that are used by the marketing of advertising world of consumer products can be tricky. Obviously the statistics are highly going to be in favor of the product. However there are many underlying tricks.</p>
<p>First the sample size can be very small. With smaller sample sizes, the variance is large. With 10 coin flips you can get 8 heads, but you’re not much likely to get 80 heads in 100 coin flips.</p>
<p>By hiding the prevailing situation or pros and cons of an environment, any result of any study can be diverted according the desire of the researcher.</p>
<p>Companies can keep running experiments until they get the results they want, discarding the experiments that failed to produce “significant findings.”</p>
<p>In summary , statistics is often used to prove some irrational proposition where there is no actual scope or reason. In doing so , they amplify a very small difference between two phenomena and try to prove one’s superiority over other but which difference is basically very normal.</p>
<h1 id="graph-manipulation">Graph Manipulation</h1>
<p>Numbers are not always good enough or adequate to make any report worthy or comprehensible.
There is no doubt that pictures are easy to understand and there is no better way to way to make numbers comprehensible to mass people.</p>
<p>Lets look at some graph examples</p>
<h2 id="non-zero-baseline">Non Zero Baseline</h2>
<p><img src="/images/posts/books/how_to_lie_with_statistics/wrong_baseline_graph.jpg" height="400" width="400" /></p>
<p>A first look at this graph makes it look like three times as many democrats supported the decision. But on closer inspection, note the scale on the vertical axis. Only slightly more democrats supported than republicans (62% vs. 54%).</p>
<h2 id="incomplete-data">Incomplete Data</h2>
<p>If you really want to make a shocking statement, make sure you only include part of the data. Take this first example of a misleading graph that proves global warming is real. In the graph and data below only Jan-July month data is included!</p>
<p><img src="/images/posts/books/how_to_lie_with_statistics/incomplete_data_graph.jpg" height="500" width="500" /></p>
<h1 id="correlation-vs-causation">Correlation vs Causation</h1>
<p>Smoking can take the grades of a student downward; It was a finding that made a good number of people happy. The study was conducted meeting all the standards of statistics but it was based on the ancient fallacy that tells that “if B follows A, then A has cause B” . Correlations are part of our everyday life, and it is so easy to be misleading and assume it as a cause of some event.</p>
<p>It can very well be other way round that low grades may lead to smoking. Another fact is that both smoking and low grades can be result of third factor of not taking books seriously.</p>
<p>The trick used very commonly in media is relating an issue with another non-relevant issue very smartly just to serve the purpose of the presenter. In some cases there might be a positive correlation but this correlation too works up to a mark to grow the effect positively but after that it may hinder.</p>
<p><img src="/images/posts/books/how_to_lie_with_statistics/correlation vs causation.jpg" height="600" width="600" /></p>
<p>Have a look at the image above. At first glance , it may appear as if ice cream sales and shark attacks are correlated. Should we believe that sharks are attracted to ice creams and hence shark attack happens? The answer, of course, is No! Shark attacks are likelier to happen in summer, which is also the season when ice cream consumption goes up.</p>
<p>The main idea here is that there might be correlation between two events but there are other factors influencing and bringing changes.
The kind of manipulation done here is to relate on one of the hundred possible effects which is not exclusive at all with the concerned issue and to claim that this input has bought the result.</p>
<h1 id="semi-attached-figure">Semi Attached Figure</h1>
<p><img src="/images/posts/books/how_to_lie_with_statistics/the_semi_attached_figure.jpg" height="400" width="500" /></p>
<p>“If you can’t prove what you want to prove, demonstrate something else and pretend that they are the same thing.”</p>
<p>The semi attached figure is a tool that can be used to cope with any situation that is not much in favor of presenter.</p>
<p>Consider some examples :</p>
<ul>
<li>Clear weather is more dangerous than foggy weather as more accidents occur in clear weather. More accidents happen in clear weather because there is more clear weather than foggy weather.</li>
<li>The remedy of cold that kills germs not only kills that specific germ but also all the different types of germs in the test tube. The smartness here is not to tell about the other germs but only about the specific germ.</li>
</ul>
<p>Another trick is based on the fact that same data can be expressed in different ways. For e.g. same fact about a company can be</p>
<ul>
<li>1% return on sales</li>
<li>15% return on investment</li>
<li>a 10 million $ profit</li>
<li>an increase in profits of 40% compared with some old average</li>
<li>a decrease of 60% from last year</li>
</ul>
<p>All these stories are told partially which is partially true but the whole story brings a different meaning.</p>
<h1 id="how-to-statisticulatemanipulate">How to Statisticulate/Manipulate</h1>
<p>It is not always the statisticians who are busy to produce manipulated statistics. Rather a good or pure set of findings may be found distorted in the market by sales man. Sometimes the policy designers or statisticians are not that much skilled to find or interpret the exact relationship between two events/phenomena and that leads to a poor policy</p>
<p>Percentages and Percentage offer a fertile field for confusion. And like the ever-impressive decimal they can lend an aura of precision to the inexact.</p>
<p>Example : There is a tale of a roadside merchant selling rabbit sandwich .
<img src="/images/posts/books/how_to_lie_with_statistics/how_to_statisticulate.jpg" height="400" width="500" /></p>
<p>He was asked to explain how he was able to sell rabbit sandwich so cheap. “Well,” he said, “I have to put in some horse meat too. <b> But i mix’em 50:50, one horse, one rabbit !!” </b></p>
<h1 id="how-to-talk-back-to-statistics">How to talk back to Statistics</h1>
<p><img src="/images/posts/books/how_to_lie_with_statistics/how_to_talk_to_stats.jpg" height="200" width="200" /></p>
<p>5 simple questions :</p>
<h2 id="who-says-so-">Who says so ?</h2>
<p>The “Who” question affects the reliability of the information.</p>
<p>First thing to look for is bias - the laboratory with something to prove for the sake of a theory, a reputation, or a fee.</p>
<p>Look for a conscious bias. The method may be direct misstatement or it may be ambiguous statement that cannot be convicted. It may be selection of favorable data and suppression of unfavorable data. Units of measurement may be shifted . A different average like median , mode may be used covered under the unqualified word “average”</p>
<p>Look carefully for unconscious bias. It is often lot more dangerous</p>
<h2 id="how-does-he-know">How does he know?</h2>
<p>In what way the information for the study was known? Was it reliable? Did people respond honestly?</p>
<h2 id="whats-missing">What’s missing?</h2>
<p>It is noticed that the most used technique to present distorted information is to hide information. So seeking hidden or missing information can reveal lot more truth than the author says.</p>
<h2 id="did-someone-change-the-subject">Did someone change the subject?</h2>
<p>It is like changing the direction of the study and present a different kind of result.</p>
<h2 id="does-it-make-sense">Does it make sense</h2>
<p>Any statistical calculation will lead us to infer decision from it. As it is obvious, we will be lured to infer on the basis of that calculation. It is not necessary that every inference is meaningful .</p>
<p>So as a common man, and not being an expert the last question to ask is that does it make sense or just irrational and out of context.</p>
<h1 id="references">References</h1>
<ul>
<li>Book - How to lie with Statistics - Darrell Huff</li>
<li>Internet for pictures</li>
</ul>Sanjay Meenasanjaymeena@gmail.comA well-wrapped statistic is better than Hitler's big lie; it misleads yet it cannot be pinned downMarket Phases2018-01-11T00:00:00+00:002018-01-11T00:00:00+00:00https://sanjaymeena.io/investing/investment_cycle<h1 id="introduction">Introduction</h1>
<p>Nature likes to follow cycles and markets are no different. Markets cycle can be understood by looking at different phases they normally go through. Knowing what stage we are in the markets can help us to make better investing decisions. It may help us to control our urges to give in and buy over valued and junk stocks.</p>
<h2 id="valuation-vs-time">Valuation vs Time</h2>
<p>Mean Reversion is a powerful mental model. The reversion to mean is an ‘iron law’ of stock investing and its only the time factor which may make people forget about it.</p>
<p><img src="/images/posts/investment_notes/market_phases/classic_bull_phases.jpg" height="400" width="900" /></p>
<h2 id="behaviour-of-participants-in-bear-and-bull-market">Behaviour of participants in Bear and Bull Market</h2>
<p>Stock Markets are classified into Bear and Bull Markets (Sideways can be considered another phase). Each phase seems to follow a trend of behaviour by market participants</p>
<p><img src="/images/posts/investment_notes/market_phases/phases2.jpg" height="700" width="900" /></p>Sanjay Meenasanjaymeena@gmail.comNature likes to follow cycles and markets are no different.Sentiment Analysis for User Reviews2017-10-14T00:00:00+00:002017-10-14T00:00:00+00:00https://sanjaymeena.io/tech/Sentiment_Analysis_Reviews<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>Sentiment Analysis</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<style type="text/css">
/*!
*
* Twitter Bootstrap
*
*/
/*!
* Bootstrap v3.3.7 (https://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
border: 0;
padding: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "\002a";
}
.glyphicon-plus:before {
content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20ac";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270f";
}
.glyphicon-glass:before {
content: "\e001";
}
.glyphicon-music:before {
content: "\e002";
}
.glyphicon-search:before {
content: "\e003";
}
.glyphicon-heart:before {
content: "\e005";
}
.glyphicon-star:before {
content: "\e006";
}
.glyphicon-star-empty:before {
content: "\e007";
}
.glyphicon-user:before {
content: "\e008";
}
.glyphicon-film:before {
content: "\e009";
}
.glyphicon-th-large:before {
content: "\e010";
}
.glyphicon-th:before {
content: "\e011";
}
.glyphicon-th-list:before {
content: "\e012";
}
.glyphicon-ok:before {
content: "\e013";
}
.glyphicon-remove:before {
content: "\e014";
}
.glyphicon-zoom-in:before {
content: "\e015";
}
.glyphicon-zoom-out:before {
content: "\e016";
}
.glyphicon-off:before {
content: "\e017";
}
.glyphicon-signal:before {
content: "\e018";
}
.glyphicon-cog:before {
content: "\e019";
}
.glyphicon-trash:before {
content: "\e020";
}
.glyphicon-home:before {
content: "\e021";
}
.glyphicon-file:before {
content: "\e022";
}
.glyphicon-time:before {
content: "\e023";
}
.glyphicon-road:before {
content: "\e024";
}
.glyphicon-download-alt:before {
content: "\e025";
}
.glyphicon-download:before {
content: "\e026";
}
.glyphicon-upload:before {
content: "\e027";
}
.glyphicon-inbox:before {
content: "\e028";
}
.glyphicon-play-circle:before {
content: "\e029";
}
.glyphicon-repeat:before {
content: "\e030";
}
.glyphicon-refresh:before {
content: "\e031";
}
.glyphicon-list-alt:before {
content: "\e032";
}
.glyphicon-lock:before {
content: "\e033";
}
.glyphicon-flag:before {
content: "\e034";
}
.glyphicon-headphones:before {
content: "\e035";
}
.glyphicon-volume-off:before {
content: "\e036";
}
.glyphicon-volume-down:before {
content: "\e037";
}
.glyphicon-volume-up:before {
content: "\e038";
}
.glyphicon-qrcode:before {
content: "\e039";
}
.glyphicon-barcode:before {
content: "\e040";
}
.glyphicon-tag:before {
content: "\e041";
}
.glyphicon-tags:before {
content: "\e042";
}
.glyphicon-book:before {
content: "\e043";
}
.glyphicon-bookmark:before {
content: "\e044";
}
.glyphicon-print:before {
content: "\e045";
}
.glyphicon-camera:before {
content: "\e046";
}
.glyphicon-font:before {
content: "\e047";
}
.glyphicon-bold:before {
content: "\e048";
}
.glyphicon-italic:before {
content: "\e049";
}
.glyphicon-text-height:before {
content: "\e050";
}
.glyphicon-text-width:before {
content: "\e051";
}
.glyphicon-align-left:before {
content: "\e052";
}
.glyphicon-align-center:before {
content: "\e053";
}
.glyphicon-align-right:before {
content: "\e054";
}
.glyphicon-align-justify:before {
content: "\e055";
}
.glyphicon-list:before {
content: "\e056";
}
.glyphicon-indent-left:before {
content: "\e057";
}
.glyphicon-indent-right:before {
content: "\e058";
}
.glyphicon-facetime-video:before {
content: "\e059";
}
.glyphicon-picture:before {
content: "\e060";
}
.glyphicon-map-marker:before {
content: "\e062";
}
.glyphicon-adjust:before {
content: "\e063";
}
.glyphicon-tint:before {
content: "\e064";
}
.glyphicon-edit:before {
content: "\e065";
}
.glyphicon-share:before {
content: "\e066";
}
.glyphicon-check:before {
content: "\e067";
}
.glyphicon-move:before {
content: "\e068";
}
.glyphicon-step-backward:before {
content: "\e069";
}
.glyphicon-fast-backward:before {
content: "\e070";
}
.glyphicon-backward:before {
content: "\e071";
}
.glyphicon-play:before {
content: "\e072";
}
.glyphicon-pause:before {
content: "\e073";
}
.glyphicon-stop:before {
content: "\e074";
}
.glyphicon-forward:before {
content: "\e075";
}
.glyphicon-fast-forward:before {
content: "\e076";
}
.glyphicon-step-forward:before {
content: "\e077";
}
.glyphicon-eject:before {
content: "\e078";
}
.glyphicon-chevron-left:before {
content: "\e079";
}
.glyphicon-chevron-right:before {
content: "\e080";
}
.glyphicon-plus-sign:before {
content: "\e081";
}
.glyphicon-minus-sign:before {
content: "\e082";
}
.glyphicon-remove-sign:before {
content: "\e083";
}
.glyphicon-ok-sign:before {
content: "\e084";
}
.glyphicon-question-sign:before {
content: "\e085";
}
.glyphicon-info-sign:before {
content: "\e086";
}
.glyphicon-screenshot:before {
content: "\e087";
}
.glyphicon-remove-circle:before {
content: "\e088";
}
.glyphicon-ok-circle:before {
content: "\e089";
}
.glyphicon-ban-circle:before {
content: "\e090";
}
.glyphicon-arrow-left:before {
content: "\e091";
}
.glyphicon-arrow-right:before {
content: "\e092";
}
.glyphicon-arrow-up:before {
content: "\e093";
}
.glyphicon-arrow-down:before {
content: "\e094";
}
.glyphicon-share-alt:before {
content: "\e095";
}
.glyphicon-resize-full:before {
content: "\e096";
}
.glyphicon-resize-small:before {
content: "\e097";
}
.glyphicon-exclamation-sign:before {
content: "\e101";
}
.glyphicon-gift:before {
content: "\e102";
}
.glyphicon-leaf:before {
content: "\e103";
}
.glyphicon-fire:before {
content: "\e104";
}
.glyphicon-eye-open:before {
content: "\e105";
}
.glyphicon-eye-close:before {
content: "\e106";
}
.glyphicon-warning-sign:before {
content: "\e107";
}
.glyphicon-plane:before {
content: "\e108";
}
.glyphicon-calendar:before {
content: "\e109";
}
.glyphicon-random:before {
content: "\e110";
}
.glyphicon-comment:before {
content: "\e111";
}
.glyphicon-magnet:before {
content: "\e112";
}
.glyphicon-chevron-up:before {
content: "\e113";
}
.glyphicon-chevron-down:before {
content: "\e114";
}
.glyphicon-retweet:before {
content: "\e115";
}
.glyphicon-shopping-cart:before {
content: "\e116";
}
.glyphicon-folder-close:before {
content: "\e117";
}
.glyphicon-folder-open:before {
content: "\e118";
}
.glyphicon-resize-vertical:before {
content: "\e119";
}
.glyphicon-resize-horizontal:before {
content: "\e120";
}
.glyphicon-hdd:before {
content: "\e121";
}
.glyphicon-bullhorn:before {
content: "\e122";
}
.glyphicon-bell:before {
content: "\e123";
}
.glyphicon-certificate:before {
content: "\e124";
}
.glyphicon-thumbs-up:before {
content: "\e125";
}
.glyphicon-thumbs-down:before {
content: "\e126";
}
.glyphicon-hand-right:before {
content: "\e127";
}
.glyphicon-hand-left:before {
content: "\e128";
}
.glyphicon-hand-up:before {
content: "\e129";
}
.glyphicon-hand-down:before {
content: "\e130";
}
.glyphicon-circle-arrow-right:before {
content: "\e131";
}
.glyphicon-circle-arrow-left:before {
content: "\e132";
}
.glyphicon-circle-arrow-up:before {
content: "\e133";
}
.glyphicon-circle-arrow-down:before {
content: "\e134";
}
.glyphicon-globe:before {
content: "\e135";
}
.glyphicon-wrench:before {
content: "\e136";
}
.glyphicon-tasks:before {
content: "\e137";
}
.glyphicon-filter:before {
content: "\e138";
}
.glyphicon-briefcase:before {
content: "\e139";
}
.glyphicon-fullscreen:before {
content: "\e140";
}
.glyphicon-dashboard:before {
content: "\e141";
}
.glyphicon-paperclip:before {
content: "\e142";
}
.glyphicon-heart-empty:before {
content: "\e143";
}
.glyphicon-link:before {
content: "\e144";
}
.glyphicon-phone:before {
content: "\e145";
}
.glyphicon-pushpin:before {
content: "\e146";
}
.glyphicon-usd:before {
content: "\e148";
}
.glyphicon-gbp:before {
content: "\e149";
}
.glyphicon-sort:before {
content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\e152";
}
.glyphicon-sort-by-order:before {
content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
content: "\e154";
}
.glyphicon-sort-by-attributes:before {
content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\e156";
}
.glyphicon-unchecked:before {
content: "\e157";
}
.glyphicon-expand:before {
content: "\e158";
}
.glyphicon-collapse-down:before {
content: "\e159";
}
.glyphicon-collapse-up:before {
content: "\e160";
}
.glyphicon-log-in:before {
content: "\e161";
}
.glyphicon-flash:before {
content: "\e162";
}
.glyphicon-log-out:before {
content: "\e163";
}
.glyphicon-new-window:before {
content: "\e164";
}
.glyphicon-record:before {
content: "\e165";
}
.glyphicon-save:before {
content: "\e166";
}
.glyphicon-open:before {
content: "\e167";
}
.glyphicon-saved:before {
content: "\e168";
}
.glyphicon-import:before {
content: "\e169";
}
.glyphicon-export:before {
content: "\e170";
}
.glyphicon-send:before {
content: "\e171";
}
.glyphicon-floppy-disk:before {
content: "\e172";
}
.glyphicon-floppy-saved:before {
content: "\e173";
}
.glyphicon-floppy-remove:before {
content: "\e174";
}
.glyphicon-floppy-save:before {
content: "\e175";
}
.glyphicon-floppy-open:before {
content: "\e176";
}
.glyphicon-credit-card:before {
content: "\e177";
}
.glyphicon-transfer:before {
content: "\e178";
}
.glyphicon-cutlery:before {
content: "\e179";
}
.glyphicon-header:before {
content: "\e180";
}
.glyphicon-compressed:before {
content: "\e181";
}
.glyphicon-earphone:before {
content: "\e182";
}
.glyphicon-phone-alt:before {
content: "\e183";
}
.glyphicon-tower:before {
content: "\e184";
}
.glyphicon-stats:before {
content: "\e185";
}
.glyphicon-sd-video:before {
content: "\e186";
}
.glyphicon-hd-video:before {
content: "\e187";
}
.glyphicon-subtitles:before {
content: "\e188";
}
.glyphicon-sound-stereo:before {
content: "\e189";
}
.glyphicon-sound-dolby:before {
content: "\e190";
}
.glyphicon-sound-5-1:before {
content: "\e191";
}
.glyphicon-sound-6-1:before {
content: "\e192";
}
.glyphicon-sound-7-1:before {
content: "\e193";
}
.glyphicon-copyright-mark:before {
content: "\e194";
}
.glyphicon-registration-mark:before {
content: "\e195";
}
.glyphicon-cloud-download:before {
content: "\e197";
}
.glyphicon-cloud-upload:before {
content: "\e198";
}
.glyphicon-tree-conifer:before {
content: "\e199";
}
.glyphicon-tree-deciduous:before {
content: "\e200";
}
.glyphicon-cd:before {
content: "\e201";
}
.glyphicon-save-file:before {
content: "\e202";
}
.glyphicon-open-file:before {
content: "\e203";
}
.glyphicon-level-up:before {
content: "\e204";
}
.glyphicon-copy:before {
content: "\e205";
}
.glyphicon-paste:before {
content: "\e206";
}
.glyphicon-alert:before {
content: "\e209";
}
.glyphicon-equalizer:before {
content: "\e210";
}
.glyphicon-king:before {
content: "\e211";
}
.glyphicon-queen:before {
content: "\e212";
}
.glyphicon-pawn:before {
content: "\e213";
}
.glyphicon-bishop:before {
content: "\e214";
}
.glyphicon-knight:before {
content: "\e215";
}
.glyphicon-baby-formula:before {
content: "\e216";
}
.glyphicon-tent:before {
content: "\26fa";
}
.glyphicon-blackboard:before {
content: "\e218";
}
.glyphicon-bed:before {
content: "\e219";
}
.glyphicon-apple:before {
content: "\f8ff";
}
.glyphicon-erase:before {
content: "\e221";
}
.glyphicon-hourglass:before {
content: "\231b";
}
.glyphicon-lamp:before {
content: "\e223";
}
.glyphicon-duplicate:before {
content: "\e224";
}
.glyphicon-piggy-bank:before {
content: "\e225";
}
.glyphicon-scissors:before {
content: "\e226";
}
.glyphicon-bitcoin:before {
content: "\e227";
}
.glyphicon-btc:before {
content: "\e227";
}
.glyphicon-xbt:before {
content: "\e227";
}
.glyphicon-yen:before {
content: "\00a5";
}
.glyphicon-jpy:before {
content: "\00a5";
}
.glyphicon-ruble:before {
content: "\20bd";
}
.glyphicon-rub:before {
content: "\20bd";
}
.glyphicon-scale:before {
content: "\e230";
}
.glyphicon-ice-lolly:before {
content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
content: "\e232";
}
.glyphicon-education:before {
content: "\e233";
}
.glyphicon-option-horizontal:before {
content: "\e234";
}
.glyphicon-option-vertical:before {
content: "\e235";
}
.glyphicon-menu-hamburger:before {
content: "\e236";
}
.glyphicon-modal-window:before {
content: "\e237";
}
.glyphicon-oil:before {
content: "\e238";
}
.glyphicon-grain:before {
content: "\e239";
}
.glyphicon-sunglasses:before {
content: "\e240";
}
.glyphicon-text-size:before {
content: "\e241";
}
.glyphicon-text-color:before {
content: "\e242";
}
.glyphicon-text-background:before {
content: "\e243";
}
.glyphicon-object-align-top:before {
content: "\e244";
}
.glyphicon-object-align-bottom:before {
content: "\e245";
}
.glyphicon-object-align-horizontal:before {
content: "\e246";
}
.glyphicon-object-align-left:before {
content: "\e247";
}
.glyphicon-object-align-vertical:before {
content: "\e248";
}
.glyphicon-object-align-right:before {
content: "\e249";
}
.glyphicon-triangle-right:before {
content: "\e250";
}
.glyphicon-triangle-left:before {
content: "\e251";
}
.glyphicon-triangle-bottom:before {
content: "\e252";
}
.glyphicon-triangle-top:before {
content: "\e253";
}
.glyphicon-console:before {
content: "\e254";
}
.glyphicon-superscript:before {
content: "\e255";
}
.glyphicon-subscript:before {
content: "\e256";
}
.glyphicon-menu-left:before {
content: "\e257";
}
.glyphicon-menu-right:before {
content: "\e258";
}
.glyphicon-menu-down:before {
content: "\e259";
}
.glyphicon-menu-up:before {
content: "\e260";
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 1.42857143;
color: #000;
background-color: #fff;
}
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
color: #23527c;
text-decoration: underline;
}
a:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
figure {
margin: 0;
}
img {
vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
display: block;
max-width: 100%;
height: auto;
}
.img-rounded {
border-radius: 3px;
}
.img-thumbnail {
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 2px;
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
display: inline-block;
max-width: 100%;
height: auto;
}
.img-circle {
border-radius: 50%;
}
hr {
margin-top: 18px;
margin-bottom: 18px;
border: 0;
border-top: 1px solid #eeeeee;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
[role="button"] {
cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
margin-top: 18px;
margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
margin-top: 9px;
margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
font-size: 75%;
}
h1,
.h1 {
font-size: 33px;
}
h2,
.h2 {
font-size: 27px;
}
h3,
.h3 {
font-size: 23px;
}
h4,
.h4 {
font-size: 17px;
}
h5,
.h5 {
font-size: 13px;
}
h6,
.h6 {
font-size: 12px;
}
p {
margin: 0 0 9px;
}
.lead {
margin-bottom: 18px;
font-size: 14px;
font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
.lead {
font-size: 19.5px;
}
}
small,
.small {
font-size: 92%;
}
mark,
.mark {
background-color: #fcf8e3;
padding: .2em;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-justify {
text-align: justify;
}
.text-nowrap {
white-space: nowrap;
}
.text-lowercase {
text-transform: lowercase;
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitalize {
text-transform: capitalize;
}
.text-muted {
color: #777777;
}
.text-primary {
color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
color: #286090;
}
.text-success {
color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
color: #2b542c;
}
.text-info {
color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
color: #245269;
}
.text-warning {
color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
color: #66512c;
}
.text-danger {
color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
color: #843534;
}
.bg-primary {
color: #fff;
background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
background-color: #c1e2b3;
}
.bg-info {
background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
background-color: #afd9ee;
}
.bg-warning {
background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
background-color: #f7ecb5;
}
.bg-danger {
background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
background-color: #e4b9b9;
}
.page-header {
padding-bottom: 8px;
margin: 36px 0 18px;
border-bottom: 1px solid #eeeeee;
}
ul,
ol {
margin-top: 0;
margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
margin-bottom: 0;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
margin-left: -5px;
}
.list-inline > li {
display: inline-block;
padding-left: 5px;
padding-right: 5px;
}
dl {
margin-top: 0;
margin-bottom: 18px;
}
dt,
dd {
line-height: 1.42857143;
}
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
@media (min-width: 541px) {
.dl-horizontal dt {
float: left;
width: 160px;
clear: left;
text-align: right;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dl-horizontal dd {
margin-left: 180px;
}
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777777;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
blockquote {
padding: 9px 18px;
margin: 0 0 18px;
font-size: inherit;
border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
padding-right: 15px;
padding-left: 0;
border-right: 5px solid #eeeeee;
border-left: 0;
text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
address {
margin-bottom: 18px;
font-style: normal;
line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
font-family: monospace;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 2px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #888;
background-color: transparent;
border-radius: 1px;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: bold;
box-shadow: none;
}
pre {
display: block;
padding: 8.5px;
margin: 0 0 9px;
font-size: 12px;
line-height: 1.42857143;
word-break: break-all;
word-wrap: break-word;
color: #333333;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 2px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
margin-right: auto;
margin-left: auto;
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 768px) {
.container {
width: 768px;
}
}
@media (min-width: 992px) {
.container {
width: 940px;
}
}
@media (min-width: 1200px) {
.container {
width: 1140px;
}
}
.container-fluid {
margin-right: auto;
margin-left: auto;
padding-left: 0px;
padding-right: 0px;
}
.row {
margin-left: 0px;
margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-left: 0px;
padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
.col-xs-12 {
width: 100%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-pull-0 {
right: auto;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-push-0 {
left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-0 {
margin-left: 0%;
}
@media (min-width: 768px) {
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
.col-sm-12 {
width: 100%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-pull-0 {
right: auto;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-push-0 {
left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-0 {
margin-left: 0%;
}
}
@media (min-width: 992px) {
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
.col-md-12 {
width: 100%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-9 {
width: 75%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-6 {
width: 50%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-3 {
width: 25%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-pull-0 {
right: auto;
}
.col-md-push-12 {
left: 100%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-push-0 {
left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-0 {
margin-left: 0%;
}
}
@media (min-width: 1200px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
.col-lg-12 {
width: 100%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-pull-0 {
right: auto;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-push-0 {
left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-0 {
margin-left: 0%;
}
}
table {
background-color: transparent;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777777;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #ddd;
}
.table .table {
background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
position: static;
float: none;
display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
float: none;
display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
.table-responsive {
overflow-x: auto;
min-height: 0.01%;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 13.5px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}
fieldset {
padding: 0;
margin: 0;
border: 0;
min-width: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 18px;
font-size: 19.5px;
line-height: inherit;
color: #333333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
label {
display: inline-block;
max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
input[type="search"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
line-height: normal;
}
input[type="file"] {
display: block;
}
input[type="range"] {
display: block;
width: 100%;
}
select[multiple],
select[size] {
height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
output {
display: block;
padding-top: 7px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
}
.form-control {
display: block;
width: 100%;
height: 32px;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
color: #999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999;
}
.form-control::-webkit-input-placeholder {
color: #999;
}
.form-control::-ms-expand {
border: 0;
background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eeeeee;
opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed;
}
textarea.form-control {
height: auto;
}
input[type="search"] {
-webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
line-height: 32px;
}
input[type="date"].input-sm,
input[type="time"].input-sm,
input[type="datetime-local"].input-sm,
input[type="month"].input-sm,
.input-group-sm input[type="date"],
.input-group-sm input[type="time"],
.input-group-sm input[type="datetime-local"],
.input-group-sm input[type="month"] {
line-height: 30px;
}
input[type="date"].input-lg,
input[type="time"].input-lg,
input[type="datetime-local"].input-lg,
input[type="month"].input-lg,
.input-group-lg input[type="date"],
.input-group-lg input[type="time"],
.input-group-lg input[type="datetime-local"],
.input-group-lg input[type="month"] {
line-height: 45px;
}
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
min-height: 18px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-left: -20px;
margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
vertical-align: middle;
font-weight: normal;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
cursor: not-allowed;
}
.form-control-static {
padding-top: 7px;
padding-bottom: 7px;
margin-bottom: 0;
min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
padding-left: 0;
padding-right: 0;
}
.input-sm {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
select.input-sm {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
height: auto;
}
.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.form-group-sm select.form-control {
height: 30px;
line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
height: auto;
}
.form-group-sm .form-control-static {
height: 30px;
min-height: 30px;
padding: 6px 10px;
font-size: 12px;
line-height: 1.5;
}
.input-lg {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
select.input-lg {
height: 45px;
line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
height: auto;
}
.form-group-lg .form-control {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
.form-group-lg select.form-control {
height: 45px;
line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
height: auto;
}
.form-group-lg .form-control-static {
height: 45px;
min-height: 35px;
padding: 11px 16px;
font-size: 17px;
line-height: 1.3333333;
}
.has-feedback {
position: relative;
}
.has-feedback .form-control {
padding-right: 40px;
}
.form-control-feedback {
position: absolute;
top: 0;
right: 0;
z-index: 2;
display: block;
width: 32px;
height: 32px;
line-height: 32px;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
width: 45px;
height: 45px;
line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
border-color: #3c763d;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
border-color: #2b542c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #3c763d;
border-color: #3c763d;
background-color: #dff0d8;
}
.has-success .form-control-feedback {
color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
border-color: #8a6d3b;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
border-color: #66512c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
border-color: #8a6d3b;
background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
border-color: #a94442;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
border-color: #843534;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #a94442;
border-color: #a94442;
background-color: #f2dede;
}
.has-error .form-control-feedback {
color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
}
.help-block {
display: block;
margin-top: 5px;
margin-bottom: 10px;
color: #404040;
}
@media (min-width: 768px) {
.form-inline .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-static {
display: inline-block;
}
.form-inline .input-group {
display: inline-table;
vertical-align: middle;
}
.form-inline .input-group .input-group-addon,
.form-inline .input-group .input-group-btn,
.form-inline .input-group .form-control {
width: auto;
}
.form-inline .input-group > .form-control {
width: 100%;
}
.form-inline .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio label,
.form-inline .checkbox label {
padding-left: 0;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
margin-top: 0;
margin-bottom: 0;
padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
min-height: 25px;
}
.form-horizontal .form-group {
margin-left: 0px;
margin-right: 0px;
}
@media (min-width: 768px) {
.form-horizontal .control-label {
text-align: right;
margin-bottom: 0;
padding-top: 7px;
}
}
.form-horizontal .has-feedback .form-control-feedback {
right: 0px;
}
@media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label {
padding-top: 11px;
font-size: 17px;
}
}
@media (min-width: 768px) {
.form-horizontal .form-group-sm .control-label {
padding-top: 6px;
font-size: 12px;
}
}
.btn {
display: inline-block;
margin-bottom: 0;
font-weight: normal;
text-align: center;
vertical-align: middle;
touch-action: manipulation;
cursor: pointer;
background-image: none;
border: 1px solid transparent;
white-space: nowrap;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
border-radius: 2px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #333;
text-decoration: none;
}
.btn:active,
.btn.active {
outline: 0;
background-image: none;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
cursor: not-allowed;
opacity: 0.65;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
pointer-events: none;
}
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
.btn-default:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
background-color: #fff;
border-color: #ccc;
}
.btn-default .badge {
color: #fff;
background-color: #333;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
color: #fff;
background-color: #286090;
border-color: #122b40;
}
.btn-primary:hover {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
color: #fff;
background-color: #204d74;
border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary .badge {
color: #337ab7;
background-color: #fff;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
color: #fff;
background-color: #449d44;
border-color: #255625;
}
.btn-success:hover {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
color: #fff;
background-color: #398439;
border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success .badge {
color: #5cb85c;
background-color: #fff;
}
.btn-info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
color: #fff;
background-color: #31b0d5;
border-color: #1b6d85;
}
.btn-info:hover {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
color: #fff;
background-color: #269abc;
border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info .badge {
color: #5bc0de;
background-color: #fff;
}
.btn-warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
color: #fff;
background-color: #ec971f;
border-color: #985f0d;
}
.btn-warning:hover {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
color: #fff;
background-color: #d58512;
border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
color: #fff;
background-color: #c9302c;
border-color: #761c19;
}
.btn-danger:hover {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
color: #fff;
background-color: #ac2925;
border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger .badge {
color: #d9534f;
background-color: #fff;
}
.btn-link {
color: #337ab7;
font-weight: normal;
border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
color: #23527c;
text-decoration: underline;
background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
color: #777777;
text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity 0.15s linear;
-o-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
}
.fade.in {
opacity: 1;
}
.collapse {
display: none;
}
.collapse.in {
display: block;
}
tr.collapse.in {
display: table-row;
}
tbody.collapse.in {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition-property: height, visibility;
transition-property: height, visibility;
-webkit-transition-duration: 0.35s;
transition-duration: 0.35s;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 4px dashed;
border-top: 4px solid \9;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle:focus {
outline: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
font-size: 13px;
text-align: left;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 2px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
background-clip: padding-box;
}
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
.dropdown-menu .divider {
height: 1px;
margin: 8px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.42857143;
color: #333333;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
text-decoration: none;
color: #262626;
background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
outline: 0;
background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
cursor: not-allowed;
}
.open > .dropdown-menu {
display: block;
}
.open > a {
outline: 0;
}
.dropdown-menu-right {
left: auto;
right: 0;
}
.dropdown-menu-left {
left: 0;
right: auto;
}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #777777;
white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
z-index: 990;
}
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
border-top: 0;
border-bottom: 4px dashed;
border-bottom: 4px solid \9;
content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 2px;
}
@media (min-width: 541px) {
.navbar-right .dropdown-menu {
left: auto;
right: 0;
}
.navbar-right .dropdown-menu-left {
left: 0;
right: auto;
}
}
.btn-group,
.btn-group-vertical {
position: relative;
display: inline-block;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
margin-left: -1px;
}
.btn-toolbar {
margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
border-radius: 0;
}
.btn-group > .btn:first-child {
margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.btn-group > .btn-group {
float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
padding-left: 8px;
padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
padding-left: 12px;
padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn .caret {
margin-left: 0;
}
.btn-lg .caret {
border-width: 5px 5px 0;
border-bottom-width: 0;
}
.dropup .btn-lg .caret {
border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
margin-top: -1px;
margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-right-radius: 2px;
border-top-left-radius: 2px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
border-top-right-radius: 0;
border-top-left-radius: 0;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
float: none;
display: table-cell;
width: 1%;
}
.btn-group-justified > .btn-group .btn {
width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: table;
border-collapse: separate;
}
.input-group[class*="col-"] {
float: none;
padding-left: 0;
padding-right: 0;
}
.input-group .form-control {
position: relative;
z-index: 2;
float: left;
width: 100%;
margin-bottom: 0;
}
.input-group .form-control:focus {
z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
height: 45px;
line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
height: 30px;
line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
border-radius: 0;
}
.input-group-addon,
.input-group-btn {
width: 1%;
white-space: nowrap;
vertical-align: middle;
}
.input-group-addon {
padding: 6px 12px;
font-size: 13px;
font-weight: normal;
line-height: 1;
color: #555555;
text-align: center;
background-color: #eeeeee;
border: 1px solid #ccc;
border-radius: 2px;
}
.input-group-addon.input-sm {
padding: 5px 10px;
font-size: 12px;
border-radius: 1px;
}
.input-group-addon.input-lg {
padding: 10px 16px;
font-size: 17px;
border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.input-group-addon:first-child {
border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.input-group-addon:last-child {
border-left: 0;
}
.input-group-btn {
position: relative;
font-size: 0;
white-space: nowrap;
}
.input-group-btn > .btn {
position: relative;
}
.input-group-btn > .btn + .btn {
margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
z-index: 2;
margin-left: -1px;
}
.nav {
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.nav > li {
position: relative;
display: block;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
text-decoration: none;
background-color: #eeeeee;
}
.nav > li.disabled > a {
color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
color: #777777;
text-decoration: none;
background-color: transparent;
cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #eeeeee;
border-color: #337ab7;
}
.nav .nav-divider {
height: 1px;
margin: 8px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.nav > li > a > img {
max-width: none;
}
.nav-tabs {
border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid transparent;
border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
color: #555555;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
cursor: default;
}
.nav-tabs.nav-justified {
width: 100%;
border-bottom: 0;
}
.nav-tabs.nav-justified > li {
float: none;
}
.nav-tabs.nav-justified > li > a {
text-align: center;
margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs.nav-justified > li > a {
margin-right: 0;
border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 2px 2px 0 0;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.nav-pills > li {
float: left;
}
.nav-pills > li > a {
border-radius: 2px;
}
.nav-pills > li + li {
margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
color: #fff;
background-color: #337ab7;
}
.nav-stacked > li {
float: none;
}
.nav-stacked > li + li {
margin-top: 2px;
margin-left: 0;
}
.nav-justified {
width: 100%;
}
.nav-justified > li {
float: none;
}
.nav-justified > li > a {
text-align: center;
margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs-justified {
border-bottom: 0;
}
.nav-tabs-justified > li > a {
margin-right: 0;
border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 2px 2px 0 0;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.tab-content > .tab-pane {
display: none;
}
.tab-content > .active {
display: block;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.navbar {
position: relative;
min-height: 30px;
margin-bottom: 18px;
border: 1px solid transparent;
}
@media (min-width: 541px) {
.navbar {
border-radius: 2px;
}
}
@media (min-width: 541px) {
.navbar-header {
float: left;
}
}
.navbar-collapse {
overflow-x: visible;
padding-right: 0px;
padding-left: 0px;
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
overflow-y: auto;
}
@media (min-width: 541px) {
.navbar-collapse {
width: auto;
border-top: 0;
box-shadow: none;
}
.navbar-collapse.collapse {
display: block !important;
height: auto !important;
padding-bottom: 0;
overflow: visible !important;
}
.navbar-collapse.in {
overflow-y: visible;
}
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
padding-left: 0;
padding-right: 0;
}
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 200px;
}
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0px;
margin-left: 0px;
}
@media (min-width: 541px) {
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0;
margin-left: 0;
}
}
.navbar-static-top {
z-index: 1000;
border-width: 0 0 1px;
}
@media (min-width: 541px) {
.navbar-static-top {
border-radius: 0;
}
}
.navbar-fixed-top,
.navbar-fixed-bottom {
position: fixed;
right: 0;
left: 0;
z-index: 1030;
}
@media (min-width: 541px) {
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
}
.navbar-fixed-top {
top: 0;
border-width: 0 0 1px;
}
.navbar-fixed-bottom {
bottom: 0;
margin-bottom: 0;
border-width: 1px 0 0;
}
.navbar-brand {
float: left;
padding: 6px 0px;
font-size: 17px;
line-height: 18px;
height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
.navbar-brand > img {
display: block;
}
@media (min-width: 541px) {
.navbar > .container .navbar-brand,
.navbar > .container-fluid .navbar-brand {
margin-left: 0px;
}
}
.navbar-toggle {
position: relative;
float: right;
margin-right: 0px;
padding: 9px 10px;
margin-top: -2px;
margin-bottom: -2px;
background-color: transparent;
background-image: none;
border: 1px solid transparent;
border-radius: 2px;
}
.navbar-toggle:focus {
outline: 0;
}
.navbar-toggle .icon-bar {
display: block;
width: 22px;
height: 2px;
border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
margin-top: 4px;
}
@media (min-width: 541px) {
.navbar-toggle {
display: none;
}
}
.navbar-nav {
margin: 3px 0px;
}
.navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px;
line-height: 18px;
}
@media (max-width: 540px) {
.navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
box-shadow: none;
}
.navbar-nav .open .dropdown-menu > li > a,
.navbar-nav .open .dropdown-menu .dropdown-header {
padding: 5px 15px 5px 25px;
}
.navbar-nav .open .dropdown-menu > li > a {
line-height: 18px;
}
.navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-nav .open .dropdown-menu > li > a:focus {
background-image: none;
}
}
@media (min-width: 541px) {
.navbar-nav {
float: left;
margin: 0;
}
.navbar-nav > li {
float: left;
}
.navbar-nav > li > a {
padding-top: 6px;
padding-bottom: 6px;
}
}
.navbar-form {
margin-left: 0px;
margin-right: 0px;
padding: 10px 0px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
margin-top: -1px;
margin-bottom: -1px;
}
@media (min-width: 768px) {
.navbar-form .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.navbar-form .form-control-static {
display: inline-block;
}
.navbar-form .input-group {
display: inline-table;
vertical-align: middle;
}
.navbar-form .input-group .input-group-addon,
.navbar-form .input-group .input-group-btn,
.navbar-form .input-group .form-control {
width: auto;
}
.navbar-form .input-group > .form-control {
width: 100%;
}
.navbar-form .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio,
.navbar-form .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio label,
.navbar-form .checkbox label {
padding-left: 0;
}
.navbar-form .radio input[type="radio"],
.navbar-form .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.navbar-form .has-feedback .form-control-feedback {
top: 0;
}
}
@media (max-width: 540px) {
.navbar-form .form-group {
margin-bottom: 5px;
}
.navbar-form .form-group:last-child {
margin-bottom: 0;
}
}
@media (min-width: 541px) {
.navbar-form {
width: auto;
border: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
}
.navbar-nav > li > .dropdown-menu {
margin-top: 0;
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
margin-bottom: 0;
border-top-right-radius: 2px;
border-top-left-radius: 2px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.navbar-btn {
margin-top: -1px;
margin-bottom: -1px;
}
.navbar-btn.btn-sm {
margin-top: 0px;
margin-bottom: 0px;
}
.navbar-btn.btn-xs {
margin-top: 4px;
margin-bottom: 4px;
}
.navbar-text {
margin-top: 6px;
margin-bottom: 6px;
}
@media (min-width: 541px) {
.navbar-text {
float: left;
margin-left: 0px;
margin-right: 0px;
}
}
@media (min-width: 541px) {
.navbar-left {
float: left !important;
float: left;
}
.navbar-right {
float: right !important;
float: right;
margin-right: 0px;
}
.navbar-right ~ .navbar-right {
margin-right: 0;
}
}
.navbar-default {
background-color: #f8f8f8;
border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: #5e5e5e;
background-color: transparent;
}
.navbar-default .navbar-text {
color: #777;
}
.navbar-default .navbar-nav > li > a {
color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
.navbar-default .navbar-toggle {
border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
background-color: #e7e7e7;
color: #555;
}
@media (max-width: 540px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #777;
}
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
}
.navbar-default .navbar-link {
color: #777;
}
.navbar-default .navbar-link:hover {
color: #333;
}
.navbar-default .btn-link {
color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
color: #ccc;
}
.navbar-inverse {
background-color: #222;
border-color: #080808;
}
.navbar-inverse .navbar-brand {
color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-text {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
color: #444;
background-color: transparent;
}
.navbar-inverse .navbar-toggle {
border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
background-color: #080808;
color: #fff;
}
@media (max-width: 540px) {
.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
border-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #444;
background-color: transparent;
}
}
.navbar-inverse .navbar-link {
color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
color: #fff;
}
.navbar-inverse .btn-link {
color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
color: #444;
}
.breadcrumb {
padding: 8px 15px;
margin-bottom: 18px;
list-style: none;
background-color: #f5f5f5;
border-radius: 2px;
}
.breadcrumb > li {
display: inline-block;
}
.breadcrumb > li + li:before {
content: "/\00a0";
padding: 0 5px;
color: #5e5e5e;
}
.breadcrumb > .active {
color: #777777;
}
.pagination {
display: inline-block;
padding-left: 0;
margin: 18px 0;
border-radius: 2px;
}
.pagination > li {
display: inline;
}
.pagination > li > a,
.pagination > li > span {
position: relative;
float: left;
padding: 6px 12px;
line-height: 1.42857143;
text-decoration: none;
color: #337ab7;
background-color: #fff;
border: 1px solid #ddd;
margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
margin-left: 0;
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-bottom-right-radius: 2px;
border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
z-index: 2;
color: #23527c;
background-color: #eeeeee;
border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
z-index: 3;
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
color: #777777;
background-color: #fff;
border-color: #ddd;
cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
border-bottom-left-radius: 3px;
border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
border-bottom-left-radius: 1px;
border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
border-bottom-right-radius: 1px;
border-top-right-radius: 1px;
}
.pager {
padding-left: 0;
margin: 18px 0;
list-style: none;
text-align: center;
}
.pager li {
display: inline;
}
.pager li > a,
.pager li > span {
display: inline-block;
padding: 5px 14px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
text-decoration: none;
background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
float: right;
}
.pager .previous > a,
.pager .previous > span {
float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: #777777;
background-color: #fff;
cursor: not-allowed;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
}
a.label:hover,
a.label:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.label:empty {
display: none;
}
.btn .label {
position: relative;
top: -1px;
}
.label-default {
background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
background-color: #5e5e5e;
}
.label-primary {
background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
background-color: #286090;
}
.label-success {
background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
background-color: #449d44;
}
.label-info {
background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
background-color: #31b0d5;
}
.label-warning {
background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
background-color: #ec971f;
}
.label-danger {
background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
background-color: #c9302c;
}
.badge {
display: inline-block;
min-width: 10px;
padding: 3px 7px;
font-size: 12px;
font-weight: bold;
color: #fff;
line-height: 1;
vertical-align: middle;
white-space: nowrap;
text-align: center;
background-color: #777777;
border-radius: 10px;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
top: 0;
padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
color: #337ab7;
background-color: #fff;
}
.list-group-item > .badge {
float: right;
}
.list-group-item > .badge + .badge {
margin-right: 5px;
}
.nav-pills > li > a > .badge {
margin-left: 3px;
}
.jumbotron {
padding-top: 30px;
padding-bottom: 30px;
margin-bottom: 30px;
color: inherit;
background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
color: inherit;
}
.jumbotron p {
margin-bottom: 15px;
font-size: 20px;
font-weight: 200;
}
.jumbotron > hr {
border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
border-radius: 3px;
padding-left: 0px;
padding-right: 0px;
}
.jumbotron .container {
max-width: 100%;
}
@media screen and (min-width: 768px) {
.jumbotron {
padding-top: 48px;
padding-bottom: 48px;
}
.container .jumbotron,
.container-fluid .jumbotron {
padding-left: 60px;
padding-right: 60px;
}
.jumbotron h1,
.jumbotron .h1 {
font-size: 59px;
}
}
.thumbnail {
display: block;
padding: 4px;
margin-bottom: 18px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 2px;
-webkit-transition: border 0.2s ease-in-out;
-o-transition: border 0.2s ease-in-out;
transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
margin-left: auto;
margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
border-color: #337ab7;
}
.thumbnail .caption {
padding: 9px;
color: #000;
}
.alert {
padding: 15px;
margin-bottom: 18px;
border: 1px solid transparent;
border-radius: 2px;
}
.alert h4 {
margin-top: 0;
color: inherit;
}
.alert .alert-link {
font-weight: bold;
}
.alert > p,
.alert > ul {
margin-bottom: 0;
}
.alert > p + p {
margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
position: relative;
top: -2px;
right: -21px;
color: inherit;
}
.alert-success {
background-color: #dff0d8;
border-color: #d6e9c6;
color: #3c763d;
}
.alert-success hr {
border-top-color: #c9e2b3;
}
.alert-success .alert-link {
color: #2b542c;
}
.alert-info {
background-color: #d9edf7;
border-color: #bce8f1;
color: #31708f;
}
.alert-info hr {
border-top-color: #a6e1ec;
}
.alert-info .alert-link {
color: #245269;
}
.alert-warning {
background-color: #fcf8e3;
border-color: #faebcc;
color: #8a6d3b;
}
.alert-warning hr {
border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
color: #66512c;
}
.alert-danger {
background-color: #f2dede;
border-color: #ebccd1;
color: #a94442;
}
.alert-danger hr {
border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
.progress {
overflow: hidden;
height: 18px;
margin-bottom: 18px;
background-color: #f5f5f5;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
float: left;
width: 0%;
height: 100%;
font-size: 12px;
line-height: 18px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-transition: width 0.6s ease;
-o-transition: width 0.6s ease;
transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
-webkit-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
margin-top: 15px;
}
.media:first-child {
margin-top: 0;
}
.media,
.media-body {
zoom: 1;
overflow: hidden;
}
.media-body {
width: 10000px;
}
.media-object {
display: block;
}
.media-object.img-thumbnail {
max-width: none;
}
.media-right,
.media > .pull-right {
padding-left: 10px;
}
.media-left,
.media > .pull-left {
padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
display: table-cell;
vertical-align: top;
}
.media-middle {
vertical-align: middle;
}
.media-bottom {
vertical-align: bottom;
}
.media-heading {
margin-top: 0;
margin-bottom: 5px;
}
.media-list {
padding-left: 0;
list-style: none;
}
.list-group {
margin-bottom: 20px;
padding-left: 0;
}
.list-group-item {
position: relative;
display: block;
padding: 10px 15px;
margin-bottom: -1px;
background-color: #fff;
border: 1px solid #ddd;
}
.list-group-item:first-child {
border-top-right-radius: 2px;
border-top-left-radius: 2px;
}
.list-group-item:last-child {
margin-bottom: 0;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
text-decoration: none;
color: #555;
background-color: #f5f5f5;
}
button.list-group-item {
width: 100%;
text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
background-color: #eeeeee;
color: #777777;
cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
z-index: 2;
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
color: #c7ddef;
}
.list-group-item-success {
color: #3c763d;
background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
color: #3c763d;
background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
color: #fff;
background-color: #3c763d;
border-color: #3c763d;
}
.list-group-item-info {
color: #31708f;
background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
color: #31708f;
background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
color: #fff;
background-color: #31708f;
border-color: #31708f;
}
.list-group-item-warning {
color: #8a6d3b;
background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
color: #8a6d3b;
background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
color: #fff;
background-color: #8a6d3b;
border-color: #8a6d3b;
}
.list-group-item-danger {
color: #a94442;
background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
color: #a94442;
background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
color: #fff;
background-color: #a94442;
border-color: #a94442;
}
.list-group-item-heading {
margin-top: 0;
margin-bottom: 5px;
}
.list-group-item-text {
margin-bottom: 0;
line-height: 1.3;
}
.panel {
margin-bottom: 18px;
background-color: #fff;
border: 1px solid transparent;
border-radius: 2px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
padding: 15px;
}
.panel-heading {
padding: 10px 15px;
border-bottom: 1px solid transparent;
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
color: inherit;
}
.panel-title {
margin-top: 0;
margin-bottom: 0;
font-size: 15px;
color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
color: inherit;
}
.panel-footer {
padding: 10px 15px;
background-color: #f5f5f5;
border-top: 1px solid #ddd;
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
.list-group + .panel-footer {
border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
padding-left: 15px;
padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
border-top-left-radius: 1px;
border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
border-bottom-left-radius: 1px;
border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 0;
}
.panel > .table-responsive {
border: 0;
margin-bottom: 0;
}
.panel-group {
margin-bottom: 18px;
}
.panel-group .panel {
margin-bottom: 0;
border-radius: 2px;
}
.panel-group .panel + .panel {
margin-top: 5px;
}
.panel-group .panel-heading {
border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
border-bottom: 1px solid #ddd;
}
.panel-default {
border-color: #ddd;
}
.panel-default > .panel-heading {
color: #333333;
background-color: #f5f5f5;
border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
color: #f5f5f5;
background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ddd;
}
.panel-primary {
border-color: #337ab7;
}
.panel-primary > .panel-heading {
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
color: #337ab7;
background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #337ab7;
}
.panel-success {
border-color: #d6e9c6;
}
.panel-success > .panel-heading {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
color: #dff0d8;
background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #d6e9c6;
}
.panel-info {
border-color: #bce8f1;
}
.panel-info > .panel-heading {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
color: #d9edf7;
background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #bce8f1;
}
.panel-warning {
border-color: #faebcc;
}
.panel-warning > .panel-heading {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
color: #fcf8e3;
background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #faebcc;
}
.panel-danger {
border-color: #ebccd1;
}
.panel-danger > .panel-heading {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
color: #f2dede;
background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ebccd1;
}
.embed-responsive {
position: relative;
display: block;
height: 0;
padding: 0;
overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
position: absolute;
top: 0;
left: 0;
bottom: 0;
height: 100%;
width: 100%;
border: 0;
}
.embed-responsive-16by9 {
padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
padding-bottom: 75%;
}
.well {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
border-color: #ddd;
border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
padding: 24px;
border-radius: 3px;
}
.well-sm {
padding: 9px;
border-radius: 1px;
}
.close {
float: right;
font-size: 19.5px;
font-weight: bold;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
opacity: 0.2;
filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
opacity: 0.5;
filter: alpha(opacity=50);
}
button.close {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}
.modal-open {
overflow: hidden;
}
.modal {
display: none;
overflow: hidden;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1050;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.modal.fade .modal-dialog {
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
-o-transform: translate(0, -25%);
transform: translate(0, -25%);
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal-dialog {
position: relative;
width: auto;
margin: 10px;
}
.modal-content {
position: relative;
background-color: #fff;
border: 1px solid #999;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
background-clip: padding-box;
outline: 0;
}
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
background-color: #000;
}
.modal-backdrop.fade {
opacity: 0;
filter: alpha(opacity=0);
}
.modal-backdrop.in {
opacity: 0.5;
filter: alpha(opacity=50);
}
.modal-header {
padding: 15px;
border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
margin-top: -2px;
}
.modal-title {
margin: 0;
line-height: 1.42857143;
}
.modal-body {
position: relative;
padding: 15px;
}
.modal-footer {
padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
margin-left: 5px;
margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
margin-left: 0;
}
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
@media (min-width: 768px) {
.modal-dialog {
width: 600px;
margin: 30px auto;
}
.modal-content {
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}
.modal-sm {
width: 300px;
}
}
@media (min-width: 992px) {
.modal-lg {
width: 900px;
}
}
.tooltip {
position: absolute;
z-index: 1070;
display: block;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
font-size: 12px;
opacity: 0;
filter: alpha(opacity=0);
}
.tooltip.in {
opacity: 0.9;
filter: alpha(opacity=90);
}
.tooltip.top {
margin-top: -3px;
padding: 5px 0;
}
.tooltip.right {
margin-left: 3px;
padding: 0 5px;
}
.tooltip.bottom {
margin-top: 3px;
padding: 5px 0;
}
.tooltip.left {
margin-left: -3px;
padding: 0 5px;
}
.tooltip-inner {
max-width: 200px;
padding: 3px 8px;
color: #fff;
text-align: center;
background-color: #000;
border-radius: 2px;
}
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.tooltip.top .tooltip-arrow {
bottom: 0;
left: 50%;
margin-left: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
bottom: 0;
right: 5px;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
bottom: 0;
left: 5px;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
top: 50%;
left: 0;
margin-top: -5px;
border-width: 5px 5px 5px 0;
border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
top: 50%;
right: 0;
margin-top: -5px;
border-width: 5px 0 5px 5px;
border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
top: 0;
left: 50%;
margin-left: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
top: 0;
right: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
top: 0;
left: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
font-size: 13px;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
margin-top: -10px;
}
.popover.right {
margin-left: 10px;
}
.popover.bottom {
margin-top: 10px;
}
.popover.left {
margin-left: -10px;
}
.popover-title {
margin: 0;
padding: 8px 14px;
font-size: 13px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 2px 2px 0 0;
}
.popover-content {
padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.popover > .arrow {
border-width: 11px;
}
.popover > .arrow:after {
border-width: 10px;
content: "";
}
.popover.top > .arrow {
left: 50%;
margin-left: -11px;
border-bottom-width: 0;
border-top-color: #999999;
border-top-color: rgba(0, 0, 0, 0.25);
bottom: -11px;
}
.popover.top > .arrow:after {
content: " ";
bottom: 1px;
margin-left: -10px;
border-bottom-width: 0;
border-top-color: #fff;
}
.popover.right > .arrow {
top: 50%;
left: -11px;
margin-top: -11px;
border-left-width: 0;
border-right-color: #999999;
border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
content: " ";
left: 1px;
bottom: -10px;
border-left-width: 0;
border-right-color: #fff;
}
.popover.bottom > .arrow {
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999999;
border-bottom-color: rgba(0, 0, 0, 0.25);
top: -11px;
}
.popover.bottom > .arrow:after {
content: " ";
top: 1px;
margin-left: -10px;
border-top-width: 0;
border-bottom-color: #fff;
}
.popover.left > .arrow {
top: 50%;
right: -11px;
margin-top: -11px;
border-right-width: 0;
border-left-color: #999999;
border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
content: " ";
right: 1px;
border-right-width: 0;
border-left-color: #fff;
bottom: -10px;
}
.carousel {
position: relative;
}
.carousel-inner {
position: relative;
overflow: hidden;
width: 100%;
}
.carousel-inner > .item {
display: none;
position: relative;
-webkit-transition: 0.6s ease-in-out left;
-o-transition: 0.6s ease-in-out left;
transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
.carousel-inner > .item {
-webkit-transition: -webkit-transform 0.6s ease-in-out;
-moz-transition: -moz-transform 0.6s ease-in-out;
-o-transition: -o-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
perspective: 1000px;
}
.carousel-inner > .item.next,
.carousel-inner > .item.active.right {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
left: 0;
}
.carousel-inner > .item.prev,
.carousel-inner > .item.active.left {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
left: 0;
}
.carousel-inner > .item.next.left,
.carousel-inner > .item.prev.right,
.carousel-inner > .item.active {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
left: 0;
}
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
display: block;
}
.carousel-inner > .active {
left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
position: absolute;
top: 0;
width: 100%;
}
.carousel-inner > .next {
left: 100%;
}
.carousel-inner > .prev {
left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
left: 0;
}
.carousel-inner > .active.left {
left: -100%;
}
.carousel-inner > .active.right {
left: 100%;
}
.carousel-control {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 15%;
opacity: 0.5;
filter: alpha(opacity=50);
font-size: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
left: auto;
right: 0;
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
outline: 0;
color: #fff;
text-decoration: none;
opacity: 0.9;
filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
position: absolute;
top: 50%;
margin-top: -10px;
z-index: 5;
display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
left: 50%;
margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
right: 50%;
margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 20px;
height: 20px;
line-height: 1;
font-family: serif;
}
.carousel-control .icon-prev:before {
content: '\2039';
}
.carousel-control .icon-next:before {
content: '\203a';
}
.carousel-indicators {
position: absolute;
bottom: 10px;
left: 50%;
z-index: 15;
width: 60%;
margin-left: -30%;
padding-left: 0;
list-style: none;
text-align: center;
}
.carousel-indicators li {
display: inline-block;
width: 10px;
height: 10px;
margin: 1px;
text-indent: -999px;
border: 1px solid #fff;
border-radius: 10px;
cursor: pointer;
background-color: #000 \9;
background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
margin: 0;
width: 12px;
height: 12px;
background-color: #fff;
}
.carousel-caption {
position: absolute;
left: 15%;
right: 15%;
bottom: 20px;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
text-shadow: none;
}
@media screen and (min-width: 768px) {
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 30px;
height: 30px;
margin-top: -10px;
font-size: 30px;
}
.carousel-control .glyphicon-chevron-left,
.carousel-control .icon-prev {
margin-left: -10px;
}
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-next {
margin-right: -10px;
}
.carousel-caption {
left: 20%;
right: 20%;
padding-bottom: 30px;
}
.carousel-indicators {
bottom: 20px;
}
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
content: " ";
display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
clear: both;
}
.center-block {
display: block;
margin-left: auto;
margin-right: auto;
}
.pull-right {
float: right !important;
}
.pull-left {
float: left !important;
}
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}
.text-hide {
font: 0/0 a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
.hidden {
display: none !important;
}
.affix {
position: fixed;
}
@-ms-viewport {
width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
display: none !important;
}
@media (max-width: 767px) {
.visible-xs {
display: block !important;
}
table.visible-xs {
display: table !important;
}
tr.visible-xs {
display: table-row !important;
}
th.visible-xs,
td.visible-xs {
display: table-cell !important;
}
}
@media (max-width: 767px) {
.visible-xs-block {
display: block !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline {
display: inline !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline-block {
display: inline-block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm {
display: block !important;
}
table.visible-sm {
display: table !important;
}
tr.visible-sm {
display: table-row !important;
}
th.visible-sm,
td.visible-sm {
display: table-cell !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-block {
display: block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline {
display: inline !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline-block {
display: inline-block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md {
display: block !important;
}
table.visible-md {
display: table !important;
}
tr.visible-md {
display: table-row !important;
}
th.visible-md,
td.visible-md {
display: table-cell !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-block {
display: block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline {
display: inline !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline-block {
display: inline-block !important;
}
}
@media (min-width: 1200px) {
.visible-lg {
display: block !important;
}
table.visible-lg {
display: table !important;
}
tr.visible-lg {
display: table-row !important;
}
th.visible-lg,
td.visible-lg {
display: table-cell !important;
}
}
@media (min-width: 1200px) {
.visible-lg-block {
display: block !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline {
display: inline !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline-block {
display: inline-block !important;
}
}
@media (max-width: 767px) {
.hidden-xs {
display: none !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.hidden-sm {
display: none !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.hidden-md {
display: none !important;
}
}
@media (min-width: 1200px) {
.hidden-lg {
display: none !important;
}
}
.visible-print {
display: none !important;
}
@media print {
.visible-print {
display: block !important;
}
table.visible-print {
display: table !important;
}
tr.visible-print {
display: table-row !important;
}
th.visible-print,
td.visible-print {
display: table-cell !important;
}
}
.visible-print-block {
display: none !important;
}
@media print {
.visible-print-block {
display: block !important;
}
}
.visible-print-inline {
display: none !important;
}
@media print {
.visible-print-inline {
display: inline !important;
}
}
.visible-print-inline-block {
display: none !important;
}
@media print {
.visible-print-inline-block {
display: inline-block !important;
}
}
@media print {
.hidden-print {
display: none !important;
}
}
/*!
*
* Font Awesome
*
*/
/*!
* Font Awesome 4.2.0 by @davegandy - https://fontawesome.io - @fontawesome
* License - https://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
font-size: 1.33333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.fa-2x {
font-size: 2em;
}
.fa-3x {
font-size: 3em;
}
.fa-4x {
font-size: 4em;
}
.fa-5x {
font-size: 5em;
}
.fa-fw {
width: 1.28571429em;
text-align: center;
}
.fa-ul {
padding-left: 0;
margin-left: 2.14285714em;
list-style-type: none;
}
.fa-ul > li {
position: relative;
}
.fa-li {
position: absolute;
left: -2.14285714em;
width: 2.14285714em;
top: 0.14285714em;
text-align: center;
}
.fa-li.fa-lg {
left: -1.85714286em;
}
.fa-border {
padding: .2em .25em .15em;
border: solid 0.08em #eee;
border-radius: .1em;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.fa.pull-left {
margin-right: .3em;
}
.fa.pull-right {
margin-left: .3em;
}
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.fa-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.fa-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.fa-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.fa-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-webkit-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);
}
.fa-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-webkit-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
filter: none;
}
.fa-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.fa-stack-1x {
line-height: inherit;
}
.fa-stack-2x {
font-size: 2em;
}
.fa-inverse {
color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-glass:before {
content: "\f000";
}
.fa-music:before {
content: "\f001";
}
.fa-search:before {
content: "\f002";
}
.fa-envelope-o:before {
content: "\f003";
}
.fa-heart:before {
content: "\f004";
}
.fa-star:before {
content: "\f005";
}
.fa-star-o:before {
content: "\f006";
}
.fa-user:before {
content: "\f007";
}
.fa-film:before {
content: "\f008";
}
.fa-th-large:before {
content: "\f009";
}
.fa-th:before {
content: "\f00a";
}
.fa-th-list:before {
content: "\f00b";
}
.fa-check:before {
content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
content: "\f00d";
}
.fa-search-plus:before {
content: "\f00e";
}
.fa-search-minus:before {
content: "\f010";
}
.fa-power-off:before {
content: "\f011";
}
.fa-signal:before {
content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
content: "\f013";
}
.fa-trash-o:before {
content: "\f014";
}
.fa-home:before {
content: "\f015";
}
.fa-file-o:before {
content: "\f016";
}
.fa-clock-o:before {
content: "\f017";
}
.fa-road:before {
content: "\f018";
}
.fa-download:before {
content: "\f019";
}
.fa-arrow-circle-o-down:before {
content: "\f01a";
}
.fa-arrow-circle-o-up:before {
content: "\f01b";
}
.fa-inbox:before {
content: "\f01c";
}
.fa-play-circle-o:before {
content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
content: "\f01e";
}
.fa-refresh:before {
content: "\f021";
}
.fa-list-alt:before {
content: "\f022";
}
.fa-lock:before {
content: "\f023";
}
.fa-flag:before {
content: "\f024";
}
.fa-headphones:before {
content: "\f025";
}
.fa-volume-off:before {
content: "\f026";
}
.fa-volume-down:before {
content: "\f027";
}
.fa-volume-up:before {
content: "\f028";
}
.fa-qrcode:before {
content: "\f029";
}
.fa-barcode:before {
content: "\f02a";
}
.fa-tag:before {
content: "\f02b";
}
.fa-tags:before {
content: "\f02c";
}
.fa-book:before {
content: "\f02d";
}
.fa-bookmark:before {
content: "\f02e";
}
.fa-print:before {
content: "\f02f";
}
.fa-camera:before {
content: "\f030";
}
.fa-font:before {
content: "\f031";
}
.fa-bold:before {
content: "\f032";
}
.fa-italic:before {
content: "\f033";
}
.fa-text-height:before {
content: "\f034";
}
.fa-text-width:before {
content: "\f035";
}
.fa-align-left:before {
content: "\f036";
}
.fa-align-center:before {
content: "\f037";
}
.fa-align-right:before {
content: "\f038";
}
.fa-align-justify:before {
content: "\f039";
}
.fa-list:before {
content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
content: "\f03b";
}
.fa-indent:before {
content: "\f03c";
}
.fa-video-camera:before {
content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
content: "\f03e";
}
.fa-pencil:before {
content: "\f040";
}
.fa-map-marker:before {
content: "\f041";
}
.fa-adjust:before {
content: "\f042";
}
.fa-tint:before {
content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
content: "\f044";
}
.fa-share-square-o:before {
content: "\f045";
}
.fa-check-square-o:before {
content: "\f046";
}
.fa-arrows:before {
content: "\f047";
}
.fa-step-backward:before {
content: "\f048";
}
.fa-fast-backward:before {
content: "\f049";
}
.fa-backward:before {
content: "\f04a";
}
.fa-play:before {
content: "\f04b";
}
.fa-pause:before {
content: "\f04c";
}
.fa-stop:before {
content: "\f04d";
}
.fa-forward:before {
content: "\f04e";
}
.fa-fast-forward:before {
content: "\f050";
}
.fa-step-forward:before {
content: "\f051";
}
.fa-eject:before {
content: "\f052";
}
.fa-chevron-left:before {
content: "\f053";
}
.fa-chevron-right:before {
content: "\f054";
}
.fa-plus-circle:before {
content: "\f055";
}
.fa-minus-circle:before {
content: "\f056";
}
.fa-times-circle:before {
content: "\f057";
}
.fa-check-circle:before {
content: "\f058";
}
.fa-question-circle:before {
content: "\f059";
}
.fa-info-circle:before {
content: "\f05a";
}
.fa-crosshairs:before {
content: "\f05b";
}
.fa-times-circle-o:before {
content: "\f05c";
}
.fa-check-circle-o:before {
content: "\f05d";
}
.fa-ban:before {
content: "\f05e";
}
.fa-arrow-left:before {
content: "\f060";
}
.fa-arrow-right:before {
content: "\f061";
}
.fa-arrow-up:before {
content: "\f062";
}
.fa-arrow-down:before {
content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
content: "\f064";
}
.fa-expand:before {
content: "\f065";
}
.fa-compress:before {
content: "\f066";
}
.fa-plus:before {
content: "\f067";
}
.fa-minus:before {
content: "\f068";
}
.fa-asterisk:before {
content: "\f069";
}
.fa-exclamation-circle:before {
content: "\f06a";
}
.fa-gift:before {
content: "\f06b";
}
.fa-leaf:before {
content: "\f06c";
}
.fa-fire:before {
content: "\f06d";
}
.fa-eye:before {
content: "\f06e";
}
.fa-eye-slash:before {
content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
content: "\f071";
}
.fa-plane:before {
content: "\f072";
}
.fa-calendar:before {
content: "\f073";
}
.fa-random:before {
content: "\f074";
}
.fa-comment:before {
content: "\f075";
}
.fa-magnet:before {
content: "\f076";
}
.fa-chevron-up:before {
content: "\f077";
}
.fa-chevron-down:before {
content: "\f078";
}
.fa-retweet:before {
content: "\f079";
}
.fa-shopping-cart:before {
content: "\f07a";
}
.fa-folder:before {
content: "\f07b";
}
.fa-folder-open:before {
content: "\f07c";
}
.fa-arrows-v:before {
content: "\f07d";
}
.fa-arrows-h:before {
content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
content: "\f080";
}
.fa-twitter-square:before {
content: "\f081";
}
.fa-facebook-square:before {
content: "\f082";
}
.fa-camera-retro:before {
content: "\f083";
}
.fa-key:before {
content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
content: "\f085";
}
.fa-comments:before {
content: "\f086";
}
.fa-thumbs-o-up:before {
content: "\f087";
}
.fa-thumbs-o-down:before {
content: "\f088";
}
.fa-star-half:before {
content: "\f089";
}
.fa-heart-o:before {
content: "\f08a";
}
.fa-sign-out:before {
content: "\f08b";
}
.fa-linkedin-square:before {
content: "\f08c";
}
.fa-thumb-tack:before {
content: "\f08d";
}
.fa-external-link:before {
content: "\f08e";
}
.fa-sign-in:before {
content: "\f090";
}
.fa-trophy:before {
content: "\f091";
}
.fa-github-square:before {
content: "\f092";
}
.fa-upload:before {
content: "\f093";
}
.fa-lemon-o:before {
content: "\f094";
}
.fa-phone:before {
content: "\f095";
}
.fa-square-o:before {
content: "\f096";
}
.fa-bookmark-o:before {
content: "\f097";
}
.fa-phone-square:before {
content: "\f098";
}
.fa-twitter:before {
content: "\f099";
}
.fa-facebook:before {
content: "\f09a";
}
.fa-github:before {
content: "\f09b";
}
.fa-unlock:before {
content: "\f09c";
}
.fa-credit-card:before {
content: "\f09d";
}
.fa-rss:before {
content: "\f09e";
}
.fa-hdd-o:before {
content: "\f0a0";
}
.fa-bullhorn:before {
content: "\f0a1";
}
.fa-bell:before {
content: "\f0f3";
}
.fa-certificate:before {
content: "\f0a3";
}
.fa-hand-o-right:before {
content: "\f0a4";
}
.fa-hand-o-left:before {
content: "\f0a5";
}
.fa-hand-o-up:before {
content: "\f0a6";
}
.fa-hand-o-down:before {
content: "\f0a7";
}
.fa-arrow-circle-left:before {
content: "\f0a8";
}
.fa-arrow-circle-right:before {
content: "\f0a9";
}
.fa-arrow-circle-up:before {
content: "\f0aa";
}
.fa-arrow-circle-down:before {
content: "\f0ab";
}
.fa-globe:before {
content: "\f0ac";
}
.fa-wrench:before {
content: "\f0ad";
}
.fa-tasks:before {
content: "\f0ae";
}
.fa-filter:before {
content: "\f0b0";
}
.fa-briefcase:before {
content: "\f0b1";
}
.fa-arrows-alt:before {
content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
content: "\f0c1";
}
.fa-cloud:before {
content: "\f0c2";
}
.fa-flask:before {
content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
content: "\f0c5";
}
.fa-paperclip:before {
content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
content: "\f0c7";
}
.fa-square:before {
content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
content: "\f0c9";
}
.fa-list-ul:before {
content: "\f0ca";
}
.fa-list-ol:before {
content: "\f0cb";
}
.fa-strikethrough:before {
content: "\f0cc";
}
.fa-underline:before {
content: "\f0cd";
}
.fa-table:before {
content: "\f0ce";
}
.fa-magic:before {
content: "\f0d0";
}
.fa-truck:before {
content: "\f0d1";
}
.fa-pinterest:before {
content: "\f0d2";
}
.fa-pinterest-square:before {
content: "\f0d3";
}
.fa-google-plus-square:before {
content: "\f0d4";
}
.fa-google-plus:before {
content: "\f0d5";
}
.fa-money:before {
content: "\f0d6";
}
.fa-caret-down:before {
content: "\f0d7";
}
.fa-caret-up:before {
content: "\f0d8";
}
.fa-caret-left:before {
content: "\f0d9";
}
.fa-caret-right:before {
content: "\f0da";
}
.fa-columns:before {
content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
content: "\f0de";
}
.fa-envelope:before {
content: "\f0e0";
}
.fa-linkedin:before {
content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
content: "\f0e4";
}
.fa-comment-o:before {
content: "\f0e5";
}
.fa-comments-o:before {
content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
content: "\f0e7";
}
.fa-sitemap:before {
content: "\f0e8";
}
.fa-umbrella:before {
content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
content: "\f0ea";
}
.fa-lightbulb-o:before {
content: "\f0eb";
}
.fa-exchange:before {
content: "\f0ec";
}
.fa-cloud-download:before {
content: "\f0ed";
}
.fa-cloud-upload:before {
content: "\f0ee";
}
.fa-user-md:before {
content: "\f0f0";
}
.fa-stethoscope:before {
content: "\f0f1";
}
.fa-suitcase:before {
content: "\f0f2";
}
.fa-bell-o:before {
content: "\f0a2";
}
.fa-coffee:before {
content: "\f0f4";
}
.fa-cutlery:before {
content: "\f0f5";
}
.fa-file-text-o:before {
content: "\f0f6";
}
.fa-building-o:before {
content: "\f0f7";
}
.fa-hospital-o:before {
content: "\f0f8";
}
.fa-ambulance:before {
content: "\f0f9";
}
.fa-medkit:before {
content: "\f0fa";
}
.fa-fighter-jet:before {
content: "\f0fb";
}
.fa-beer:before {
content: "\f0fc";
}
.fa-h-square:before {
content: "\f0fd";
}
.fa-plus-square:before {
content: "\f0fe";
}
.fa-angle-double-left:before {
content: "\f100";
}
.fa-angle-double-right:before {
content: "\f101";
}
.fa-angle-double-up:before {
content: "\f102";
}
.fa-angle-double-down:before {
content: "\f103";
}
.fa-angle-left:before {
content: "\f104";
}
.fa-angle-right:before {
content: "\f105";
}
.fa-angle-up:before {
content: "\f106";
}
.fa-angle-down:before {
content: "\f107";
}
.fa-desktop:before {
content: "\f108";
}
.fa-laptop:before {
content: "\f109";
}
.fa-tablet:before {
content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
content: "\f10b";
}
.fa-circle-o:before {
content: "\f10c";
}
.fa-quote-left:before {
content: "\f10d";
}
.fa-quote-right:before {
content: "\f10e";
}
.fa-spinner:before {
content: "\f110";
}
.fa-circle:before {
content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
content: "\f112";
}
.fa-github-alt:before {
content: "\f113";
}
.fa-folder-o:before {
content: "\f114";
}
.fa-folder-open-o:before {
content: "\f115";
}
.fa-smile-o:before {
content: "\f118";
}
.fa-frown-o:before {
content: "\f119";
}
.fa-meh-o:before {
content: "\f11a";
}
.fa-gamepad:before {
content: "\f11b";
}
.fa-keyboard-o:before {
content: "\f11c";
}
.fa-flag-o:before {
content: "\f11d";
}
.fa-flag-checkered:before {
content: "\f11e";
}
.fa-terminal:before {
content: "\f120";
}
.fa-code:before {
content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
content: "\f123";
}
.fa-location-arrow:before {
content: "\f124";
}
.fa-crop:before {
content: "\f125";
}
.fa-code-fork:before {
content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
content: "\f127";
}
.fa-question:before {
content: "\f128";
}
.fa-info:before {
content: "\f129";
}
.fa-exclamation:before {
content: "\f12a";
}
.fa-superscript:before {
content: "\f12b";
}
.fa-subscript:before {
content: "\f12c";
}
.fa-eraser:before {
content: "\f12d";
}
.fa-puzzle-piece:before {
content: "\f12e";
}
.fa-microphone:before {
content: "\f130";
}
.fa-microphone-slash:before {
content: "\f131";
}
.fa-shield:before {
content: "\f132";
}
.fa-calendar-o:before {
content: "\f133";
}
.fa-fire-extinguisher:before {
content: "\f134";
}
.fa-rocket:before {
content: "\f135";
}
.fa-maxcdn:before {
content: "\f136";
}
.fa-chevron-circle-left:before {
content: "\f137";
}
.fa-chevron-circle-right:before {
content: "\f138";
}
.fa-chevron-circle-up:before {
content: "\f139";
}
.fa-chevron-circle-down:before {
content: "\f13a";
}
.fa-html5:before {
content: "\f13b";
}
.fa-css3:before {
content: "\f13c";
}
.fa-anchor:before {
content: "\f13d";
}
.fa-unlock-alt:before {
content: "\f13e";
}
.fa-bullseye:before {
content: "\f140";
}
.fa-ellipsis-h:before {
content: "\f141";
}
.fa-ellipsis-v:before {
content: "\f142";
}
.fa-rss-square:before {
content: "\f143";
}
.fa-play-circle:before {
content: "\f144";
}
.fa-ticket:before {
content: "\f145";
}
.fa-minus-square:before {
content: "\f146";
}
.fa-minus-square-o:before {
content: "\f147";
}
.fa-level-up:before {
content: "\f148";
}
.fa-level-down:before {
content: "\f149";
}
.fa-check-square:before {
content: "\f14a";
}
.fa-pencil-square:before {
content: "\f14b";
}
.fa-external-link-square:before {
content: "\f14c";
}
.fa-share-square:before {
content: "\f14d";
}
.fa-compass:before {
content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
content: "\f153";
}
.fa-gbp:before {
content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
content: "\f158";
}
.fa-won:before,
.fa-krw:before {
content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
content: "\f15a";
}
.fa-file:before {
content: "\f15b";
}
.fa-file-text:before {
content: "\f15c";
}
.fa-sort-alpha-asc:before {
content: "\f15d";
}
.fa-sort-alpha-desc:before {
content: "\f15e";
}
.fa-sort-amount-asc:before {
content: "\f160";
}
.fa-sort-amount-desc:before {
content: "\f161";
}
.fa-sort-numeric-asc:before {
content: "\f162";
}
.fa-sort-numeric-desc:before {
content: "\f163";
}
.fa-thumbs-up:before {
content: "\f164";
}
.fa-thumbs-down:before {
content: "\f165";
}
.fa-youtube-square:before {
content: "\f166";
}
.fa-youtube:before {
content: "\f167";
}
.fa-xing:before {
content: "\f168";
}
.fa-xing-square:before {
content: "\f169";
}
.fa-youtube-play:before {
content: "\f16a";
}
.fa-dropbox:before {
content: "\f16b";
}
.fa-stack-overflow:before {
content: "\f16c";
}
.fa-instagram:before {
content: "\f16d";
}
.fa-flickr:before {
content: "\f16e";
}
.fa-adn:before {
content: "\f170";
}
.fa-bitbucket:before {
content: "\f171";
}
.fa-bitbucket-square:before {
content: "\f172";
}
.fa-tumblr:before {
content: "\f173";
}
.fa-tumblr-square:before {
content: "\f174";
}
.fa-long-arrow-down:before {
content: "\f175";
}
.fa-long-arrow-up:before {
content: "\f176";
}
.fa-long-arrow-left:before {
content: "\f177";
}
.fa-long-arrow-right:before {
content: "\f178";
}
.fa-apple:before {
content: "\f179";
}
.fa-windows:before {
content: "\f17a";
}
.fa-android:before {
content: "\f17b";
}
.fa-linux:before {
content: "\f17c";
}
.fa-dribbble:before {
content: "\f17d";
}
.fa-skype:before {
content: "\f17e";
}
.fa-foursquare:before {
content: "\f180";
}
.fa-trello:before {
content: "\f181";
}
.fa-female:before {
content: "\f182";
}
.fa-male:before {
content: "\f183";
}
.fa-gittip:before {
content: "\f184";
}
.fa-sun-o:before {
content: "\f185";
}
.fa-moon-o:before {
content: "\f186";
}
.fa-archive:before {
content: "\f187";
}
.fa-bug:before {
content: "\f188";
}
.fa-vk:before {
content: "\f189";
}
.fa-weibo:before {
content: "\f18a";
}
.fa-renren:before {
content: "\f18b";
}
.fa-pagelines:before {
content: "\f18c";
}
.fa-stack-exchange:before {
content: "\f18d";
}
.fa-arrow-circle-o-right:before {
content: "\f18e";
}
.fa-arrow-circle-o-left:before {
content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
content: "\f191";
}
.fa-dot-circle-o:before {
content: "\f192";
}
.fa-wheelchair:before {
content: "\f193";
}
.fa-vimeo-square:before {
content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
content: "\f195";
}
.fa-plus-square-o:before {
content: "\f196";
}
.fa-space-shuttle:before {
content: "\f197";
}
.fa-slack:before {
content: "\f198";
}
.fa-envelope-square:before {
content: "\f199";
}
.fa-wordpress:before {
content: "\f19a";
}
.fa-openid:before {
content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
content: "\f19d";
}
.fa-yahoo:before {
content: "\f19e";
}
.fa-google:before {
content: "\f1a0";
}
.fa-reddit:before {
content: "\f1a1";
}
.fa-reddit-square:before {
content: "\f1a2";
}
.fa-stumbleupon-circle:before {
content: "\f1a3";
}
.fa-stumbleupon:before {
content: "\f1a4";
}
.fa-delicious:before {
content: "\f1a5";
}
.fa-digg:before {
content: "\f1a6";
}
.fa-pied-piper:before {
content: "\f1a7";
}
.fa-pied-piper-alt:before {
content: "\f1a8";
}
.fa-drupal:before {
content: "\f1a9";
}
.fa-joomla:before {
content: "\f1aa";
}
.fa-language:before {
content: "\f1ab";
}
.fa-fax:before {
content: "\f1ac";
}
.fa-building:before {
content: "\f1ad";
}
.fa-child:before {
content: "\f1ae";
}
.fa-paw:before {
content: "\f1b0";
}
.fa-spoon:before {
content: "\f1b1";
}
.fa-cube:before {
content: "\f1b2";
}
.fa-cubes:before {
content: "\f1b3";
}
.fa-behance:before {
content: "\f1b4";
}
.fa-behance-square:before {
content: "\f1b5";
}
.fa-steam:before {
content: "\f1b6";
}
.fa-steam-square:before {
content: "\f1b7";
}
.fa-recycle:before {
content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
content: "\f1ba";
}
.fa-tree:before {
content: "\f1bb";
}
.fa-spotify:before {
content: "\f1bc";
}
.fa-deviantart:before {
content: "\f1bd";
}
.fa-soundcloud:before {
content: "\f1be";
}
.fa-database:before {
content: "\f1c0";
}
.fa-file-pdf-o:before {
content: "\f1c1";
}
.fa-file-word-o:before {
content: "\f1c2";
}
.fa-file-excel-o:before {
content: "\f1c3";
}
.fa-file-powerpoint-o:before {
content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
content: "\f1c8";
}
.fa-file-code-o:before {
content: "\f1c9";
}
.fa-vine:before {
content: "\f1ca";
}
.fa-codepen:before {
content: "\f1cb";
}
.fa-jsfiddle:before {
content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
content: "\f1cd";
}
.fa-circle-o-notch:before {
content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
content: "\f1d1";
}
.fa-git-square:before {
content: "\f1d2";
}
.fa-git:before {
content: "\f1d3";
}
.fa-hacker-news:before {
content: "\f1d4";
}
.fa-tencent-weibo:before {
content: "\f1d5";
}
.fa-qq:before {
content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
content: "\f1d9";
}
.fa-history:before {
content: "\f1da";
}
.fa-circle-thin:before {
content: "\f1db";
}
.fa-header:before {
content: "\f1dc";
}
.fa-paragraph:before {
content: "\f1dd";
}
.fa-sliders:before {
content: "\f1de";
}
.fa-share-alt:before {
content: "\f1e0";
}
.fa-share-alt-square:before {
content: "\f1e1";
}
.fa-bomb:before {
content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
content: "\f1e3";
}
.fa-tty:before {
content: "\f1e4";
}
.fa-binoculars:before {
content: "\f1e5";
}
.fa-plug:before {
content: "\f1e6";
}
.fa-slideshare:before {
content: "\f1e7";
}
.fa-twitch:before {
content: "\f1e8";
}
.fa-yelp:before {
content: "\f1e9";
}
.fa-newspaper-o:before {
content: "\f1ea";
}
.fa-wifi:before {
content: "\f1eb";
}
.fa-calculator:before {
content: "\f1ec";
}
.fa-paypal:before {
content: "\f1ed";
}
.fa-google-wallet:before {
content: "\f1ee";
}
.fa-cc-visa:before {
content: "\f1f0";
}
.fa-cc-mastercard:before {
content: "\f1f1";
}
.fa-cc-discover:before {
content: "\f1f2";
}
.fa-cc-amex:before {
content: "\f1f3";
}
.fa-cc-paypal:before {
content: "\f1f4";
}
.fa-cc-stripe:before {
content: "\f1f5";
}
.fa-bell-slash:before {
content: "\f1f6";
}
.fa-bell-slash-o:before {
content: "\f1f7";
}
.fa-trash:before {
content: "\f1f8";
}
.fa-copyright:before {
content: "\f1f9";
}
.fa-at:before {
content: "\f1fa";
}
.fa-eyedropper:before {
content: "\f1fb";
}
.fa-paint-brush:before {
content: "\f1fc";
}
.fa-birthday-cake:before {
content: "\f1fd";
}
.fa-area-chart:before {
content: "\f1fe";
}
.fa-pie-chart:before {
content: "\f200";
}
.fa-line-chart:before {
content: "\f201";
}
.fa-lastfm:before {
content: "\f202";
}
.fa-lastfm-square:before {
content: "\f203";
}
.fa-toggle-off:before {
content: "\f204";
}
.fa-toggle-on:before {
content: "\f205";
}
.fa-bicycle:before {
content: "\f206";
}
.fa-bus:before {
content: "\f207";
}
.fa-ioxhost:before {
content: "\f208";
}
.fa-angellist:before {
content: "\f209";
}
.fa-cc:before {
content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
content: "\f20b";
}
.fa-meanpath:before {
content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
code {
color: #000;
}
pre {
font-size: inherit;
line-height: inherit;
}
label {
font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.corner-all {
border-radius: 2px;
}
.no-padding {
padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell https://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer. It allows the usage of flexible box
model layouts accross multiple browsers, including older browsers. The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below). Browsers that are known to implement this
new spec completely include:
Firefox 28.0+
Chrome 29.0+
Internet Explorer 11+
Opera 17.0+
Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
.hbox > * {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
}
.vbox {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
.vbox > * {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
/* Old browsers */
-webkit-box-direction: reverse;
-moz-box-direction: reverse;
box-direction: reverse;
/* Modern browsers */
flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
/* Old browsers */
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
/* Old browsers */
-webkit-box-flex: 2;
-moz-box-flex: 2;
box-flex: 2;
/* Modern browsers */
flex: 2;
}
.box-group1 {
/* Deprecated */
-webkit-box-flex-group: 1;
-moz-box-flex-group: 1;
box-flex-group: 1;
}
.box-group2 {
/* Deprecated */
-webkit-box-flex-group: 2;
-moz-box-flex-group: 2;
box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
/* Old browsers */
-webkit-box-pack: start;
-moz-box-pack: start;
box-pack: start;
/* Modern browsers */
justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
/* Old browsers */
-webkit-box-pack: end;
-moz-box-pack: end;
box-pack: end;
/* Modern browsers */
justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
/* Old browsers */
-webkit-box-pack: center;
-moz-box-pack: center;
box-pack: center;
/* Modern browsers */
justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
/* Old browsers */
-webkit-box-pack: baseline;
-moz-box-pack: baseline;
box-pack: baseline;
/* Modern browsers */
justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
/* Old browsers */
-webkit-box-pack: stretch;
-moz-box-pack: stretch;
box-pack: stretch;
/* Modern browsers */
justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
/* Old browsers */
-webkit-box-align: start;
-moz-box-align: start;
box-align: start;
/* Modern browsers */
align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
/* Old browsers */
-webkit-box-align: end;
-moz-box-align: end;
box-align: end;
/* Modern browsers */
align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
/* Old browsers */
-webkit-box-align: center;
-moz-box-align: center;
box-align: center;
/* Modern browsers */
align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
/* Old browsers */
-webkit-box-align: baseline;
-moz-box-align: baseline;
box-align: baseline;
/* Modern browsers */
align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
/* Old browsers */
-webkit-box-align: stretch;
-moz-box-align: stretch;
box-align: stretch;
/* Modern browsers */
align-items: stretch;
}
div.error {
margin: 2em;
text-align: center;
}
div.error > h1 {
font-size: 500%;
line-height: normal;
}
div.error > p {
font-size: 200%;
line-height: normal;
}
div.traceback-wrapper {
text-align: left;
max-width: 800px;
margin: auto;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
body {
background-color: #fff;
/* This makes sure that the body covers the entire window and needs to
be in a different element than the display: box in wrapper below */
position: absolute;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
overflow: visible;
}
body > #header {
/* Initially hidden to prevent FLOUC */
display: none;
background-color: #fff;
/* Display over codemirror */
position: relative;
z-index: 100;
}
body > #header #header-container {
padding-bottom: 5px;
padding-top: 5px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body > #header .header-bar {
width: 100%;
height: 1px;
background: #e7e7e7;
margin-bottom: -1px;
}
@media print {
body > #header {
display: none !important;
}
}
#header-spacer {
width: 100%;
visibility: hidden;
}
@media print {
#header-spacer {
display: none;
}
}
#ipython_notebook {
padding-left: 0px;
padding-top: 1px;
padding-bottom: 1px;
}
@media (max-width: 991px) {
#ipython_notebook {
margin-left: 10px;
}
}
[dir="rtl"] #ipython_notebook {
float: right !important;
}
#noscript {
width: auto;
padding-top: 16px;
padding-bottom: 16px;
text-align: center;
font-size: 22px;
color: red;
font-weight: bold;
}
#ipython_notebook img {
height: 28px;
}
#site {
width: 100%;
display: none;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
overflow: auto;
}
@media print {
#site {
height: auto !important;
}
}
/* Smaller buttons */
.ui-button .ui-button-text {
padding: 0.2em 0.8em;
font-size: 77%;
}
input.ui-button {
padding: 0.3em 0.9em;
}
span#login_widget {
float: right;
}
span#login_widget > .button,
#logout {
color: #333;
background-color: #fff;
border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
background-color: #fff;
border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
color: #fff;
background-color: #333;
}
.nav-header {
text-transform: none;
}
#header > span {
margin-top: 10px;
}
.modal_stretch .modal-dialog {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
max-height: calc(100vh - 200px);
overflow: auto;
flex: 1;
}
@media (min-width: 768px) {
.modal .modal-dialog {
width: 700px;
}
}
@media (min-width: 768px) {
select.form-control {
margin-left: 12px;
margin-right: 12px;
}
}
/*!
*
* IPython auth
*
*/
.center-nav {
display: inline-block;
margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
background-color: none;
display: inline;
}
.alternate_upload.form {
padding: 0;
margin: 0;
}
.alternate_upload input.fileinput {
text-align: center;
vertical-align: middle;
display: inline;
opacity: 0;
z-index: 2;
width: 12ex;
margin-right: -12ex;
}
.alternate_upload .btn-upload {
height: 22px;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
[dir="rtl"] #tabs li {
float: right;
}
ul#tabs {
margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
margin-right: 0px;
}
ul#tabs a {
padding-top: 6px;
padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
text-decoration: none;
}
ul.breadcrumb i.icon-home {
font-size: 16px;
margin-right: 4px;
}
ul.breadcrumb span {
color: #5e5e5e;
}
.list_toolbar {
padding: 4px 0 4px 0;
vertical-align: middle;
}
.list_toolbar .tree-buttons {
padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
padding-top: 1px;
float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
float: right !important;
}
.dynamic-buttons {
padding-top: 3px;
display: inline-block;
}
.list_toolbar [class*="span"] {
min-height: 24px;
}
.list_header {
font-weight: bold;
background-color: #EEE;
}
.list_placeholder {
font-weight: bold;
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
}
.list_container {
margin-top: 4px;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 2px;
}
.list_container > div {
border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
background-color: red;
}
.list_container > div:last-child {
border: none;
}
.list_item:hover .list_item {
background-color: #ddd;
}
.list_item a {
text-decoration: none;
}
.list_item:hover {
background-color: #fafafa;
}
.list_header > div,
.list_item > div {
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
line-height: 22px;
}
.list_header > div input,
.list_item > div input {
margin-right: 7px;
margin-left: 14px;
vertical-align: baseline;
line-height: 22px;
position: relative;
top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
margin-left: -1px;
vertical-align: baseline;
line-height: 22px;
}
.new-file input[type=checkbox] {
visibility: hidden;
}
.item_name {
line-height: 22px;
height: 24px;
}
.item_icon {
font-size: 14px;
color: #5e5e5e;
margin-right: 7px;
margin-left: 7px;
line-height: 22px;
vertical-align: baseline;
}
.item_buttons {
line-height: 1em;
margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
margin-left: 5px;
}
.item_buttons .btn {
min-width: 13ex;
}
.item_buttons .running-indicator {
padding-top: 4px;
color: #5cb85c;
}
.item_buttons .kernel-name {
padding-top: 4px;
color: #5bc0de;
margin-right: 7px;
float: left;
}
.toolbar_info {
height: 24px;
line-height: 24px;
}
.list_item input:not([type=checkbox]) {
padding-top: 3px;
padding-bottom: 3px;
height: 22px;
line-height: 14px;
margin: 0px;
}
.highlight_text {
color: blue;
}
#project_name {
display: inline-block;
padding-left: 7px;
margin-left: -2px;
}
#project_name > .breadcrumb {
padding: 0px;
margin-bottom: 0px;
background-color: transparent;
font-weight: bold;
}
#tree-selector {
padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
float: right;
}
#button-select-all {
min-width: 50px;
}
#select-all {
margin-left: 7px;
margin-right: 2px;
}
.menu_icon {
margin-right: 2px;
}
.tab-content .row {
margin-left: 0px;
margin-right: 0px;
}
.folder_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f114";
}
.folder_icon:before.pull-left {
margin-right: .3em;
}
.folder_icon:before.pull-right {
margin-left: .3em;
}
.notebook_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f02d";
position: relative;
top: -1px;
}
.notebook_icon:before.pull-left {
margin-right: .3em;
}
.notebook_icon:before.pull-right {
margin-left: .3em;
}
.running_notebook_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f02d";
position: relative;
top: -1px;
color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
margin-left: .3em;
}
.file_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f016";
position: relative;
top: -2px;
}
.file_icon:before.pull-left {
margin-right: .3em;
}
.file_icon:before.pull-right {
margin-left: .3em;
}
#notebook_toolbar .pull-right {
padding-top: 0px;
margin-right: -1px;
}
ul#new-menu {
left: auto;
right: 0;
}
[dir="rtl"] #new-menu {
text-align: right;
}
.kernel-menu-icon {
padding-right: 12px;
width: 24px;
content: "\f096";
}
.kernel-menu-icon:before {
content: "\f096";
}
.kernel-menu-icon-current:before {
content: "\f00c";
}
#tab_content {
padding-top: 20px;
}
#running .panel-group .panel {
margin-top: 3px;
margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
background-color: #EEE;
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
text-decoration: none;
}
#running .panel-group .panel .panel-body {
padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
margin-top: 0px;
margin-bottom: 0px;
border: 0px;
border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
float: right !important;
}
.delete-button {
display: none;
}
.duplicate-button {
display: none;
}
.rename-button {
display: none;
}
.shutdown-button {
display: none;
}
.dynamic-instructions {
display: inline-block;
padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
padding: 0px 5px;
}
.selected-keymap i.fa:before {
content: "\f00c";
}
#mode-menu {
overflow: auto;
max-height: 20em;
}
.edit_app #header {
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
/* Use a negative 1 bottom margin, so the border overlaps the border of the
header */
margin-bottom: -1px;
}
.dirty-indicator {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator.pull-left {
margin-right: .3em;
}
.dirty-indicator.pull-right {
margin-left: .3em;
}
.dirty-indicator-dirty {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator-dirty.pull-left {
margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
margin-left: .3em;
}
.dirty-indicator-clean {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator-clean.pull-left {
margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
margin-left: .3em;
}
.dirty-indicator-clean:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
margin-left: .3em;
}
#filename {
font-size: 16pt;
display: table;
padding: 0px 5px;
}
#current-mode {
padding-left: 5px;
padding-right: 5px;
}
#texteditor-backdrop {
padding-top: 20px;
padding-bottom: 20px;
}
@media not print {
#texteditor-backdrop {
background-color: #EEE;
}
}
@media print {
#texteditor-backdrop #texteditor-container .CodeMirror-gutter,
#texteditor-backdrop #texteditor-container .CodeMirror-gutters {
background-color: #fff;
}
}
@media not print {
#texteditor-backdrop #texteditor-container .CodeMirror-gutter,
#texteditor-backdrop #texteditor-container .CodeMirror-gutters {
background-color: #fff;
}
}
@media not print {
#texteditor-backdrop #texteditor-container {
padding: 0px;
background-color: #fff;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
color: black;
}
.ansired {
color: darkred;
}
.ansigreen {
color: darkgreen;
}
.ansiyellow {
color: #c4a000;
}
.ansiblue {
color: darkblue;
}
.ansipurple {
color: darkviolet;
}
.ansicyan {
color: steelblue;
}
.ansigray {
color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
background-color: black;
}
.ansibgred {
background-color: red;
}
.ansibggreen {
background-color: green;
}
.ansibgyellow {
background-color: yellow;
}
.ansibgblue {
background-color: blue;
}
.ansibgpurple {
background-color: magenta;
}
.ansibgcyan {
background-color: cyan;
}
.ansibggray {
background-color: gray;
}
div.cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
border-radius: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: transparent;
width: 100%;
padding: 5px;
/* This acts as a spacer between cells, that is outside the border */
margin: 0px;
outline: none;
border-left-width: 1px;
padding-left: 5px;
background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
border-left-color: #90CAF9;
border-left-color: #E3F2FD;
border-left-width: 1px;
padding-left: 5px;
border-right-color: #E3F2FD;
border-right-width: 1px;
background: #E3F2FD;
}
@media print {
div.cell.jupyter-soft-selected {
border-color: transparent;
}
}
div.cell.selected {
border-color: #ababab;
border-left-width: 0px;
padding-left: 6px;
background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
div.cell.selected {
border-color: transparent;
}
}
div.cell.selected.jupyter-soft-selected {
border-left-width: 0;
padding-left: 6px;
background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
border-color: #66BB6A;
border-left-width: 0px;
padding-left: 6px;
background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
.edit_mode div.cell.selected {
border-color: transparent;
}
}
.prompt {
/* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
min-width: 14ex;
/* This padding is tuned to match the padding on the CodeMirror editor. */
padding: 0.4em;
margin: 0px;
font-family: monospace;
text-align: right;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
/* Don't highlight prompt number selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Use default cursor */
cursor: default;
}
@media (max-width: 540px) {
.prompt {
text-align: left;
}
}
div.inner_cell {
min-width: 0;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
border: 1px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
is no content in the output_subarea and the prompt. The main purpose of this is
to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
padding-top: 0;
padding-bottom: 0;
}
div.unrecognized_cell {
padding: 5px 5px 5px 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.unrecognized_cell .inner_cell {
border-radius: 2px;
padding: 5px;
font-weight: bold;
color: red;
border: 1px solid #cfcfcf;
background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
color: inherit;
text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
color: inherit;
text-decoration: none;
}
@media (max-width: 540px) {
div.unrecognized_cell > div.prompt {
display: none;
}
}
div.code_cell {
/* avoid page breaking on code cells when printing */
}
@media print {
div.code_cell {
page-break-inside: avoid;
}
}
/* any special styling for code cells that are currently running goes here */
div.input {
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.input {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
color: #303F9F;
border-top: 1px solid transparent;
}
div.input_area > div.highlight {
margin: 0.4em;
border: none;
padding: 0px;
background-color: transparent;
}
div.input_area > div.highlight > pre {
margin: 0px;
border: none;
padding: 0px;
background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
* monospace font with inconsistent normal/bold/italic height. See
* notebookmain.js. Such fonts will have keywords vertically offset with
* respect to the rest of the text. The user should select a better font.
* See: https://github.com/ipython/ipython/issues/1503
*
* .CodeMirror span {
* vertical-align: bottom;
* }
*/
.CodeMirror {
line-height: 1.21429em;
/* Changed from 1em to our global default */
font-size: 14px;
height: auto;
/* Changed to auto to autogrow */
background: none;
/* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
/* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
/* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
overflow-y: hidden;
overflow-x: auto;
}
.CodeMirror-lines {
/* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
/* we have set a different line-height and want this to scale with that. */
padding: 0.4em;
}
.CodeMirror-linenumber {
padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.CodeMirror pre {
/* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
/* .CodeMirror-lines */
padding: 0;
border: 0;
border-radius: 0;
}
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme
*/
.highlight-base {
color: #000;
}
.highlight-variable {
color: #000;
}
.highlight-variable-2 {
color: #1a1a1a;
}
.highlight-variable-3 {
color: #333333;
}
.highlight-string {
color: #BA2121;
}
.highlight-comment {
color: #408080;
font-style: italic;
}
.highlight-number {
color: #080;
}
.highlight-atom {
color: #88F;
}
.highlight-keyword {
color: #008000;
font-weight: bold;
}
.highlight-builtin {
color: #008000;
}
.highlight-error {
color: #f00;
}
.highlight-operator {
color: #AA22FF;
font-weight: bold;
}
.highlight-meta {
color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
color: #00f;
}
.highlight-string-2 {
color: #f50;
}
.highlight-qualifier {
color: #555;
}
.highlight-bracket {
color: #997;
}
.highlight-tag {
color: #170;
}
.highlight-attribute {
color: #00c;
}
.highlight-header {
color: blue;
}
.highlight-quote {
color: #090;
}
.highlight-link {
color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
color: #008000;
font-weight: bold;
}
.cm-s-ipython span.cm-atom {
color: #88F;
}
.cm-s-ipython span.cm-number {
color: #080;
}
.cm-s-ipython span.cm-def {
color: #00f;
}
.cm-s-ipython span.cm-variable {
color: #000;
}
.cm-s-ipython span.cm-operator {
color: #AA22FF;
font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
color: #333333;
}
.cm-s-ipython span.cm-comment {
color: #408080;
font-style: italic;
}
.cm-s-ipython span.cm-string {
color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
color: #f50;
}
.cm-s-ipython span.cm-meta {
color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
color: #555;
}
.cm-s-ipython span.cm-builtin {
color: #008000;
}
.cm-s-ipython span.cm-bracket {
color: #997;
}
.cm-s-ipython span.cm-tag {
color: #170;
}
.cm-s-ipython span.cm-attribute {
color: #00c;
}
.cm-s-ipython span.cm-header {
color: blue;
}
.cm-s-ipython span.cm-quote {
color: #090;
}
.cm-s-ipython span.cm-link {
color: #00c;
}
.cm-s-ipython span.cm-error {
color: #f00;
}
.cm-s-ipython span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
div.output_wrapper {
/* this position must be relative to enable descendents to be absolute within it */
position: relative;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
/* ideally, this would be max-height, but FF barfs all over that */
height: 24em;
/* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
width: 100%;
overflow: auto;
border-radius: 2px;
-webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
margin: 0px;
padding: 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
div.out_prompt_overlay {
height: 100%;
padding: 0px 0.4em;
position: absolute;
border-radius: 2px;
}
div.out_prompt_overlay:hover {
/* use inner shadow to get border that is computed the same on WebKit/FF */
-webkit-box-shadow: inset 0 0 1px #000;
box-shadow: inset 0 0 1px #000;
background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
padding: 0px;
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.output_area .MathJax_Display {
text-align: left !important;
}
div.output_area .rendered_html table {
margin-left: 0;
margin-right: 0;
}
div.output_area .rendered_html img {
margin-left: 0;
margin-right: 0;
}
div.output_area img,
div.output_area svg {
max-width: 100%;
height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
max-width: none;
}
/* This is needed to protect the pre formating from global settings such
as that of bootstrap */
.output {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
@media (max-width: 540px) {
div.output_area {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
div.output_area pre {
margin: 0;
padding: 0;
border: 0;
vertical-align: baseline;
color: black;
background-color: transparent;
border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
the prompt div. */
div.output_subarea {
overflow-x: auto;
padding: 0.4em;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
output types */
/* all text output has this class: */
div.output_text {
text-align: left;
color: #000;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
background: #fdd;
/* very light red background for stderr */
}
div.output_latex {
text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
padding: 0;
}
.js-error {
color: darkred;
}
/* raw_input styles */
div.raw_input_container {
line-height: 1.21429em;
padding-top: 5px;
}
pre.raw_input_prompt {
/* nothing needed here. */
}
input.raw_input {
font-family: monospace;
font-size: inherit;
color: inherit;
width: auto;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
}
input.raw_input:focus {
box-shadow: none;
}
p.p-space {
margin-bottom: 10px;
}
div.output_unrecognized {
padding: 5px;
font-weight: bold;
color: red;
}
div.output_unrecognized a {
color: inherit;
text-decoration: none;
}
div.output_unrecognized a:hover {
color: inherit;
text-decoration: none;
}
.rendered_html {
color: #000;
/* any extras will just be numbers: */
}
.rendered_html em {
font-style: italic;
}
.rendered_html strong {
font-weight: bold;
}
.rendered_html u {
text-decoration: underline;
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1 {
font-size: 185.7%;
margin: 1.08em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h2 {
font-size: 157.1%;
margin: 1.27em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h3 {
font-size: 128.6%;
margin: 1.55em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h4 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h5 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h6 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul {
list-style: disc;
margin: 0em 2em;
padding-left: 0px;
}
.rendered_html ul ul {
list-style: square;
margin: 0em 2em;
}
.rendered_html ul ul ul {
list-style: circle;
margin: 0em 2em;
}
.rendered_html ol {
list-style: decimal;
margin: 0em 2em;
padding-left: 0px;
}
.rendered_html ol ol {
list-style: upper-alpha;
margin: 0em 2em;
}
.rendered_html ol ol ol {
list-style: lower-alpha;
margin: 0em 2em;
}
.rendered_html ol ol ol ol {
list-style: lower-roman;
margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
list-style: decimal;
margin: 0em 2em;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html hr {
color: black;
background-color: black;
}
.rendered_html pre {
margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
border: 0;
background-color: #fff;
color: #000;
font-size: 100%;
padding: 0px;
}
.rendered_html blockquote {
margin: 1em 2em;
}
.rendered_html table {
margin-left: auto;
margin-right: auto;
border: 1px solid black;
border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
border: 1px solid black;
border-collapse: collapse;
margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
text-align: left;
vertical-align: middle;
padding: 4px;
}
.rendered_html th {
font-weight: bold;
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html p {
text-align: left;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html img {
display: block;
margin-left: auto;
margin-right: auto;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
max-width: 100%;
height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
max-width: none;
}
div.text_cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.text_cell > div.prompt {
display: none;
}
}
div.text_cell_render {
/*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
outline: none;
resize: none;
width: inherit;
border-style: none;
padding: 0.5em 0.5em 0.5em 0.4em;
color: #000;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
a.anchor-link:link {
text-decoration: none;
padding: 0px 20px;
visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
visibility: visible;
}
.text_cell.rendered .input_area {
display: none;
}
.text_cell.rendered .rendered_html {
overflow-x: auto;
overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
font-size: 185.7%;
}
.cm-header-2 {
font-size: 157.1%;
}
.cm-header-3 {
font-size: 128.6%;
}
.cm-header-4 {
font-size: 110%;
}
.cm-header-5 {
font-size: 100%;
font-style: italic;
}
.cm-header-6 {
font-size: 100%;
font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
.notebook_app {
padding-left: 0px;
padding-right: 0px;
}
}
#ipython-main-app {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
height: 100%;
}
div#notebook_panel {
margin: 0px;
padding: 0px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
height: 100%;
}
div#notebook {
font-size: 14px;
line-height: 20px;
overflow-y: hidden;
overflow-x: auto;
width: 100%;
/* This spaces the page away from the edge of the notebook area */
padding-top: 20px;
margin: 0px;
outline: none;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
min-height: 100%;
}
@media not print {
#notebook-container {
padding: 15px;
background-color: #fff;
min-height: 0;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
}
@media print {
#notebook-container {
width: 100%;
}
}
div.ui-widget-content {
border: 1px solid #ababab;
outline: none;
}
pre.dialog {
background-color: #f7f7f7;
border: 1px solid #ddd;
border-radius: 2px;
padding: 0.4em;
padding-left: 2em;
}
p.dialog {
padding: 0.2em;
}
/* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
*/
pre,
code,
kbd,
samp {
white-space: pre-wrap;
}
#fonttest {
font-family: monospace;
}
p {
margin-bottom: 0;
}
.end_space {
min-height: 100px;
transition: height .2s ease;
}
.notebook_app > #header {
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
.notebook_app {
background-color: #EEE;
}
}
kbd {
border-style: solid;
border-width: 1px;
box-shadow: none;
margin: 2px;
padding-left: 2px;
padding-right: 2px;
padding-top: 1px;
padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
border: thin solid #CFCFCF;
border-bottom: none;
background: #EEE;
border-radius: 2px 2px 0px 0px;
width: 100%;
height: 29px;
padding-right: 4px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
/* Old browsers */
-webkit-box-pack: end;
-moz-box-pack: end;
box-pack: end;
/* Modern browsers */
justify-content: flex-end;
display: -webkit-flex;
}
@media print {
.celltoolbar {
display: none;
}
}
.ctb_hideshow {
display: none;
vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
border: 1px solid #cfcfcf;
}
.celltoolbar {
font-size: 87%;
padding-top: 3px;
}
.celltoolbar select {
display: block;
width: 100%;
height: 32px;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
width: inherit;
font-size: inherit;
height: 22px;
padding: 0px;
display: inline-block;
}
.celltoolbar select:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
color: #999;
opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
color: #999;
}
.celltoolbar select::-ms-expand {
border: 0;
background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
background-color: #eeeeee;
opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
cursor: not-allowed;
}
textarea.celltoolbar select {
height: auto;
}
select.celltoolbar select {
height: 30px;
line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
height: auto;
}
.celltoolbar label {
margin-left: 5px;
margin-right: 5px;
}
.completions {
position: absolute;
z-index: 110;
overflow: hidden;
border: 1px solid #ababab;
border-radius: 2px;
-webkit-box-shadow: 0px 6px 10px -1px #adadad;
box-shadow: 0px 6px 10px -1px #adadad;
line-height: 1;
}
.completions select {
background: white;
outline: none;
border: none;
padding: 0px;
margin: 0px;
overflow: auto;
font-family: monospace;
font-size: 110%;
color: #000;
width: auto;
}
.completions select option.context {
color: #286090;
}
#kernel_logo_widget {
float: right !important;
float: right;
}
#kernel_logo_widget .current_kernel_logo {
display: none;
margin-top: -1px;
margin-bottom: -1px;
width: 32px;
height: 32px;
}
#menubar {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
margin-top: 1px;
}
#menubar .navbar {
border-top: 1px;
border-radius: 0px 0px 2px 2px;
margin-bottom: 0px;
}
#menubar .navbar-toggle {
float: left;
padding-top: 7px;
padding-bottom: 7px;
border: none;
}
#menubar .navbar-collapse {
clear: left;
}
.nav-wrapper {
border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
padding-top: 4px;
}
ul#help_menu li a {
overflow: hidden;
padding-right: 2.2em;
}
ul#help_menu li a i {
margin-right: -1.2em;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
display: block;
}
.dropdown-submenu > a:after {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: block;
content: "\f0da";
float: right;
color: #333333;
margin-top: 2px;
margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
color: #262626;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
left: -100%;
margin-left: 10px;
}
#notification_area {
float: right !important;
float: right;
z-index: 10;
}
.indicator_area {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
}
#kernel_indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
padding-left: 5px;
padding-right: 5px;
}
#modal_indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
}
#readonly-indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
margin-top: 2px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 0px;
display: none;
}
.modal_indicator:before {
width: 1.28571429em;
text-align: center;
}
.edit_mode .modal_indicator:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
margin-left: .3em;
}
.command_mode .modal_indicator:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
margin-left: .3em;
}
.kernel_idle_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
margin-left: .3em;
}
.kernel_busy_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f111";
}
.kernel_busy_icon:before.pull-left {
margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
margin-left: .3em;
}
.kernel_dead_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
margin-left: .3em;
}
.kernel_disconnected_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
margin-left: .3em;
}
.notification_widget {
color: #777;
z-index: 10;
background: rgba(240, 240, 240, 0.5);
margin-right: 4px;
color: #333;
background-color: #fff;
border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
.notification_widget:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
background-color: #fff;
border-color: #ccc;
}
.notification_widget .badge {
color: #fff;
background-color: #333;
}
.notification_widget.warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
color: #fff;
background-color: #ec971f;
border-color: #985f0d;
}
.notification_widget.warning:hover {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
color: #fff;
background-color: #d58512;
border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
background-color: #f0ad4e;
border-color: #eea236;
}
.notification_widget.warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.notification_widget.success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
color: #fff;
background-color: #449d44;
border-color: #255625;
}
.notification_widget.success:hover {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
color: #fff;
background-color: #398439;
border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
background-color: #5cb85c;
border-color: #4cae4c;
}
.notification_widget.success .badge {
color: #5cb85c;
background-color: #fff;
}
.notification_widget.info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
color: #fff;
background-color: #31b0d5;
border-color: #1b6d85;
}
.notification_widget.info:hover {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
color: #fff;
background-color: #269abc;
border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
background-color: #5bc0de;
border-color: #46b8da;
}
.notification_widget.info .badge {
color: #5bc0de;
background-color: #fff;
}
.notification_widget.danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
color: #fff;
background-color: #c9302c;
border-color: #761c19;
}
.notification_widget.danger:hover {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
color: #fff;
background-color: #ac2925;
border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
background-color: #d9534f;
border-color: #d43f3a;
}
.notification_widget.danger .badge {
color: #d9534f;
background-color: #fff;
}
div#pager {
background-color: #fff;
font-size: 14px;
line-height: 20px;
overflow: hidden;
display: none;
position: fixed;
bottom: 0px;
width: 100%;
max-height: 50%;
padding-top: 8px;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
/* Display over codemirror */
z-index: 100;
/* Hack which prevents jquery ui resizable from changing top. */
top: auto !important;
}
div#pager pre {
line-height: 1.21429em;
color: #000;
background-color: #f7f7f7;
padding: 0.4em;
}
div#pager #pager-button-area {
position: absolute;
top: 8px;
right: 20px;
}
div#pager #pager-contents {
position: relative;
overflow: auto;
width: 100%;
height: 100%;
}
div#pager #pager-contents #pager-container {
position: relative;
padding: 15px 0px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
top: 0px;
height: 8px;
background: #f7f7f7;
border-top: 1px solid #cfcfcf;
border-bottom: 1px solid #cfcfcf;
/* This injects handle bars (a short, wide = symbol) for
the resize handle. */
}
div#pager .ui-resizable-handle::after {
content: '';
top: 2px;
left: 50%;
height: 3px;
width: 30px;
margin-left: -15px;
position: absolute;
border-top: 1px solid #cfcfcf;
}
.quickhelp {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
line-height: 1.8em;
}
.shortcut_key {
display: inline-block;
width: 21ex;
text-align: right;
font-family: monospace;
}
.shortcut_descr {
display: inline-block;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
span.save_widget {
margin-top: 6px;
}
span.save_widget span.filename {
height: 1em;
line-height: 1em;
padding: 3px;
margin-left: 16px;
border: none;
font-size: 146.5%;
border-radius: 2px;
}
span.save_widget span.filename:hover {
background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
font-size: small;
}
@media (max-width: 767px) {
span.save_widget {
font-size: small;
}
span.checkpoint_status,
span.autosave_status {
display: none;
}
}
@media (min-width: 768px) and (max-width: 991px) {
span.checkpoint_status {
display: none;
}
span.autosave_status {
font-size: x-small;
}
}
.toolbar {
padding: 0px;
margin-left: -5px;
margin-top: 2px;
margin-bottom: 5px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
width: auto;
vertical-align: middle;
margin-right: 2px;
margin-bottom: 0px;
display: inline;
font-size: 92%;
margin-left: 0.3em;
margin-right: 0.3em;
padding: 0px;
padding-top: 3px;
}
.toolbar .btn {
padding: 2px 8px;
}
.toolbar .btn-group {
margin-top: 0px;
margin-left: 5px;
}
#maintoolbar {
margin-bottom: -3px;
margin-top: -8px;
border: 0px;
min-height: 27px;
margin-left: 0px;
padding-top: 11px;
padding-bottom: 3px;
}
#maintoolbar .navbar-text {
float: none;
vertical-align: middle;
text-align: right;
margin-left: 5px;
margin-right: 0px;
margin-top: 0px;
}
.select-xs {
height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
background-color: #F37626;
color: white;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
* of chance of beeing generated from the ../less/[samename].less file, you can
* try to get back the less file by reverting somme commit in history
**/
/*
* We'll try to get something pretty, so we
* have some strange css to have the scroll bar on
* the left with fix button on the top right of the tooltip
*/
@-moz-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-moz-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/*properties of tooltip after "expand"*/
.bigtooltip {
overflow: auto;
height: 200px;
-webkit-transition-property: height;
-webkit-transition-duration: 500ms;
-moz-transition-property: height;
-moz-transition-duration: 500ms;
transition-property: height;
transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
-webkit-transition-property: height;
-webkit-transition-duration: 500ms;
-moz-transition-property: height;
-moz-transition-duration: 500ms;
transition-property: height;
transition-duration: 500ms;
text-overflow: ellipsis;
overflow: hidden;
height: 80px;
}
.tooltipbuttons {
position: absolute;
padding-right: 15px;
top: 0px;
right: 0px;
}
.tooltiptext {
/*avoid the button to overlap on some docstring*/
padding-right: 30px;
}
.ipython_tooltip {
max-width: 700px;
/*fade-in animation when inserted*/
-webkit-animation: fadeOut 400ms;
-moz-animation: fadeOut 400ms;
animation: fadeOut 400ms;
-webkit-animation: fadeIn 400ms;
-moz-animation: fadeIn 400ms;
animation: fadeIn 400ms;
vertical-align: middle;
background-color: #f7f7f7;
overflow: visible;
border: #ababab 1px solid;
outline: none;
padding: 3px;
margin: 0px;
padding-left: 7px;
font-family: monospace;
min-height: 50px;
-moz-box-shadow: 0px 6px 10px -1px #adadad;
-webkit-box-shadow: 0px 6px 10px -1px #adadad;
box-shadow: 0px 6px 10px -1px #adadad;
border-radius: 2px;
position: absolute;
z-index: 1000;
}
.ipython_tooltip a {
float: right;
}
.ipython_tooltip .tooltiptext pre {
border: 0;
border-radius: 0;
font-size: 100%;
background-color: #f7f7f7;
}
.pretooltiparrow {
left: 0px;
margin: 0px;
top: -16px;
width: 40px;
height: 16px;
overflow: hidden;
position: absolute;
}
.pretooltiparrow:before {
background-color: #f7f7f7;
border: 1px #ababab solid;
z-index: 11;
content: "";
position: absolute;
left: 15px;
top: 10px;
width: 25px;
height: 25px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
ul.typeahead-list i {
margin-left: -10px;
width: 18px;
}
ul.typeahead-list {
max-height: 80vh;
overflow: auto;
}
ul.typeahead-list > li > a {
/** Firefox bug **/
/* see https://github.com/jupyter/notebook/issues/559 */
white-space: normal;
}
.cmd-palette .modal-body {
padding: 7px;
}
.cmd-palette form {
background: white;
}
.cmd-palette input {
outline: none;
}
.no-shortcut {
display: none;
}
.command-shortcut:before {
content: "(command)";
padding-right: 3px;
color: #777777;
}
.edit-shortcut:before {
content: "(edit)";
padding-right: 3px;
color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
background-color: #BBDEFB;
border-color: #90CAF9;
border-style: solid;
border-width: 1px;
border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
background-color: #FFCDD2;
border-color: #EF9A9A;
border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
background-color: #C8E6C9;
border-color: #A5D6A7;
border-radius: 0px;
}
#find-and-replace #replace-preview {
max-height: 60vh;
overflow: auto;
}
#find-and-replace #replace-preview pre {
padding: 5px 10px;
}
.terminal-app {
background: #EEE;
}
.terminal-app #header {
background: #fff;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
width: 100%;
float: left;
font-family: monospace;
color: white;
background: black;
padding: 0.4em;
border-radius: 2px;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
line-height: 1em;
font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
padding: 10px;
}
.terminal-app .terminal-cursor {
color: black;
background: white;
}
.terminal-app #terminado-container {
margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
</style>
<style type="text/css">
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
</style>
<style type="text/css">
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }
.ansi-bold { font-weight: bold; }
</style>
<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
overflow: visible;
padding: 8px;
}
div#notebook {
overflow: visible;
border-top: none;
}
@media print {
div.cell {
display: block;
page-break-inside: avoid;
}
div.output_wrapper {
display: block;
page-break-inside: avoid;
}
div.output {
display: block;
page-break-inside: avoid;
}
}
</style>
<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">
<!-- Loading mathjax macro -->
<!-- Load mathjax -->
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
processEnvironments: true
},
// Center justify equations in code and markdown cells. Elsewhere
// we use CSS to left justify single line equations in code cells.
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<!-- End of mathjax configuration --></head>
<body>
<div tabindex="-1" id="notebook" class="border-box-sizing">
<div class="container" id="notebook-container">
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Objective:">Objective:<a class="anchor-link" href="#Objective:">¶</a></h1><p>Assign a sentiment score to reviews (0.0 to 1.0 where a zero score is a full negative sentiment).</p>
<p>For this task, we will use a reviews file, which contains a snapshot of reviews from recent months (first line is a header line) for a travel company</p>
<p>We would like to do following :</p>
<ol>
<li>Explain the different stages we took </li>
<li>We want Score to be ‘close enough’ to real world performance. </li>
<li>Identify some key findings/insights we extracted from the data</li>
</ol>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Brief-Steps-to-explain-overall-process">Brief Steps to explain overall process<a class="anchor-link" href="#Brief-Steps-to-explain-overall-process">¶</a></h1><p>We will do following steps to create unsupervised sentiment labeling for the review data.</p>
<ol>
<li>Create a sentiment Lexicon based on sentiment words, adjectives, adverbs, negation words. Files are located in data/sentiment folder. </li>
<li>Load review data into dataframe and perform following steps: <ol>
<li>Split and tokenize paragraphs into sentences and then into words (we use nltk for this)</li>
<li>perform data analysis on the reviews dataframe using sentiment lexicon and code for more information</li>
</ol>
</li>
<li>Write code to assign sentiment scores between 0.0 to 0.1</li>
</ol>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [1]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># Load libraries and some settings </span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="kn">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="kn">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="kn">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="kn">import</span> <span class="nn">nltk</span>
<span class="kn">import</span> <span class="nn">math</span>
<span class="c1"># print graphs inline</span>
<span class="o">%</span><span class="k">matplotlib</span> inline
<span class="n">plt</span><span class="o">.</span><span class="n">rcParams</span><span class="p">[</span><span class="s2">"figure.figsize"</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mi">20</span><span class="p">,</span><span class="mi">3</span><span class="p">)</span>
<span class="n">pd</span><span class="o">.</span><span class="n">options</span><span class="o">.</span><span class="n">mode</span><span class="o">.</span><span class="n">chained_assignment</span> <span class="o">=</span> <span class="bp">None</span> <span class="c1"># default='warn'</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># download Punkt sentence tokenizer and pos tagger. </span>
<span class="n">nltk</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="s1">'punkt'</span><span class="p">)</span>
<span class="n">nltk</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="s1">'averaged_perceptron_tagger'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[nltk_data] Downloading package punkt to
[nltk_data] /Users/sanjaymeena/nltk_data...
[nltk_data] Package punkt is already up-to-date!
[nltk_data] Downloading package averaged_perceptron_tagger to
[nltk_data] /Users/sanjaymeena/nltk_data...
[nltk_data] Package averaged_perceptron_tagger is already up-to-
[nltk_data] date!
</pre>
</div>
</div>
<div class="output_area">
<div class="prompt output_prompt">Out[2]:</div>
<div class="output_text output_subarea output_execute_result">
<pre>True</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Create-Sentiment-Lexicon-Dataframe">Create Sentiment Lexicon Dataframe<a class="anchor-link" href="#Create-Sentiment-Lexicon-Dataframe">¶</a></h1><p>We will load following data :</p>
<pre><code>1. List of sentiment words and their valence
2. List of negative words
3. List of degree words (adjectives, adverbs) based on whether they increse or decrease the degree
</code></pre>
<h2 id="References-for-these-data-:">References for these data :<a class="anchor-link" href="#References-for-these-data-:">¶</a></h2><ol>
<li><a href="https://www.cs.uic.edu/~liub/FBS/NLP-handbook-sentiment-analysis.pdf">https://www.cs.uic.edu/~liub/FBS/NLP-handbook-sentiment-analysis.pdf</a></li>
<li><a href="https://positivewordsresearch.com/list-of-positive-words/">https://positivewordsresearch.com/list-of-positive-words/</a></li>
<li><a href="https://github.com/bohana/sentlex">https://github.com/bohana/sentlex</a></li>
</ol>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># load sentiment dictionary</span>
<span class="n">sentiment_dict</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s1">'data/sentiment/AFINN-111.txt'</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
<span class="n">sentiment_dict</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'word'</span><span class="p">,</span><span class="s1">'valence'</span><span class="p">]</span>
<span class="n">sentiment_dict</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'sentiment'</span>
<span class="c1">#sentiment_dict.head()</span>
<span class="c1"># load negation words</span>
<span class="n">negative_words</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s1">'data/sentiment/negate.txt'</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
<span class="n">negative_words</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span>
<span class="c1"># negative_words['valence']=0</span>
<span class="n">negative_words</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'negation'</span>
<span class="c1"># load degree words</span>
<span class="n">degree_words</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s1">'data/sentiment/degree_words.txt'</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="bp">None</span><span class="p">)</span>
<span class="n">degree_words</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'word'</span><span class="p">,</span><span class="s1">'degree'</span><span class="p">]</span>
<span class="n">degree_words</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'degree'</span>
<span class="c1"># degree_words['valence']=0</span>
<span class="n">degree_words</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
<span class="c1">#also load 1 more source of positive negative sentiment words</span>
<span class="n">ptrckprry_negative_words</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s1">'data/sentiment/negative-words.txt'</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">comment</span><span class="o">=</span><span class="s1">';'</span><span class="p">)</span>
<span class="n">ptrckprry_negative_words</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span>
<span class="n">ptrckprry_negative_words</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'sentiment'</span>
<span class="n">ptrckprry_negative_words</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=-</span><span class="mi">1</span>
<span class="n">ptrckprry_positive_words</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_table</span><span class="p">(</span><span class="s1">'data/sentiment/positive-words.txt'</span><span class="p">,</span> <span class="n">header</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span><span class="n">comment</span><span class="o">=</span><span class="s1">';'</span><span class="p">)</span>
<span class="n">ptrckprry_positive_words</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span>
<span class="n">ptrckprry_positive_words</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'sentiment'</span>
<span class="n">ptrckprry_positive_words</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=</span><span class="mi">1</span>
<span class="c1"># concat to create final sentiment lexicon</span>
<span class="n">sentiment_lexicon</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">concat</span><span class="p">([</span><span class="n">sentiment_dict</span><span class="p">,</span><span class="n">ptrckprry_positive_words</span><span class="p">,</span><span class="n">ptrckprry_negative_words</span><span class="p">,</span><span class="n">negative_words</span><span class="p">,</span><span class="n">degree_words</span><span class="p">],</span> <span class="n">ignore_index</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
<span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">=</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="s1">'none'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [21]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">sentiment_lexicon</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="n">n</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[21]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>degree</th>
<th>valence</th>
<th>word</th>
<th>word_type</th>
</tr>
</thead>
<tbody>
<tr>
<th>3606</th>
<td>none</td>
<td>1.0</td>
<td>magic</td>
<td>sentiment</td>
</tr>
<tr>
<th>4494</th>
<td>none</td>
<td>-1.0</td>
<td>abrade</td>
<td>sentiment</td>
</tr>
<tr>
<th>3674</th>
<td>none</td>
<td>1.0</td>
<td>neatly</td>
<td>sentiment</td>
</tr>
<tr>
<th>7426</th>
<td>none</td>
<td>-1.0</td>
<td>mocks</td>
<td>sentiment</td>
</tr>
<tr>
<th>9342</th>
<td>decr</td>
<td>0.0</td>
<td>sort of</td>
<td>degree</td>
</tr>
<tr>
<th>4550</th>
<td>none</td>
<td>-1.0</td>
<td>adulterier</td>
<td>sentiment</td>
</tr>
<tr>
<th>7742</th>
<td>none</td>
<td>-1.0</td>
<td>perplexed</td>
<td>sentiment</td>
</tr>
<tr>
<th>4955</th>
<td>none</td>
<td>-1.0</td>
<td>bully</td>
<td>sentiment</td>
</tr>
<tr>
<th>8676</th>
<td>none</td>
<td>-1.0</td>
<td>tank</td>
<td>sentiment</td>
</tr>
<tr>
<th>5506</th>
<td>none</td>
<td>-1.0</td>
<td>deterioration</td>
<td>sentiment</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Some information about the data in the sentiment lexicon . As we use lexicon information, a better and more richer lexicon will lead to better results</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [22]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="k">print</span> <span class="s1">'total word types in sentiment frame : '</span> <span class="p">,</span> <span class="nb">set</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">])</span>
<span class="k">print</span> <span class="s1">'total sentiment words : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">==</span><span class="s1">'sentiment'</span><span class="p">])</span>
<span class="k">print</span> <span class="s1">'total negation words : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">==</span><span class="s1">'negation'</span><span class="p">])</span>
<span class="k">print</span> <span class="s1">'total positive sentiment words : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span> <span class="o">></span> <span class="mi">0</span><span class="p">])</span>
<span class="k">print</span> <span class="s1">'total negative sentiment words : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span> <span class="o"><</span> <span class="mi">0</span><span class="p">])</span>
<span class="k">print</span> <span class="s1">'total degree words : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">!=</span><span class="s1">'none'</span><span class="p">])</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>total word types in sentiment frame : set(['degree', 'negation', 'sentiment'])
total sentiment words : 9266
total negation words : 60
total positive sentiment words : 2884
total negative sentiment words : 6381
total degree words : 66
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Load-the-Reviews-Data">Load the Reviews Data<a class="anchor-link" href="#Load-the-Reviews-Data">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [6]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s1">'data/reviews.csv'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [7]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="k">print</span> <span class="s1">'Reviews dataframe shape '</span> <span class="p">,</span> <span class="n">df</span><span class="o">.</span><span class="n">shape</span>
<span class="k">print</span> <span class="s1">'Total unique review titles: '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'review_title'</span><span class="p">]))</span>
<span class="c1"># print df head</span>
<span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Reviews dataframe shape (274339, 3)
Total unique review titles: 166759
</pre>
</div>
</div>
<div class="output_area">
<div class="prompt output_prompt">Out[7]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>hotel_review_id</th>
<th>review_title</th>
<th>review_comments</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>103237986.0</td>
<td>Friendly staff and comfortable stay</td>
<td>Continental breakfast is 7/10</td>
</tr>
<tr>
<th>1</th>
<td>103237985.0</td>
<td>Budget hotel</td>
<td>Hotel is OK but the breakfast taste is so so.</td>
</tr>
<tr>
<th>2</th>
<td>103237979.0</td>
<td>Don't set high expectations</td>
<td>The hotel has a beautiful lobby, delicately de...</td>
</tr>
<tr>
<th>3</th>
<td>103237975.0</td>
<td>Good location</td>
<td>Good location and good view. But check-out tim...</td>
</tr>
<tr>
<th>4</th>
<td>103237974.0</td>
<td>Need Renovations</td>
<td>The rooms and facilities are old and needs tot...</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will define many functions to help with the data analysis and data wrangling part</p>
<ul>
<li>Sentence Splitter and tokenizer</li>
<li>Tag sentence with part of speech (POS) </li>
<li>Create a sentiment word dictionary for a word token</li>
</ul>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [132]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># paths </span>
<span class="n">nltk_splitter</span><span class="o">=</span><span class="n">nltk</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s1">'data/nltk/tokenizers/punkt/english.pickle'</span><span class="p">)</span>
<span class="n">nltk_tokenizer</span> <span class="o">=</span> <span class="n">nltk</span><span class="o">.</span><span class="n">tokenize</span><span class="o">.</span><span class="n">TreebankWordTokenizer</span><span class="p">()</span>
<span class="c1"># function to split paragraph and then tokenize a sentence to words</span>
<span class="k">def</span> <span class="nf">isnan</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">math</span><span class="o">.</span><span class="n">isnan</span><span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">False</span>
<span class="k">def</span> <span class="nf">split_text</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="s1">'split paragraph into sentences and then sentences into words'</span>
<span class="n">tokenized_sentences</span><span class="o">=</span><span class="p">[]</span>
<span class="c1">#print data</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">isnan</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="n">sentences</span> <span class="o">=</span> <span class="n">nltk_splitter</span><span class="o">.</span><span class="n">sentences_from_text</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">sentences</span><span class="p">:</span>
<span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">nltk_tokenizer</span><span class="o">.</span><span class="n">tokenize</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span> <span class="p">:</span>
<span class="n">tokenized_sentences</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">word</span><span class="p">)</span>
<span class="c1">#tokenized_sentences = [words in nltk_tokenizer.tokenize(sentence) for sentence in sentences]</span>
<span class="k">return</span> <span class="n">tokenized_sentences</span>
<span class="c1"># function to tag pos and create data for word in format : [word, pos]</span>
<span class="k">def</span> <span class="nf">tag_pos</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="s1">'tag sentences with pos information and output words in format : [word,pos]'</span>
<span class="n">pos</span> <span class="o">=</span> <span class="n">nltk</span><span class="o">.</span><span class="n">pos_tag</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span>
<span class="c1">#print pos</span>
<span class="k">return</span> <span class="n">pos</span>
<span class="c1"># adds sentiment info for the word using the sentiment lexicon</span>
<span class="k">def</span> <span class="nf">getSentimentWordDictionary</span><span class="p">(</span><span class="n">word</span><span class="p">,</span><span class="n">pos</span><span class="p">):</span>
<span class="s2">"adds sentiment info for the word using the sentiment lexicon"</span>
<span class="c1">#word=word.lower()</span>
<span class="n">dictionary</span><span class="o">=</span><span class="p">{}</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'pos'</span><span class="p">]</span><span class="o">=</span><span class="n">pos</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span><span class="o">=</span><span class="n">word</span>
<span class="k">if</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">:</span>
<span class="c1">#print sentiment_lexicon['word']</span>
<span class="n">dictword</span><span class="o">=</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="n">sentiment_lexicon</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span><span class="o">==</span><span class="n">word</span><span class="p">]</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="o">=</span><span class="n">dictword</span><span class="p">[</span><span class="s1">'word_type'</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=</span><span class="nb">float</span><span class="p">(</span><span class="n">dictword</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">=</span><span class="n">dictword</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'none'</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span>
<span class="k">return</span> <span class="n">dictionary</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will also create functions to create the sentiment dictonary from the reviews data.It is also possible for us toit extend sentiment lexicon using reviews data but we won't do it for now</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [133]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">review_sentiment_dict</span><span class="p">(</span><span class="n">dataframe</span><span class="p">):</span>
<span class="s2">"create sentiment dictionary for the reviews data using the sentiment lexicon. For the first word in the sentence</span><span class="se">\</span>
<span class="s2"> , we lowercase it. If the word is found in the sentiment lexicon, we create sentiment dictionary for that word"</span>
<span class="n">review_sent_dict</span><span class="o">=</span><span class="p">{}</span>
<span class="c1"># seen_set=set()</span>
<span class="n">pos</span><span class="o">=</span><span class="s1">''</span>
<span class="n">data</span><span class="o">=</span><span class="p">[]</span>
<span class="c1"># we will add sentences from both reviews and review_title</span>
<span class="n">data</span><span class="o">=</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
<span class="n">data</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'review_title_tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">())</span>
<span class="k">for</span> <span class="n">review</span> <span class="ow">in</span> <span class="n">dataframe</span><span class="o">.</span><span class="n">tokenized</span><span class="p">:</span>
<span class="c1"># lowercase the words</span>
<span class="c1">#review=[word.lower() for word in review]</span>
<span class="n">review</span><span class="o">=</span><span class="p">[</span><span class="n">word</span> <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">review</span><span class="p">]</span>
<span class="n">sentiment_words</span><span class="o">=</span><span class="p">[]</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,</span><span class="n">word</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">review</span><span class="p">):</span>
<span class="k">if</span> <span class="n">index</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
<span class="n">word</span><span class="o">=</span><span class="n">word</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="k">if</span> <span class="n">word</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">review_sent_dict</span> <span class="p">:</span>
<span class="c1"># seen_set.add(word)</span>
<span class="n">word_dict</span><span class="o">=</span><span class="n">getSentimentWordDictionary</span><span class="p">(</span><span class="n">word</span><span class="p">,</span><span class="n">pos</span><span class="p">)</span>
<span class="c1"># if len(word_dict.keys())> 2 and word_dict['type'] !='none' :</span>
<span class="n">review_sent_dict</span><span class="p">[</span><span class="n">word</span><span class="p">]</span><span class="o">=</span><span class="n">word_dict</span>
<span class="k">return</span> <span class="n">review_sent_dict</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will create a copy of the data frame and add more useful information to it.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [10]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">df_copy</span><span class="o">=</span><span class="n">df</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
<span class="n">sub</span><span class="o">=</span><span class="n">df_copy</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Lets add two columns for tokenized version of review and review_title.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [11]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'review_comments'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">split_text</span><span class="p">)</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'review_title_tokenized'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'review_title'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">split_text</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Lets also create the review sentiment dictionary at this stage based on tokenized version of reviews.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [134]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">review_sent_dict</span><span class="o">=</span><span class="n">review_sentiment_dict</span><span class="p">(</span><span class="n">sub</span><span class="p">)</span>
<span class="k">print</span> <span class="s1">'total entries in the review sentiment dict : '</span> <span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">review_sent_dict</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>total entries in the review sentiment dict : 109686
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [136]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1">#review_sent_dict</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will now add following more columns to the data:</p>
<pre><code>1. Sentiment words present in review title
2. Sentiment words present in reviews
3. Positive sentiment words
4. Negative sentiment words
5. Degree words
6. COlumns for total words length and total sentiment words length</code></pre>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>The following codes will add many more columns to the dataframe</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [137]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># Function to create more information columns </span>
<span class="k">def</span> <span class="nf">collect</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">word_type</span><span class="p">):</span>
<span class="n">filtered</span><span class="o">=</span><span class="p">[]</span>
<span class="k">for</span> <span class="n">words</span> <span class="ow">in</span> <span class="n">sentence</span><span class="p">:</span>
<span class="k">if</span> <span class="n">words</span> <span class="ow">in</span> <span class="n">review_sent_dict</span><span class="p">:</span>
<span class="n">wdict</span><span class="o">=</span><span class="n">review_sent_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">words</span><span class="p">)</span>
<span class="c1">#print wdict</span>
<span class="k">if</span> <span class="n">wdict</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span> <span class="o">==</span> <span class="n">word_type</span><span class="p">:</span>
<span class="n">filtered</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">words</span><span class="p">)</span>
<span class="k">return</span> <span class="n">filtered</span>
<span class="k">def</span> <span class="nf">sentiment_polarity</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">polarity</span><span class="p">):</span>
<span class="c1"># (word,word_type,valence,degree)</span>
<span class="c1"># e.g ('clean', 'sentiment', 2.0, 'none')</span>
<span class="n">filtered</span><span class="o">=</span><span class="p">[]</span>
<span class="k">for</span> <span class="n">words</span> <span class="ow">in</span> <span class="n">sentence</span><span class="p">:</span>
<span class="k">if</span> <span class="n">words</span> <span class="ow">in</span> <span class="n">review_sent_dict</span><span class="p">:</span>
<span class="n">wdict</span><span class="o">=</span><span class="n">review_sent_dict</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">words</span><span class="p">)</span>
<span class="n">word_polarity</span><span class="o">=</span><span class="n">wdict</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span>
<span class="k">if</span> <span class="n">polarity</span><span class="o">==</span><span class="s1">'pos'</span><span class="p">:</span>
<span class="k">if</span> <span class="n">word_polarity</span><span class="o">>=</span><span class="mi">1</span><span class="p">:</span>
<span class="n">filtered</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">words</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">if</span> <span class="n">word_polarity</span><span class="o"><</span><span class="mi">0</span><span class="p">:</span>
<span class="n">filtered</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">words</span><span class="p">)</span>
<span class="k">return</span> <span class="n">filtered</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [138]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">sub</span><span class="p">[</span><span class="s1">'title_sentiment_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'review_title_tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">collect</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'sentiment'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'sentiment_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">collect</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'sentiment'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'pos_sentiment'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">sentiment_polarity</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'pos'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'neg_sentiment'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">sentiment_polarity</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'neg'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'negation_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">collect</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'negation'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'degree_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">collect</span><span class="p">,</span><span class="n">args</span><span class="o">=</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">])</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'total_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="nb">len</span><span class="p">)</span>
<span class="n">sub</span><span class="p">[</span><span class="s1">'total_sentiment_words'</span><span class="p">]</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'sentiment_words'</span><span class="p">]</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="nb">len</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Lets look at how the dataframe look now :</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [139]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">sub</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[139]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>hotel_review_id</th>
<th>review_title</th>
<th>review_comments</th>
<th>tokenized</th>
<th>review_title_tokenized</th>
<th>title_sentiment_words</th>
<th>sentiment_words</th>
<th>pos_sentiment</th>
<th>neg_sentiment</th>
<th>negation_words</th>
<th>degree_words</th>
<th>total_words</th>
<th>total_sentiment_words</th>
<th>review_score</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>103237986.0</td>
<td>Friendly staff and comfortable stay</td>
<td>Continental breakfast is 7/10</td>
<td>[Continental, breakfast, is, 7/10]</td>
<td>[Friendly, staff, and, comfortable, stay]</td>
<td>[comfortable]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>4</td>
<td>0</td>
<td>0.5000</td>
</tr>
<tr>
<th>1</th>
<td>103237985.0</td>
<td>Budget hotel</td>
<td>Hotel is OK but the breakfast taste is so so.</td>
<td>[Hotel, is, OK, but, the, breakfast, taste, is...</td>
<td>[Budget, hotel]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>11</td>
<td>0</td>
<td>0.5000</td>
</tr>
<tr>
<th>2</th>
<td>103237979.0</td>
<td>Don't set high expectations</td>
<td>The hotel has a beautiful lobby, delicately de...</td>
<td>[The, hotel, has, a, beautiful, lobby, ,, deli...</td>
<td>[Do, n't, set, high, expectations]</td>
<td>[]</td>
<td>[beautiful, nice, clean, smooth, like, nice, a...</td>
<td>[beautiful, nice, clean, smooth, like, nice, a...</td>
<td>[stalls, cheap, rip]</td>
<td>[wasnt, n't, n't]</td>
<td>[]</td>
<td>198</td>
<td>18</td>
<td>0.9834</td>
</tr>
<tr>
<th>3</th>
<td>103237975.0</td>
<td>Good location</td>
<td>Good location and good view. But check-out tim...</td>
<td>[Good, location, and, good, view, ., But, chec...</td>
<td>[Good, location]</td>
<td>[]</td>
<td>[good]</td>
<td>[good]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>13</td>
<td>1</td>
<td>0.8402</td>
</tr>
<tr>
<th>4</th>
<td>103237974.0</td>
<td>Need Renovations</td>
<td>The rooms and facilities are old and needs tot...</td>
<td>[The, rooms, and, facilities, are, old, and, n...</td>
<td>[Need, Renovations]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>[]</td>
<td>10</td>
<td>0</td>
<td>0.5000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Some-Plots-to-look-at-the-dataframe-information">Some Plots to look at the dataframe information<a class="anchor-link" href="#Some-Plots-to-look-at-the-dataframe-information">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [140]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># histogram of total words per review</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
<span class="n">x</span><span class="o">=</span><span class="n">sub</span><span class="o">.</span><span class="n">total_words</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'blue'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'total words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'count'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'total words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
<span class="n">arr</span><span class="o">=</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">sub</span><span class="o">.</span><span class="n">sentiment_words</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'green'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'sentiment words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'count'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'sentiment words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span>
<span class="n">arr</span><span class="o">=</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">sub</span><span class="o">.</span><span class="n">pos_sentiment</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'green'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'positive sentiment words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'count'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'+ve sentiment words in a review'</span><span class="p">)</span>
<span class="n">arr</span><span class="o">=</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">sub</span><span class="o">.</span><span class="n">neg_sentiment</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">20</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'red'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'-ve sentiment words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'count'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'-ve sentiment words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="n">arr</span><span class="o">=</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">sub</span><span class="o">.</span><span class="n">negation_words</span><span class="p">]</span>
<span class="n">plt</span><span class="o">.</span><span class="n">hist</span><span class="p">(</span><span class="n">arr</span><span class="p">,</span> <span class="n">bins</span><span class="o">=</span><span class="mi">30</span><span class="p">,</span> <span class="n">facecolor</span><span class="o">=</span><span class="s1">'orange'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'negation words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'count'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'negation words in a review'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
<span class="n">plt</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[140]:</div>
<div class="output_text output_subarea output_execute_result">
<pre><module 'matplotlib.pyplot' from '/Users/sanjaymeena/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.pyc'></pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
SUVORK5CYII=
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABKkAAADgCAYAAADIWzUJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xu4XVV97//3R0DFC8glIgQwKPSCHKslBazW0tICrVao
BcRWjcqR+hOttnqs2J4CWiraKkdrxaIgFy+AeKMWqhEKeOMSLMpNJApIIjcJglihBr+/P+bYZmax
drIT9srayX6/nmc9e64x5xhzzLkWWV++c8wxU1VIkiRJkiRJ4/SIcXdAkiRJkiRJMkklSZIkSZKk
sTNJJUmSJEmSpLEzSSVJkiRJkqSxM0klSZIkSZKksTNJJUmSJEmSpLEzSSVpWiT5syRfHHc/xinJ
3kmWrEW9Dyb5v6Po0ygluSbJ3uPuhyRJs1GS+5I8Zdz9GKckNyX5vTWs81tJrh9Vn0YlyVuTfHjc
/ZBGLVU17j5IWs8kmQfcCGxSVcvH3Je9gY9W1fbj7MdM64skSdpwJLmQLsYYe5IiyU3A/66qL9kX
SdPNkVTSGCU5OsnR4+6H1lySjcfdh4drQzgGSZK04dsQYpYN4RikdcEklTQDJfnrJGcPlL03yfva
8uZJTkpya5KlSf4+yUaTtLVHkkVJ7k1ye5L39NbtleRrSX6U5Jv9W7eSXJjk7Um+muTHSb6YZOu2
+uL290dtqPmzkrw8yVd69SvJa5Lc0Oq/PclT2/7uTXJWkkf2tn9+kitbX76W5Om9dTcleVOSbyW5
J8mZSR6d5LHAecB2rR/3Jdlu4Ph3am0+or3/UJI7eutPT/KGtrxdknOSLEuyOMmretsdneTsJB9N
ci/w8iSbJjklyd1JrgV+Y8jnuLQd//VJ9pnkMzolyd+35b2TLEnyxiR3tM/4FcPqte1fkeS6to/v
JfnzVWz78vZ5Hp/kLuDoVv7K1sbdSb6Q5Mmt/IQk/zTQxueS/FXvc/m9tvyIJG9J8t0kd7XPd8u2
7tQkb2zLc9t344j2/qntfPt7JEkai/b7/9OJ361W9swkP0yySXs/9LdySFuPbrHCXS3+uDzJNm3d
pPHbRByV5J/aPm5M8gdt3bHAbwHvb7HO+1t5Jdm5LZ+S5ANJzmvbfDXJk5L8v9bet5M8c+CYP5Xk
zravv+itO7r9jp/W4otrksxv604HdgT+re3nzUPOwUVJ/qQtP7v183nt/T5JrmzLj0jyt0lubjHP
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
P0mSJEmSJI2dSSpJkiRJkiSNnUkqSZIkSZIkjZ1JKkmSJEmSJI2dSSpJkiRJkiSNnUkqSZIkSZIk
jZ1JKkmSJEmSJI2dSSpJkiRJkiSNnUkqSZIkSZIkjd3IklRJTk5yR5Kre2VbJlmY5Ib2d4veuiOT
LE5yfZL9euW7J7mqrXtfkrTyRyU5s5VfmmRer86Cto8bkiwY1TFKkiRJkiRpeoxyJNUpwP4DZW8B
zq+qXYDz23uS7AocCjyt1flAko1anROAVwG7tNdEm4cBd1fVzsDxwDtbW1sCRwF7AnsAR/WTYZIk
SZIkSZp5RpakqqqLgWUDxQcAp7blU4EDe+VnVNUDVXUjsBjYI8m2wGZVdUlVFXDaQJ2Jts4G9mmj
rPYDFlbVsqq6G1jIQ5NlkiRJkiRJmkHW9ZxU21TVrW35NmCbtjwXuKW33ZJWNrctD5avVKeqlgP3
AFutoi1JkiRJkiTNUGObOL2NjKpx7R8gyeFJFiVZdOedd46zK5IkSZIkSbPauk5S3d5u4aP9vaOV
LwV26G23fStb2pYHy1eqk2RjYHPgrlW09RBVdWJVza+q+XPmzHkYhyVJkiRJkqSHY10nqc4BJp62
twD4XK/80PbEvp3oJki/rN0aeG+Svdp8Uy8bqDPR1kHABW101heAfZNs0SZM37eVSZIkSZIkaYba
eFQNJ/kEsDewdZIldE/cOw44K8lhwM3AIQBVdU2Ss4BrgeXAEVX1YGvqNXRPCtwUOK+9AE4CTk+y
mG6C9kNbW8uSvB24vG33tqoanMBdkiRJkiRJM8jIklRV9eJJVu0zyfbHAscOKV8E7Dak/H7g4Ena
Ohk4ecqdlSRJkiRJ0liNbeJ0SZIkSZIkaYJJKkmSJEmSJI2dSSpJkiRJkiSNnUkqSZIkSZIkjZ1J
KkmSJEmSJI2dSSpJkiRJkiSNnUkqSZKkDUiSk5PckeTqXtnRSZYmubK9/rC37sgki5Ncn2S/Xvnu
Sa5q696XJK38UUnObOWXJpnXq7MgyQ3ttWDdHLEkSdpQmKSSJEnasJwC7D+k/PiqekZ7nQuQZFfg
UOBprc4HkmzUtj8BeBWwS3tNtHkYcHdV7QwcD7yztbUlcBSwJ7AHcFSSLab/8CRJ0obKJJUkSdIG
pKouBpZNcfMDgDOq6oGquhFYDOyRZFtgs6q6pKoKOA04sFfn1LZ8NrBPG2W1H7CwqpZV1d3AQoYn
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
yduBrwHvWst9bgz8OnBCVT0T+AktUJrQRkbVWrY/ZVV1YlXNr6r5c+b4sBxJkjSjrFX8VVUXA8sG
itfFiPWgfS8tAAAbAUlEQVT9gIVVtayNAFvIQ5NlkiRJk5pSkqqqTgNeCNzeXi+sqtPXcp9LgCVV
dWl7fzZd0ur2FhDR/t7R1i8FdujV376VLW3Lg+Ur1UmyMbA5Pg1HkiStR6Y5/loXI9Yna0uSJGlK
pnzLXlVdC1z7cHdYVbcluSXJL1fV9cA+rd1rgQXAce3v51qVc4CPJ3kPsB3dcPPLqurBJPcm2Qu4
FHgZ8M+9OguAr9M9CeeCdhVQkiRpvTFd8ddAm5VkrHFRksOBwwF23HHHcXZFkiTNIGs7r9TD9Trg
Y0keCXwPeAXdqK6zkhwG3Ez3yGWq6pokZ9EFaMuBI6rqwdbOa+jmXdgUOK+9oJuU/fQki+mGux+6
Lg5KkiRphro9ybZVdes0jlhfMjBifSmw90CdC4d1pqpOBE4EmD9/vhcSJUkSMKYkVVVdCcwfsmqf
SbY/Fjh2SPkiYLch5fcDBz/MbkqSJG0oJkaZj2zEepIvAP/Qmyx9X+DI0R+aJEnaUIxrJJUkSZJG
IMkn6EY0bZ1kCd0T945jxCPWq2pZm+D98rbd26pqcAJ3SZKkSZmkkiRJ2oBU1YsnWTXyEetVdTJw
8pQ7K0mS1DOlp/tJkiRJkiRJo2SSSpIkSZIkSWNnkkqSJEmSJEljZ5JKkiRJkiRJY2eSSpIkSZIk
SWNnkkqSJEmSJEljZ5JKkiRJkiRJY2eSSpIkSZIkSWNnkkqSJEmSJEljZ5JKkiRJkiRJY2eSSpIk
SZIkSWNnkkqSJEmSJEljN7YkVZKNkvxXks+391smWZjkhvZ3i962RyZZnOT6JPv1yndPclVb974k
aeWPSnJmK780ybx1fXySJEmSJEmaunGOpHo9cF3v/VuA86tqF+D89p4kuwKHAk8D9gc+kGSjVucE
4FXALu21fys/DLi7qnYGjgfeOdpDkSRJkiRJ0sMxliRVku2B5wEf7hUfAJzalk8FDuyVn1FVD1TV
jcBiYI8k2wKbVdUlVVXAaQN1Jto6G9hnYpSVJEmSJEmSZp5xjaT6f8CbgZ/3yrapqlvb8m3ANm15
LnBLb7slrWxuWx4sX6lOVS0H7gG2GuxEksOTLEqy6M4773xYByRJkiRJkqS1t86TVEmeD9xRVVdM
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
ddVMUo3W5cAuSXZK8kjgUOCcMfdp7JI8tk0SR5LHAvsCV6+61qxyDrCgLS8APjfGvswYEz+GzR8z
y74zbSLsk4Drquo9vVWz+vsy2Xnx+5I5SZ7Qljelmzz628zy74tmFWOwaWb8NnL++zzNZnss8HAZ
e46Gsevq+XS/EWuPjvx/wEbAyVV17Ji7NHZJnkJ39Q1gY+Djs/W8JPkEsDewNXA7cBTwWeAsYEfg
ZuCQqppVE0FOcl72phv+WsBNwJ/37off4CV5DvBl4Crg5634rXT3sM/a78sqzsuLmd3fl6fTTWa6
Ed0FqbOq6m1JtmIWf180uxiDTS/jt+lj/Df9jB2nn7HnaBi7rp5JKkmSJEmSJI2dt/tJkiRJkiRp
7ExSSZIkSZIkaexMUkmSJEmSJGnsTFJJkiRJkiRp7ExSSZIkSZIkaexMUkkboCSvTvKytvzyJNv1
1n04ya7j690KSZ6Q5DW999slOXvE+5yX5E9HuY8h+3x5kvdPcduRn4O1keQFSd4y7n5IkqThkhzY
j/GSvC3J7414nyvFmetCkpuSbD3FbUd+DtZGknOTPGHc/ZBmolTVuPsgaYSSXAi8qaoWjbsvg5LM
Az5fVbutw33uTXc+nj+i9kP3b+vPe2UvB+ZX1WtHsc81lWTjqlo+7n5IkqTpk+QUurhqnV3sGnWc
OSxmSXITXVz1w1Hsc00Mi/skPTyOpJJmkDbK59tJPpbkuiRnJ3lMW7dPkv9KclWSk5M8qpUfl+Ta
JN9K8k+t7Ogkb0pyEDAf+FiSK5NsmuTCJPPbaKt/7O37F6N9krwkyWWtzr8m2WhIX4ftd06STyW5
vL2e3evPyW3f30vyF62Z44Cntv38Yzv+q3v9+WyShe2K2WuT/FU7B5ck2bJt99Qk/5HkiiRfTvIr
rfyUJO9L8rW2z4N6+/ytts+/HDimf0nygrb8mSQnt+VXJjm2Lf9Vkqvb6w29z+36JKcBVwM7JHlF
ku8kuQx4dm8fB7e630xy8STfgf45+HQ7vhuSvGuS783ftfN9dZITW8A0uM0pST6Y5FLgXUke2z6T
y9o5PaBtd0mSp/XqTXxf+t+PyT7nq9KNjkuSu7JiNN9pSX5/WN8lSVrfJXlEi1We0Cu7Ick2k/1m
DtR/Wi/u+laSXVr50HgsyX1Jjm2xxCVtP78JvAD4x7b9U9tv/0Gtzk1J3tHWLUry60m+kOS7SV7d
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
"
>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
RU5ErkJggg==
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will now work with adding code to assign sentiment scores to reviews . We use following ideas</p>
<ol>
<li>Positive and negative degree words boosts the sentiment of the modified words</li>
<li>Dealing with negation in the sentence. </li>
<li>Use positive and negative valency of the sentiment words to calculate scores. </li>
</ol>
<p>There are lot more things to cover in the scoring system which are not done in the report for now.</p>
<ul>
<li>Deal with but clauses, sentence discourses etc. </li>
</ul>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [141]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">pos_degree</span><span class="o">=</span><span class="mf">0.3</span>
<span class="n">neg_degree</span><span class="o">=</span><span class="mf">0.3</span>
<span class="k">def</span> <span class="nf">normalize</span><span class="p">(</span><span class="n">sentiments</span><span class="p">,</span><span class="n">alpha</span><span class="o">=</span><span class="mi">15</span><span class="p">):</span>
<span class="sd">"""</span>
<span class="sd"> Normalize the score to be between 0 and 1. We have used norm_score function mentioned in one \</span>
<span class="sd"> VADER: A Parsimonious Rule-based Model for Sentiment Analysis of Social Media Text</span>
<span class="sd"> </span>
<span class="sd"> """</span>
<span class="n">minV</span><span class="o">=</span><span class="nb">min</span><span class="p">(</span><span class="n">sentiments</span><span class="p">)</span>
<span class="n">maxV</span><span class="o">=</span><span class="nb">max</span><span class="p">(</span><span class="n">sentiments</span><span class="p">)</span>
<span class="n">score</span><span class="o">=</span><span class="nb">float</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">sentiments</span><span class="p">))</span>
<span class="n">norm_score</span> <span class="o">=</span> <span class="n">score</span><span class="o">/</span><span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">((</span><span class="n">score</span><span class="o">*</span><span class="n">score</span><span class="p">)</span> <span class="o">+</span> <span class="n">alpha</span><span class="p">)</span>
<span class="c1">#print norm_score</span>
<span class="k">if</span> <span class="n">minV</span><span class="o">==</span><span class="n">maxV</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span> <span class="c1">#Neutral</span>
<span class="n">norm_score</span><span class="o">=</span><span class="mf">0.5</span>
<span class="k">elif</span> <span class="n">norm_score</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">norm_score</span><span class="o">=</span> <span class="mf">0.0</span>
<span class="k">elif</span> <span class="n">norm_score</span> <span class="o">></span> <span class="mf">1.0</span><span class="p">:</span>
<span class="n">norm_score</span><span class="o">=</span><span class="mf">1.0</span>
<span class="k">return</span> <span class="n">norm_score</span>
<span class="k">def</span> <span class="nf">calculate_polarity_scores</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="c1">#print sentence</span>
<span class="n">sentiments</span> <span class="o">=</span> <span class="p">[]</span>
<span class="c1">#print sentence</span>
<span class="n">sent</span><span class="o">=</span> <span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">sentence</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">createSentimentList</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="c1">#print(index, elem)</span>
<span class="n">valence</span> <span class="o">=</span> <span class="mi">0</span>
<span class="n">word</span><span class="o">=</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">lexicon</span><span class="o">=</span><span class="n">elem</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="c1">#print lexicon</span>
<span class="k">if</span> <span class="n">lexicon</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="o">==</span><span class="s1">'sentiment'</span><span class="p">:</span>
<span class="n">valence</span><span class="o">=</span><span class="n">lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span>
<span class="k">elif</span> <span class="n">lexicon</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="o">==</span><span class="s1">'degree'</span><span class="p">:</span>
<span class="k">if</span> <span class="n">lexicon</span><span class="p">[</span><span class="s1">'degree'</span><span class="p">]</span><span class="o">==</span><span class="s1">'incr'</span><span class="p">:</span>
<span class="n">valence</span><span class="o">=</span><span class="n">pos_degree</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">valence</span><span class="o">=</span><span class="n">neg_degree</span>
<span class="n">sentiments</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">valence</span><span class="p">)</span>
<span class="c1">#print sentiments</span>
<span class="k">return</span> <span class="n">sentiments</span>
<span class="k">def</span> <span class="nf">organize_sentiment_scores</span><span class="p">(</span><span class="n">sentiments</span><span class="p">):</span>
<span class="c1"># want separate positive versus negative sentiment scores</span>
<span class="n">pos_sum</span> <span class="o">=</span> <span class="mf">0.0</span>
<span class="n">neg_sum</span> <span class="o">=</span> <span class="mf">0.0</span>
<span class="n">neu_count</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">sentiment_score</span> <span class="ow">in</span> <span class="n">sentiments</span><span class="p">:</span>
<span class="k">if</span> <span class="n">sentiment_score</span> <span class="o">></span> <span class="mi">0</span><span class="p">:</span>
<span class="n">pos_sum</span> <span class="o">+=</span> <span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">sentiment_score</span><span class="p">)</span> <span class="o">+</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># compensates for neutral words that are counted as 1</span>
<span class="k">if</span> <span class="n">sentiment_score</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">neg_sum</span> <span class="o">+=</span> <span class="p">(</span><span class="nb">float</span><span class="p">(</span><span class="n">sentiment_score</span><span class="p">)</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="c1"># when used with math.fabs(), compensates for neutrals</span>
<span class="k">if</span> <span class="n">sentiment_score</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">neu_count</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="k">return</span> <span class="n">pos_sum</span><span class="p">,</span> <span class="n">neg_sum</span><span class="p">,</span> <span class="n">neu_count</span>
<span class="k">def</span> <span class="nf">score_valence</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">):</span>
<span class="n">sentiment_dict</span><span class="o">=</span><span class="p">{}</span>
<span class="c1">#print 'sentiments ' , sentiments</span>
<span class="k">if</span> <span class="n">sentiments</span><span class="p">:</span>
<span class="n">sum_s</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">sentiments</span><span class="p">))</span>
<span class="c1"># discriminate between positive, negative and neutral sentiment scores</span>
<span class="n">pos_sum</span><span class="p">,</span> <span class="n">neg_sum</span><span class="p">,</span> <span class="n">neu_count</span> <span class="o">=</span> <span class="n">organize_sentiment_scores</span><span class="p">(</span><span class="n">sentiments</span><span class="p">)</span>
<span class="c1">#print pos_sum, neg_sum, neu_count</span>
<span class="n">total</span> <span class="o">=</span> <span class="n">pos_sum</span> <span class="o">+</span> <span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">neg_sum</span><span class="p">)</span> <span class="o">+</span> <span class="n">neu_count</span>
<span class="n">pos</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">pos_sum</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
<span class="n">neg</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">neg_sum</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
<span class="n">neu</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">fabs</span><span class="p">(</span><span class="n">neu_count</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
<span class="c1"># compound= normalize(float(pos+(-1.0 *neg) +neu))</span>
<span class="n">compound</span> <span class="o">=</span> <span class="n">normalize</span><span class="p">(</span><span class="n">sentiments</span><span class="p">)</span>
<span class="n">sentiment_dict</span> <span class="o">=</span> \
<span class="p">{</span><span class="s2">"neg"</span> <span class="p">:</span> <span class="nb">round</span><span class="p">(</span><span class="n">neg</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span>
<span class="s2">"neu"</span> <span class="p">:</span> <span class="nb">round</span><span class="p">(</span><span class="n">neu</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span>
<span class="s2">"pos"</span> <span class="p">:</span> <span class="nb">round</span><span class="p">(</span><span class="n">pos</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span>
<span class="s2">"compound"</span> <span class="p">:</span> <span class="nb">round</span><span class="p">(</span><span class="n">compound</span><span class="p">,</span> <span class="mi">4</span><span class="p">)}</span>
<span class="k">return</span> <span class="n">sentiment_dict</span>
<span class="k">def</span> <span class="nf">updateSentimentList</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">):</span>
<span class="s2">"update the sentiment list based on rules"</span>
<span class="n">sentiments</span><span class="o">=</span><span class="n">check_for_negation_case</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">)</span>
<span class="k">return</span> <span class="n">sentiments</span>
<span class="k">def</span> <span class="nf">check_for_negation_case</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">):</span>
<span class="s2">"check for negation case in a sentence"</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,</span> <span class="n">elem</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="c1">#print(index, elem)</span>
<span class="n">word</span><span class="o">=</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">lexicon</span><span class="o">=</span><span class="n">elem</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">valence</span><span class="o">=</span><span class="n">lexicon</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span>
<span class="n">word_type</span><span class="o">=</span><span class="n">lexicon</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span>
<span class="n">found_neg_object</span><span class="o">=</span><span class="bp">False</span>
<span class="k">if</span> <span class="n">word_type</span> <span class="o">==</span> <span class="s1">'negation'</span><span class="p">:</span>
<span class="c1"># negation_list[index]=-1</span>
<span class="n">found_neg_object</span><span class="o">=</span><span class="bp">True</span>
<span class="n">lookup_range</span><span class="o">=</span><span class="nb">range</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">index</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">),</span> <span class="nb">min</span><span class="p">(</span><span class="n">index</span><span class="o">+</span><span class="mi">3</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
<span class="c1">#print lookup_range , ' for negation at index : ', index</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">lookup_range</span><span class="p">:</span>
<span class="c1">#print sentiments[i]</span>
<span class="k">if</span> <span class="n">sentiments</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">></span> <span class="mi">0</span> <span class="ow">or</span> <span class="n">sentiments</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span>
<span class="n">found_neg_object</span><span class="o">=</span><span class="bp">True</span>
<span class="n">sentiments</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">=</span> <span class="o">-</span><span class="mf">1.</span> <span class="o">*</span> <span class="n">sentiments</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="c1">#print 'negation found and updated ', sentiments[i]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">found_neg_object</span><span class="p">:</span>
<span class="n">sentiments</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><span class="o">=-</span><span class="mf">1.0</span>
<span class="c1">#print negation_list , 'look up range : ', lookup_range, 'updated sentiment list ', sentiments</span>
<span class="k">return</span> <span class="n">sentiments</span>
<span class="c1"># create the sentiment list on word tokens in sentence</span>
<span class="n">sentiments</span><span class="o">=</span><span class="n">createSentimentList</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span>
<span class="c1"># update the sentiment list based on rules </span>
<span class="n">sentiments</span><span class="o">=</span><span class="n">updateSentimentList</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">)</span>
<span class="c1"># calculate the final sentiment scores</span>
<span class="n">scores</span><span class="o">=</span><span class="n">score_valence</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">sentiments</span><span class="p">)</span>
<span class="c1">#print sent </span>
<span class="c1">#print sentence</span>
<span class="c1">#print ' '</span>
<span class="c1">#print '-> score: ' , scores</span>
<span class="c1"># print ' '</span>
<span class="k">return</span> <span class="n">scores</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [170]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="c1"># function to word level sentiment</span>
<span class="k">def</span> <span class="nf">addWordSentiment</span><span class="p">(</span><span class="n">sentence</span><span class="p">,</span><span class="n">lower_first_word</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
<span class="n">sentimentwordsInSentence</span><span class="o">=</span><span class="p">[]</span>
<span class="c1">#print 'addWordSentiment ', sentence</span>
<span class="k">for</span> <span class="n">index</span><span class="p">,(</span><span class="n">word</span><span class="p">,</span><span class="n">postag</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">sentence</span><span class="p">):</span>
<span class="k">if</span> <span class="n">lower_first_word</span> <span class="ow">and</span> <span class="n">index</span><span class="o">==</span><span class="mi">0</span><span class="p">:</span>
<span class="n">word</span><span class="o">=</span><span class="n">word</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
<span class="n">sentimentwordsInSentence</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">word</span><span class="p">,</span><span class="n">getSentimentInfo</span><span class="p">(</span><span class="n">word</span><span class="p">,</span><span class="n">postag</span><span class="p">)))</span>
<span class="c1"># sentimentwordsInSentence = [(word,getSentimentInfo(word,postag)) for (word, postag) in sentence]</span>
<span class="c1">#print sentimentwordsInSentence</span>
<span class="k">return</span> <span class="n">sentimentwordsInSentence</span>
<span class="c1"># adds sentiment info for the word using the sentiment lexicon</span>
<span class="k">def</span> <span class="nf">getSentimentInfo</span><span class="p">(</span><span class="n">word</span><span class="p">,</span><span class="n">pos</span><span class="p">):</span>
<span class="c1">#word=word.lower()</span>
<span class="n">dictionary</span><span class="o">=</span><span class="p">{}</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'pos'</span><span class="p">]</span><span class="o">=</span><span class="n">pos</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'word'</span><span class="p">]</span><span class="o">=</span><span class="n">word</span>
<span class="k">if</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">review_sent_dict</span><span class="p">:</span>
<span class="n">dictionary</span><span class="o">=</span><span class="n">review_sent_dict</span><span class="p">[</span><span class="n">word</span><span class="p">]</span>
<span class="c1">#print 'word , ' ,dictionary</span>
<span class="k">else</span><span class="p">:</span>
<span class="c1"># print 'word not found ', word</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'type'</span><span class="p">]</span><span class="o">=</span><span class="s1">'none'</span>
<span class="n">dictionary</span><span class="p">[</span><span class="s1">'valence'</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span>
<span class="k">return</span> <span class="n">dictionary</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [171]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="k">def</span> <span class="nf">calculate_sentiment</span><span class="p">(</span><span class="n">review</span><span class="p">,</span><span class="n">review_sentiment_dict</span><span class="p">):</span>
<span class="s2">"calculate sentiment scores in format : score: {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.5}"</span>
<span class="n">sentences_with_pos</span><span class="o">=</span> <span class="n">tag_pos</span><span class="p">(</span><span class="n">review</span><span class="p">)</span>
<span class="c1">#print sentences_with_pos</span>
<span class="c1">#print sentence</span>
<span class="n">sentence</span><span class="o">=</span><span class="n">addWordSentiment</span><span class="p">(</span><span class="n">sentences_with_pos</span><span class="p">,</span><span class="bp">True</span><span class="p">)</span>
<span class="n">score</span><span class="o">=</span><span class="n">calculate_polarity_scores</span><span class="p">(</span><span class="n">sentence</span><span class="p">)</span>
<span class="k">return</span> <span class="n">score</span>
<span class="k">def</span> <span class="nf">calculate_one_sentiment</span><span class="p">(</span><span class="n">review</span><span class="p">,</span><span class="n">review_sentiment_dict</span><span class="p">):</span>
<span class="s2">"Calculate one compound sentiment score"</span>
<span class="n">score</span><span class="o">=</span><span class="p">{}</span>
<span class="n">score</span><span class="p">[</span><span class="s1">'compound'</span><span class="p">]</span><span class="o">=</span><span class="mi">0</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">review</span><span class="p">)</span><span class="o">>=</span><span class="mi">1</span><span class="p">:</span>
<span class="n">score</span><span class="o">=</span><span class="n">calculate_sentiment</span><span class="p">(</span><span class="n">review</span><span class="p">,</span><span class="n">review_sentiment_dict</span><span class="p">)</span>
<span class="c1"># else:</span>
<span class="c1"># print 'no words in review', review</span>
<span class="k">return</span> <span class="n">score</span><span class="p">[</span><span class="s1">'compound'</span><span class="p">]</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>lets predict sentiment scores for first 10 reviews</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [172]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">reviews</span><span class="o">=</span><span class="n">sub</span><span class="p">[</span><span class="s1">'tokenized'</span><span class="p">][</span><span class="mi">1</span><span class="p">:</span><span class="mi">10</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
<span class="c1">#string='My stay at hotel was fantastic !'</span>
<span class="c1">#reviews=[string.split()]</span>
<span class="c1">#print reviews</span>
<span class="k">for</span> <span class="n">review</span> <span class="ow">in</span> <span class="n">reviews</span><span class="p">:</span>
<span class="n">score</span> <span class="o">=</span><span class="n">calculate_sentiment</span><span class="p">(</span><span class="n">review</span><span class="p">,</span><span class="n">review_sentiment_dict</span><span class="p">)</span>
<span class="n">sent</span><span class="o">=</span> <span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">elem</span> <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">review</span><span class="p">)</span>
<span class="k">print</span> <span class="s1">'review: '</span> <span class="p">,</span> <span class="n">sent</span>
<span class="k">print</span> <span class="s1">'score: '</span><span class="p">,</span> <span class="n">score</span>
<span class="k">print</span> <span class="s1">''</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>review: Hotel is OK but the breakfast taste is so so .
score: {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.5}
review: The hotel has a beautiful lobby , delicately designed and tasteful . Everything was nice and clean , even the check in process was smooth . I booked for a junior suite and it wasnt what i was expecting . The room is smaller than it looks like in the pictures , but that is how it always is . Furnitures are abit aged . But the toilet and the bathtub is such a nice place to relax in . The hotel is nearby a stretch of authentic local food stalls and it is a must to visit especially in the evening once the malls and shops are closed ! Trust me its a great experience and who does n't love cheap delicious street food ? Ask the concierge and they will lead you the way , however the person that assisted us did n't really explain the directions properly so we ended up walking a whole big round . Hotel is accessible nearby to mall and even batam ferry centre ( walking distance ) Do opt for their taxi transfer if you need to , because the taxis even from the mall straight are rip offs !
score: {'neg': 0.035, 'neu': 0.789, 'pos': 0.175, 'compound': 0.9818}
review: Good location and good view . But check-out time is too soon .
score: {'neg': 0.0, 'neu': 0.579, 'pos': 0.421, 'compound': 0.8402}
review: The rooms and facilities are old and needs total renovation
score: {'neg': 0.0, 'neu': 1.0, 'pos': 0.0, 'compound': 0.5}
review: Good all round hotel though a little difficult to find the front entrance .
score: {'neg': 0.111, 'neu': 0.667, 'pos': 0.222, 'compound': 0.4588}
review: only complaint was the number of weddings conducted during our stay which
score: {'neg': 0.214, 'neu': 0.786, 'pos': 0.0, 'compound': 0.0}
review: sauna did not work and hot tub was too hot .
score: {'neg': 0.143, 'neu': 0.571, 'pos': 0.286, 'compound': 0.25}
review: Decent hotel at good location . Could improve on cleanliness . Facilities are adequate .
score: {'neg': 0.0, 'neu': 0.435, 'pos': 0.565, 'compound': 0.9001}
review: Value for money if you 're looking for a comfortable place . Breakfast spread is simple and sufficient if you 're fuss-free . Suitable for family or friends .
score: {'neg': 0.0, 'neu': 0.844, 'pos': 0.156, 'compound': 0.6124}
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>lets Tag the review_title and reviews with the sentiment scores now. We will also tag review_title to see if we can find some insight</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [162]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="o">%%</span><span class="k">time</span>
reviews_with_scores=sub
reviews_with_scores=reviews_with_scores
reviews_with_scores['review_score']= reviews_with_scores['tokenized'].apply(calculate_one_sentiment,args=[review_sentiment_dict])
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Lets also tag the review titles with sentiment scores</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [174]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="o">%%</span><span class="k">time</span>
reviews_with_scores['review_title_score']= reviews_with_scores['review_title_tokenized'].apply(calculate_one_sentiment,args=[review_sent_dict])
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>CPU times: user 2min 11s, sys: 3.94 s, total: 2min 15s
Wall time: 2min 16s
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [183]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">save_reviews_with_scores</span><span class="o">=</span><span class="s1">'./data/reviews_with_scores.csv'</span>
<span class="n">save_df</span><span class="o">=</span><span class="n">reviews_with_scores</span><span class="p">[[</span><span class="s1">'hotel_review_id'</span><span class="p">,</span><span class="s1">'review_title'</span><span class="p">,</span><span class="s1">'review_title_score'</span><span class="p">,</span><span class="s1">'review_comments'</span><span class="p">,</span><span class="s1">'review_score'</span><span class="p">]]</span>
<span class="n">save_df</span><span class="o">.</span><span class="n">to_csv</span><span class="p">(</span><span class="n">save_reviews_with_scores</span><span class="p">,</span><span class="n">index</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [185]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">result</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">save_reviews_with_scores</span><span class="p">)</span>
<span class="n">result</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[185]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>hotel_review_id</th>
<th>review_title</th>
<th>review_title_score</th>
<th>review_comments</th>
<th>review_score</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>103237986.0</td>
<td>Friendly staff and comfortable stay</td>
<td>0.7184</td>
<td>Continental breakfast is 7/10</td>
<td>0.5000</td>
</tr>
<tr>
<th>1</th>
<td>103237985.0</td>
<td>Budget hotel</td>
<td>0.5000</td>
<td>Hotel is OK but the breakfast taste is so so.</td>
<td>0.5000</td>
</tr>
<tr>
<th>2</th>
<td>103237979.0</td>
<td>Don't set high expectations</td>
<td>0.5000</td>
<td>The hotel has a beautiful lobby, delicately de...</td>
<td>0.9818</td>
</tr>
<tr>
<th>3</th>
<td>103237975.0</td>
<td>Good location</td>
<td>0.6124</td>
<td>Good location and good view. But check-out tim...</td>
<td>0.8402</td>
</tr>
<tr>
<th>4</th>
<td>103237974.0</td>
<td>Need Renovations</td>
<td>0.5000</td>
<td>The rooms and facilities are old and needs tot...</td>
<td>0.5000</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [197]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">A</span><span class="o">=</span><span class="n">result</span><span class="p">[</span><span class="s1">'review_score'</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
<span class="n">B</span><span class="o">=</span><span class="n">result</span><span class="p">[</span><span class="s1">'review_title_score'</span><span class="p">]</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
<span class="n">A</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">A</span><span class="p">)</span>
<span class="n">B</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">(</span><span class="n">B</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [198]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="k">print</span> <span class="s2">"difference:"</span><span class="p">,</span> <span class="n">A</span> <span class="o">-</span> <span class="n">B</span>
<span class="k">print</span> <span class="s2">"SAD:"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">A</span> <span class="o">-</span> <span class="n">B</span><span class="p">))</span>
<span class="k">print</span> <span class="s2">"SSD:"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">A</span> <span class="o">-</span> <span class="n">B</span><span class="p">))</span>
<span class="k">print</span> <span class="s2">"correlation:"</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">corrcoef</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">((</span><span class="n">A</span><span class="p">,</span> <span class="n">B</span><span class="p">)))[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>difference: [-0.2184 0. 0.4818 ..., 0.2088 0.1566 0.2333]
SAD: 65635.3117
SSD: 27204.9578292
correlation: 0.350834261606
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [204]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="kn">import</span> <span class="nn">scipy</span>
<span class="n">scipy</span><span class="o">.</span><span class="n">stats</span><span class="o">.</span><span class="n">pearsonr</span><span class="p">(</span><span class="n">A</span><span class="p">,</span> <span class="n">B</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[204]:</div>
<div class="output_text output_subarea output_execute_result">
<pre>(0.35083426160561737, 0.0)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [206]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">A</span><span class="o">-</span><span class="n">B</span><span class="p">)</span>
<span class="c1">#plt.plot(x, y)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
LrbriYjI3cTqeMdFRHQDY9CogvGei4huVMW21ocnIiIiIqpmqmPgm0EjIiIiKpeVB+Iq+xCI6AZR
3ZfrJiJjfx2Nr+xDIB0MGlU0phoRERERERER2fTKmojKPgS7ql+eEYNGRERERERERESkg0EjIiIi
IiIiIiJ7qmGqEYNGFWzb6eTKPgQiIiIiIiIiIqcxaFTBYtNyK/sQiIiIiIiIiKicqmGiEYNGRERE
RERERESkxaARERERERERERFpMGhEREREREREREQaDBoREREREREREdkhitVvViMGjYiIiIiIiIiI
SINBIyIiIiIiIiIiO3KLSiv7EK47Bo2IiIiIiIiIiEiDQSMiIiIiIiIiItJg0IiIiIiIiIiIiDTc
EjQSBOF2QRDOCYIQLQjCLJ3nRwqCkCkIwnHLf3PdsV8iIiIiIiIiIqoYXuV9A0EQPAF8CWAcgHgA
YYIgrBdF8Yxq0xBRFO8s7/6IiIiIiIiIiKjiuSPTaACAaFEUY0RRLALwK4BJbnhfIiIiIiIiIiKq
JO4IGjUHcFnxd7zlMbUhgiCcEARhsyAI3YzeTBCEmYIghAuCEJ6amuqGwyMiIiIiIiIiImddr4mw
jwJoJYpiTwCfA1hrtKEoistFUewvimL/hg0bXqfDIyIiIiIiIiIiJXcEjRIAtFT83cLymEwUxSxR
FHMs/94EwFsQhAZu2DcREREREREREVUAdwSNwgB0EAShjSAIPgAeArBeuYEgCE0EQRAs/x5g2W+6
G/ZNREREREREREQVoNyrp4miWCIIwnMAtgLwBPCdKIqnBUF42vL8UgCTAfxHEIQSAPkAHhJFUSzv
vomIiIiIiIiIqGKUO2gEyEPONqkeW6r49xcAvnDHvoiIiIiIiIiIqOJdr4mwiYiIiIiIiIjoBsKg
ERERERERERERaTBoREREREREREREGgwaERERERERERGRBoNGRERERERERESkwaARERERERERERFp
MGhEREREREREREQaDBoREREREREREZEGg0ZERERERERERKTBoBEREREREREREWkwaERERERERERE
RBoMGhERERERERERkQaDRkREREREREREpMGgERERERERERERaTBoREREREREREREGgwaERERERER
ERGRBoNGRERERERERESkwaARERERERERERFpMGhEREREREREREQaDBoREREREREREZEGg0ZERERE
RERERKTBoBEREREREREREWkwaERERERERERERBoMGhERERERERERkQaDRkREREREREREpMGgERER
ERERERERaTBoREREREREREREGgwaERERERERERGRBoNGRERERERERESk4ZagkSAItwuCcE4QhGhB
EGbpPC8IgvCZ5fkTgiD0dcd+iYiIiIiIiIioYpQ7aCQIgieALwFMANAVwMOCIHRVbTYBQAfLfzMB
fF3e/RIRERERERERUcVxR6bRAADRoijGiKJYBOBXAJNU20wC8KNoFgogUBCEpm7YNxERERERERER
VQB3BI2aA7is+Dve8piz2wAABEGYKQhCuCAI4ampqW44PCIiIiIiIiIiclaVmwhbFMXloij2F0Wx
f8OGDSv7cIiIiIiIiIiIqiV3BI0SALRU/N3C8piz2xARERERERERURXhjqBRGIAOgiC0EQTBB8BD
ANartlkPYLplFbVBADJFUUxyw76JiIiIiIiIiKgCeJX3DURRLBEE4TkAWwF4AvhOFMXTgiA8bXl+
KYBNAO4AEA0gD8CM8u6XiIiIiIiIiIgqTrmDRgAgiuImmANDyseWKv4tAnjWHfsiIiIiIiIiIqKK
V+UmwiYiIiIiIiIiosrHoBEREREREREREWkwaERERERERERERBoMGhERERERERERkQaDRkRERERE
REREpMGgERERERERERERaTBoREREREREREREGgwaERERERERERGRBoNGRERERERERESkwaARERER
ERERERFpMGhEREREREREREQaDBoREREREREREZEGg0ZERERERERERKTBoBEREREREREREWkwaERE
RERERERERBoMGhERERERERERkQaDRkREREREREREpMGgERERERERERERaTBoREREREREREREGgwa
ERERERERERGRBoNGRERERERERESkwaARERERERERERFpMGhEREREREREREQaDBoREREREREREZEG
g0ZERERERERERKTBoBEREREREREREWkwaERERERERERERBoMGhERERERERERkQaDRkRERERERERE
pOFVnhcLglAPwG8AggDEAZgiiuJVne3iAGQDKAVQIopi//Lsl4iIiIiIiIiIKlZ5M41mAQgWRbED
gGDL30ZGiaLYmwEjIiIiIiIiIqKqr7xBo0kAfrD8+wcA95Tz/YiIiIiIiIiIqAoob9CosSiKSZZ/
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
REREFISNRkREREREREREFISNRkREREREREREFISNRkREREREREREFISNRkREREREREREFOT/AR6A
AB8ptwCVAAAAAElFTkSuQmCC
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython2"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>Sanjay MeenaWe create a system to assign sentiment scores to reviews (0.0 to 1.0 where a zero score is a full negative sentiment)Running Event Log2017-10-01T00:00:00+00:002017-10-01T00:00:00+00:00https://sanjaymeena.io/misc/running_event_log<p>I have been participating in running events after being introduced to them many years ago by my friend, Sumit Ahlawat. Its a good idea to keep track of the participation and also see I have improved over the years</p>
<h3 id="running-events">Running Events</h3>
<table class="table table-bordered">
<thead>
<tr>
<th><h4>Year</h4></th>
<th><h4>Certificate </h4></th>
</tr>
</thead>
<tbody>
<tr>
<td>Oct 2019</td>
<td>
<img src="/images/posts/misc/running/scb_42_2017.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>Oct 2019</td>
<td>
<img src="/images/posts/misc/running/scb_42_2017.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2017</td>
<td>
<img src="/images/posts/misc/running/scb_42_2017.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2016</td>
<td>
<img src="/images/posts/misc/running/sunmoon_lake_30_2016.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2016</td>
<td>
<img src="/images/posts/misc/running/scb_42_2016.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2014</td>
<td>
<img src="/images/posts/misc/running/fubon_21_2014.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2014</td>
<td>
<img src="/images/posts/misc/running/seiko_12_2014.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2014</td>
<td>
<img src="/images/posts/misc/running/fubon_21_2014.png" height="500" width="500" />
</td>
</tr>
<tr>
<td>2013</td>
<td>
<img src="/images/posts/misc/running/fubon_21_2013.png" height="500" width="500" />
</td>
</tr>
</tbody>
</table>Sanjay Meenasanjaymeena@gmail.comRecord of Running events I have participated in last few yearsDeep Learning based Email Spam Filter2017-09-27T00:00:00+00:002017-09-27T00:00:00+00:00https://sanjaymeena.io/tech/spam_deep_learning<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>Deep Learning based Spam Filter</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<style type="text/css">
/*!
*
* Twitter Bootstrap
*
*/
/*!
* Bootstrap v3.3.7 (https://getbootstrap.com)
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active,
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
mark {
background: #ff0;
color: #000;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
color: inherit;
font: inherit;
margin: 0;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-appearance: textfield;
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
legend {
border: 0;
padding: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important;
box-shadow: none !important;
text-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
.navbar {
display: none;
}
.btn > .caret,
.dropup > .btn > .caret {
border-top-color: #000 !important;
}
.label {
border: 1px solid #000;
}
.table {
border-collapse: collapse !important;
}
.table td,
.table th {
background-color: #fff !important;
}
.table-bordered th,
.table-bordered td {
border: 1px solid #ddd !important;
}
}
@font-face {
font-family: 'Glyphicons Halflings';
src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'Glyphicons Halflings';
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
content: "\002a";
}
.glyphicon-plus:before {
content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
content: "\20ac";
}
.glyphicon-minus:before {
content: "\2212";
}
.glyphicon-cloud:before {
content: "\2601";
}
.glyphicon-envelope:before {
content: "\2709";
}
.glyphicon-pencil:before {
content: "\270f";
}
.glyphicon-glass:before {
content: "\e001";
}
.glyphicon-music:before {
content: "\e002";
}
.glyphicon-search:before {
content: "\e003";
}
.glyphicon-heart:before {
content: "\e005";
}
.glyphicon-star:before {
content: "\e006";
}
.glyphicon-star-empty:before {
content: "\e007";
}
.glyphicon-user:before {
content: "\e008";
}
.glyphicon-film:before {
content: "\e009";
}
.glyphicon-th-large:before {
content: "\e010";
}
.glyphicon-th:before {
content: "\e011";
}
.glyphicon-th-list:before {
content: "\e012";
}
.glyphicon-ok:before {
content: "\e013";
}
.glyphicon-remove:before {
content: "\e014";
}
.glyphicon-zoom-in:before {
content: "\e015";
}
.glyphicon-zoom-out:before {
content: "\e016";
}
.glyphicon-off:before {
content: "\e017";
}
.glyphicon-signal:before {
content: "\e018";
}
.glyphicon-cog:before {
content: "\e019";
}
.glyphicon-trash:before {
content: "\e020";
}
.glyphicon-home:before {
content: "\e021";
}
.glyphicon-file:before {
content: "\e022";
}
.glyphicon-time:before {
content: "\e023";
}
.glyphicon-road:before {
content: "\e024";
}
.glyphicon-download-alt:before {
content: "\e025";
}
.glyphicon-download:before {
content: "\e026";
}
.glyphicon-upload:before {
content: "\e027";
}
.glyphicon-inbox:before {
content: "\e028";
}
.glyphicon-play-circle:before {
content: "\e029";
}
.glyphicon-repeat:before {
content: "\e030";
}
.glyphicon-refresh:before {
content: "\e031";
}
.glyphicon-list-alt:before {
content: "\e032";
}
.glyphicon-lock:before {
content: "\e033";
}
.glyphicon-flag:before {
content: "\e034";
}
.glyphicon-headphones:before {
content: "\e035";
}
.glyphicon-volume-off:before {
content: "\e036";
}
.glyphicon-volume-down:before {
content: "\e037";
}
.glyphicon-volume-up:before {
content: "\e038";
}
.glyphicon-qrcode:before {
content: "\e039";
}
.glyphicon-barcode:before {
content: "\e040";
}
.glyphicon-tag:before {
content: "\e041";
}
.glyphicon-tags:before {
content: "\e042";
}
.glyphicon-book:before {
content: "\e043";
}
.glyphicon-bookmark:before {
content: "\e044";
}
.glyphicon-print:before {
content: "\e045";
}
.glyphicon-camera:before {
content: "\e046";
}
.glyphicon-font:before {
content: "\e047";
}
.glyphicon-bold:before {
content: "\e048";
}
.glyphicon-italic:before {
content: "\e049";
}
.glyphicon-text-height:before {
content: "\e050";
}
.glyphicon-text-width:before {
content: "\e051";
}
.glyphicon-align-left:before {
content: "\e052";
}
.glyphicon-align-center:before {
content: "\e053";
}
.glyphicon-align-right:before {
content: "\e054";
}
.glyphicon-align-justify:before {
content: "\e055";
}
.glyphicon-list:before {
content: "\e056";
}
.glyphicon-indent-left:before {
content: "\e057";
}
.glyphicon-indent-right:before {
content: "\e058";
}
.glyphicon-facetime-video:before {
content: "\e059";
}
.glyphicon-picture:before {
content: "\e060";
}
.glyphicon-map-marker:before {
content: "\e062";
}
.glyphicon-adjust:before {
content: "\e063";
}
.glyphicon-tint:before {
content: "\e064";
}
.glyphicon-edit:before {
content: "\e065";
}
.glyphicon-share:before {
content: "\e066";
}
.glyphicon-check:before {
content: "\e067";
}
.glyphicon-move:before {
content: "\e068";
}
.glyphicon-step-backward:before {
content: "\e069";
}
.glyphicon-fast-backward:before {
content: "\e070";
}
.glyphicon-backward:before {
content: "\e071";
}
.glyphicon-play:before {
content: "\e072";
}
.glyphicon-pause:before {
content: "\e073";
}
.glyphicon-stop:before {
content: "\e074";
}
.glyphicon-forward:before {
content: "\e075";
}
.glyphicon-fast-forward:before {
content: "\e076";
}
.glyphicon-step-forward:before {
content: "\e077";
}
.glyphicon-eject:before {
content: "\e078";
}
.glyphicon-chevron-left:before {
content: "\e079";
}
.glyphicon-chevron-right:before {
content: "\e080";
}
.glyphicon-plus-sign:before {
content: "\e081";
}
.glyphicon-minus-sign:before {
content: "\e082";
}
.glyphicon-remove-sign:before {
content: "\e083";
}
.glyphicon-ok-sign:before {
content: "\e084";
}
.glyphicon-question-sign:before {
content: "\e085";
}
.glyphicon-info-sign:before {
content: "\e086";
}
.glyphicon-screenshot:before {
content: "\e087";
}
.glyphicon-remove-circle:before {
content: "\e088";
}
.glyphicon-ok-circle:before {
content: "\e089";
}
.glyphicon-ban-circle:before {
content: "\e090";
}
.glyphicon-arrow-left:before {
content: "\e091";
}
.glyphicon-arrow-right:before {
content: "\e092";
}
.glyphicon-arrow-up:before {
content: "\e093";
}
.glyphicon-arrow-down:before {
content: "\e094";
}
.glyphicon-share-alt:before {
content: "\e095";
}
.glyphicon-resize-full:before {
content: "\e096";
}
.glyphicon-resize-small:before {
content: "\e097";
}
.glyphicon-exclamation-sign:before {
content: "\e101";
}
.glyphicon-gift:before {
content: "\e102";
}
.glyphicon-leaf:before {
content: "\e103";
}
.glyphicon-fire:before {
content: "\e104";
}
.glyphicon-eye-open:before {
content: "\e105";
}
.glyphicon-eye-close:before {
content: "\e106";
}
.glyphicon-warning-sign:before {
content: "\e107";
}
.glyphicon-plane:before {
content: "\e108";
}
.glyphicon-calendar:before {
content: "\e109";
}
.glyphicon-random:before {
content: "\e110";
}
.glyphicon-comment:before {
content: "\e111";
}
.glyphicon-magnet:before {
content: "\e112";
}
.glyphicon-chevron-up:before {
content: "\e113";
}
.glyphicon-chevron-down:before {
content: "\e114";
}
.glyphicon-retweet:before {
content: "\e115";
}
.glyphicon-shopping-cart:before {
content: "\e116";
}
.glyphicon-folder-close:before {
content: "\e117";
}
.glyphicon-folder-open:before {
content: "\e118";
}
.glyphicon-resize-vertical:before {
content: "\e119";
}
.glyphicon-resize-horizontal:before {
content: "\e120";
}
.glyphicon-hdd:before {
content: "\e121";
}
.glyphicon-bullhorn:before {
content: "\e122";
}
.glyphicon-bell:before {
content: "\e123";
}
.glyphicon-certificate:before {
content: "\e124";
}
.glyphicon-thumbs-up:before {
content: "\e125";
}
.glyphicon-thumbs-down:before {
content: "\e126";
}
.glyphicon-hand-right:before {
content: "\e127";
}
.glyphicon-hand-left:before {
content: "\e128";
}
.glyphicon-hand-up:before {
content: "\e129";
}
.glyphicon-hand-down:before {
content: "\e130";
}
.glyphicon-circle-arrow-right:before {
content: "\e131";
}
.glyphicon-circle-arrow-left:before {
content: "\e132";
}
.glyphicon-circle-arrow-up:before {
content: "\e133";
}
.glyphicon-circle-arrow-down:before {
content: "\e134";
}
.glyphicon-globe:before {
content: "\e135";
}
.glyphicon-wrench:before {
content: "\e136";
}
.glyphicon-tasks:before {
content: "\e137";
}
.glyphicon-filter:before {
content: "\e138";
}
.glyphicon-briefcase:before {
content: "\e139";
}
.glyphicon-fullscreen:before {
content: "\e140";
}
.glyphicon-dashboard:before {
content: "\e141";
}
.glyphicon-paperclip:before {
content: "\e142";
}
.glyphicon-heart-empty:before {
content: "\e143";
}
.glyphicon-link:before {
content: "\e144";
}
.glyphicon-phone:before {
content: "\e145";
}
.glyphicon-pushpin:before {
content: "\e146";
}
.glyphicon-usd:before {
content: "\e148";
}
.glyphicon-gbp:before {
content: "\e149";
}
.glyphicon-sort:before {
content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
content: "\e152";
}
.glyphicon-sort-by-order:before {
content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
content: "\e154";
}
.glyphicon-sort-by-attributes:before {
content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
content: "\e156";
}
.glyphicon-unchecked:before {
content: "\e157";
}
.glyphicon-expand:before {
content: "\e158";
}
.glyphicon-collapse-down:before {
content: "\e159";
}
.glyphicon-collapse-up:before {
content: "\e160";
}
.glyphicon-log-in:before {
content: "\e161";
}
.glyphicon-flash:before {
content: "\e162";
}
.glyphicon-log-out:before {
content: "\e163";
}
.glyphicon-new-window:before {
content: "\e164";
}
.glyphicon-record:before {
content: "\e165";
}
.glyphicon-save:before {
content: "\e166";
}
.glyphicon-open:before {
content: "\e167";
}
.glyphicon-saved:before {
content: "\e168";
}
.glyphicon-import:before {
content: "\e169";
}
.glyphicon-export:before {
content: "\e170";
}
.glyphicon-send:before {
content: "\e171";
}
.glyphicon-floppy-disk:before {
content: "\e172";
}
.glyphicon-floppy-saved:before {
content: "\e173";
}
.glyphicon-floppy-remove:before {
content: "\e174";
}
.glyphicon-floppy-save:before {
content: "\e175";
}
.glyphicon-floppy-open:before {
content: "\e176";
}
.glyphicon-credit-card:before {
content: "\e177";
}
.glyphicon-transfer:before {
content: "\e178";
}
.glyphicon-cutlery:before {
content: "\e179";
}
.glyphicon-header:before {
content: "\e180";
}
.glyphicon-compressed:before {
content: "\e181";
}
.glyphicon-earphone:before {
content: "\e182";
}
.glyphicon-phone-alt:before {
content: "\e183";
}
.glyphicon-tower:before {
content: "\e184";
}
.glyphicon-stats:before {
content: "\e185";
}
.glyphicon-sd-video:before {
content: "\e186";
}
.glyphicon-hd-video:before {
content: "\e187";
}
.glyphicon-subtitles:before {
content: "\e188";
}
.glyphicon-sound-stereo:before {
content: "\e189";
}
.glyphicon-sound-dolby:before {
content: "\e190";
}
.glyphicon-sound-5-1:before {
content: "\e191";
}
.glyphicon-sound-6-1:before {
content: "\e192";
}
.glyphicon-sound-7-1:before {
content: "\e193";
}
.glyphicon-copyright-mark:before {
content: "\e194";
}
.glyphicon-registration-mark:before {
content: "\e195";
}
.glyphicon-cloud-download:before {
content: "\e197";
}
.glyphicon-cloud-upload:before {
content: "\e198";
}
.glyphicon-tree-conifer:before {
content: "\e199";
}
.glyphicon-tree-deciduous:before {
content: "\e200";
}
.glyphicon-cd:before {
content: "\e201";
}
.glyphicon-save-file:before {
content: "\e202";
}
.glyphicon-open-file:before {
content: "\e203";
}
.glyphicon-level-up:before {
content: "\e204";
}
.glyphicon-copy:before {
content: "\e205";
}
.glyphicon-paste:before {
content: "\e206";
}
.glyphicon-alert:before {
content: "\e209";
}
.glyphicon-equalizer:before {
content: "\e210";
}
.glyphicon-king:before {
content: "\e211";
}
.glyphicon-queen:before {
content: "\e212";
}
.glyphicon-pawn:before {
content: "\e213";
}
.glyphicon-bishop:before {
content: "\e214";
}
.glyphicon-knight:before {
content: "\e215";
}
.glyphicon-baby-formula:before {
content: "\e216";
}
.glyphicon-tent:before {
content: "\26fa";
}
.glyphicon-blackboard:before {
content: "\e218";
}
.glyphicon-bed:before {
content: "\e219";
}
.glyphicon-apple:before {
content: "\f8ff";
}
.glyphicon-erase:before {
content: "\e221";
}
.glyphicon-hourglass:before {
content: "\231b";
}
.glyphicon-lamp:before {
content: "\e223";
}
.glyphicon-duplicate:before {
content: "\e224";
}
.glyphicon-piggy-bank:before {
content: "\e225";
}
.glyphicon-scissors:before {
content: "\e226";
}
.glyphicon-bitcoin:before {
content: "\e227";
}
.glyphicon-btc:before {
content: "\e227";
}
.glyphicon-xbt:before {
content: "\e227";
}
.glyphicon-yen:before {
content: "\00a5";
}
.glyphicon-jpy:before {
content: "\00a5";
}
.glyphicon-ruble:before {
content: "\20bd";
}
.glyphicon-rub:before {
content: "\20bd";
}
.glyphicon-scale:before {
content: "\e230";
}
.glyphicon-ice-lolly:before {
content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
content: "\e232";
}
.glyphicon-education:before {
content: "\e233";
}
.glyphicon-option-horizontal:before {
content: "\e234";
}
.glyphicon-option-vertical:before {
content: "\e235";
}
.glyphicon-menu-hamburger:before {
content: "\e236";
}
.glyphicon-modal-window:before {
content: "\e237";
}
.glyphicon-oil:before {
content: "\e238";
}
.glyphicon-grain:before {
content: "\e239";
}
.glyphicon-sunglasses:before {
content: "\e240";
}
.glyphicon-text-size:before {
content: "\e241";
}
.glyphicon-text-color:before {
content: "\e242";
}
.glyphicon-text-background:before {
content: "\e243";
}
.glyphicon-object-align-top:before {
content: "\e244";
}
.glyphicon-object-align-bottom:before {
content: "\e245";
}
.glyphicon-object-align-horizontal:before {
content: "\e246";
}
.glyphicon-object-align-left:before {
content: "\e247";
}
.glyphicon-object-align-vertical:before {
content: "\e248";
}
.glyphicon-object-align-right:before {
content: "\e249";
}
.glyphicon-triangle-right:before {
content: "\e250";
}
.glyphicon-triangle-left:before {
content: "\e251";
}
.glyphicon-triangle-bottom:before {
content: "\e252";
}
.glyphicon-triangle-top:before {
content: "\e253";
}
.glyphicon-console:before {
content: "\e254";
}
.glyphicon-superscript:before {
content: "\e255";
}
.glyphicon-subscript:before {
content: "\e256";
}
.glyphicon-menu-left:before {
content: "\e257";
}
.glyphicon-menu-right:before {
content: "\e258";
}
.glyphicon-menu-down:before {
content: "\e259";
}
.glyphicon-menu-up:before {
content: "\e260";
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
html {
font-size: 10px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 1.42857143;
color: #000;
background-color: #fff;
}
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
a {
color: #337ab7;
text-decoration: none;
}
a:hover,
a:focus {
color: #23527c;
text-decoration: underline;
}
a:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
figure {
margin: 0;
}
img {
vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
display: block;
max-width: 100%;
height: auto;
}
.img-rounded {
border-radius: 3px;
}
.img-thumbnail {
padding: 4px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 2px;
-webkit-transition: all 0.2s ease-in-out;
-o-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
display: inline-block;
max-width: 100%;
height: auto;
}
.img-circle {
border-radius: 50%;
}
hr {
margin-top: 18px;
margin-bottom: 18px;
border: 0;
border-top: 1px solid #eeeeee;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
overflow: hidden;
clip: rect(0, 0, 0, 0);
border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
position: static;
width: auto;
height: auto;
margin: 0;
overflow: visible;
clip: auto;
}
[role="button"] {
cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family: inherit;
font-weight: 500;
line-height: 1.1;
color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
font-weight: normal;
line-height: 1;
color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
margin-top: 18px;
margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
margin-top: 9px;
margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
font-size: 75%;
}
h1,
.h1 {
font-size: 33px;
}
h2,
.h2 {
font-size: 27px;
}
h3,
.h3 {
font-size: 23px;
}
h4,
.h4 {
font-size: 17px;
}
h5,
.h5 {
font-size: 13px;
}
h6,
.h6 {
font-size: 12px;
}
p {
margin: 0 0 9px;
}
.lead {
margin-bottom: 18px;
font-size: 14px;
font-weight: 300;
line-height: 1.4;
}
@media (min-width: 768px) {
.lead {
font-size: 19.5px;
}
}
small,
.small {
font-size: 92%;
}
mark,
.mark {
background-color: #fcf8e3;
padding: .2em;
}
.text-left {
text-align: left;
}
.text-right {
text-align: right;
}
.text-center {
text-align: center;
}
.text-justify {
text-align: justify;
}
.text-nowrap {
white-space: nowrap;
}
.text-lowercase {
text-transform: lowercase;
}
.text-uppercase {
text-transform: uppercase;
}
.text-capitalize {
text-transform: capitalize;
}
.text-muted {
color: #777777;
}
.text-primary {
color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
color: #286090;
}
.text-success {
color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
color: #2b542c;
}
.text-info {
color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
color: #245269;
}
.text-warning {
color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
color: #66512c;
}
.text-danger {
color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
color: #843534;
}
.bg-primary {
color: #fff;
background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
background-color: #286090;
}
.bg-success {
background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
background-color: #c1e2b3;
}
.bg-info {
background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
background-color: #afd9ee;
}
.bg-warning {
background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
background-color: #f7ecb5;
}
.bg-danger {
background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
background-color: #e4b9b9;
}
.page-header {
padding-bottom: 8px;
margin: 36px 0 18px;
border-bottom: 1px solid #eeeeee;
}
ul,
ol {
margin-top: 0;
margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
margin-bottom: 0;
}
.list-unstyled {
padding-left: 0;
list-style: none;
}
.list-inline {
padding-left: 0;
list-style: none;
margin-left: -5px;
}
.list-inline > li {
display: inline-block;
padding-left: 5px;
padding-right: 5px;
}
dl {
margin-top: 0;
margin-bottom: 18px;
}
dt,
dd {
line-height: 1.42857143;
}
dt {
font-weight: bold;
}
dd {
margin-left: 0;
}
@media (min-width: 541px) {
.dl-horizontal dt {
float: left;
width: 160px;
clear: left;
text-align: right;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dl-horizontal dd {
margin-left: 180px;
}
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #777777;
}
.initialism {
font-size: 90%;
text-transform: uppercase;
}
blockquote {
padding: 9px 18px;
margin: 0 0 18px;
font-size: inherit;
border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
display: block;
font-size: 80%;
line-height: 1.42857143;
color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
padding-right: 15px;
padding-left: 0;
border-right: 5px solid #eeeeee;
border-left: 0;
text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
content: '\00A0 \2014';
}
address {
margin-bottom: 18px;
font-style: normal;
line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
font-family: monospace;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
background-color: #f9f2f4;
border-radius: 2px;
}
kbd {
padding: 2px 4px;
font-size: 90%;
color: #888;
background-color: transparent;
border-radius: 1px;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
padding: 0;
font-size: 100%;
font-weight: bold;
box-shadow: none;
}
pre {
display: block;
padding: 8.5px;
margin: 0 0 9px;
font-size: 12px;
line-height: 1.42857143;
word-break: break-all;
word-wrap: break-word;
color: #333333;
background-color: #f5f5f5;
border: 1px solid #ccc;
border-radius: 2px;
}
pre code {
padding: 0;
font-size: inherit;
color: inherit;
white-space: pre-wrap;
background-color: transparent;
border-radius: 0;
}
.pre-scrollable {
max-height: 340px;
overflow-y: scroll;
}
.container {
margin-right: auto;
margin-left: auto;
padding-left: 0px;
padding-right: 0px;
}
@media (min-width: 768px) {
.container {
width: 768px;
}
}
@media (min-width: 992px) {
.container {
width: 940px;
}
}
@media (min-width: 1200px) {
.container {
width: 1140px;
}
}
.container-fluid {
margin-right: auto;
margin-left: auto;
padding-left: 0px;
padding-right: 0px;
}
.row {
margin-left: 0px;
margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
position: relative;
min-height: 1px;
padding-left: 0px;
padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
.col-xs-12 {
width: 100%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-pull-0 {
right: auto;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-push-0 {
left: auto;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-0 {
margin-left: 0%;
}
@media (min-width: 768px) {
.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
.col-sm-12 {
width: 100%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-pull-0 {
right: auto;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-push-0 {
left: auto;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-0 {
margin-left: 0%;
}
}
@media (min-width: 992px) {
.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
.col-md-12 {
width: 100%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-9 {
width: 75%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-6 {
width: 50%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-3 {
width: 25%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-pull-0 {
right: auto;
}
.col-md-push-12 {
left: 100%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-push-0 {
left: auto;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-0 {
margin-left: 0%;
}
}
@media (min-width: 1200px) {
.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
.col-lg-12 {
width: 100%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-pull-0 {
right: auto;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-push-0 {
left: auto;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-0 {
margin-left: 0%;
}
}
table {
background-color: transparent;
}
caption {
padding-top: 8px;
padding-bottom: 8px;
color: #777777;
text-align: left;
}
th {
text-align: left;
}
.table {
width: 100%;
max-width: 100%;
margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
padding: 8px;
line-height: 1.42857143;
vertical-align: top;
border-top: 1px solid #ddd;
}
.table > thead > tr > th {
vertical-align: bottom;
border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
border-top: 0;
}
.table > tbody + tbody {
border-top: 2px solid #ddd;
}
.table .table {
background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
padding: 5px;
}
.table-bordered {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
background-color: #f5f5f5;
}
table col[class*="col-"] {
position: static;
float: none;
display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
position: static;
float: none;
display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
background-color: #ebcccc;
}
.table-responsive {
overflow-x: auto;
min-height: 0.01%;
}
@media screen and (max-width: 767px) {
.table-responsive {
width: 100%;
margin-bottom: 13.5px;
overflow-y: hidden;
-ms-overflow-style: -ms-autohiding-scrollbar;
border: 1px solid #ddd;
}
.table-responsive > .table {
margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
white-space: nowrap;
}
.table-responsive > .table-bordered {
border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
border-bottom: 0;
}
}
fieldset {
padding: 0;
margin: 0;
border: 0;
min-width: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: 18px;
font-size: 19.5px;
line-height: inherit;
color: #333333;
border: 0;
border-bottom: 1px solid #e5e5e5;
}
label {
display: inline-block;
max-width: 100%;
margin-bottom: 5px;
font-weight: bold;
}
input[type="search"] {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
margin: 4px 0 0;
margin-top: 1px \9;
line-height: normal;
}
input[type="file"] {
display: block;
}
input[type="range"] {
display: block;
width: 100%;
}
select[multiple],
select[size] {
height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
output {
display: block;
padding-top: 7px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
}
.form-control {
display: block;
width: 100%;
height: 32px;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
color: #999;
opacity: 1;
}
.form-control:-ms-input-placeholder {
color: #999;
}
.form-control::-webkit-input-placeholder {
color: #999;
}
.form-control::-ms-expand {
border: 0;
background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
background-color: #eeeeee;
opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
cursor: not-allowed;
}
textarea.form-control {
height: auto;
}
input[type="search"] {
-webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
line-height: 32px;
}
input[type="date"].input-sm,
input[type="time"].input-sm,
input[type="datetime-local"].input-sm,
input[type="month"].input-sm,
.input-group-sm input[type="date"],
.input-group-sm input[type="time"],
.input-group-sm input[type="datetime-local"],
.input-group-sm input[type="month"] {
line-height: 30px;
}
input[type="date"].input-lg,
input[type="time"].input-lg,
input[type="datetime-local"].input-lg,
input[type="month"].input-lg,
.input-group-lg input[type="date"],
.input-group-lg input[type="time"],
.input-group-lg input[type="datetime-local"],
.input-group-lg input[type="month"] {
line-height: 45px;
}
}
.form-group {
margin-bottom: 15px;
}
.radio,
.checkbox {
position: relative;
display: block;
margin-top: 10px;
margin-bottom: 10px;
}
.radio label,
.checkbox label {
min-height: 18px;
padding-left: 20px;
margin-bottom: 0;
font-weight: normal;
cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
position: absolute;
margin-left: -20px;
margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
vertical-align: middle;
font-weight: normal;
cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
margin-top: 0;
margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
cursor: not-allowed;
}
.form-control-static {
padding-top: 7px;
padding-bottom: 7px;
margin-bottom: 0;
min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
padding-left: 0;
padding-right: 0;
}
.input-sm {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
select.input-sm {
height: 30px;
line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
height: auto;
}
.form-group-sm .form-control {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.form-group-sm select.form-control {
height: 30px;
line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
height: auto;
}
.form-group-sm .form-control-static {
height: 30px;
min-height: 30px;
padding: 6px 10px;
font-size: 12px;
line-height: 1.5;
}
.input-lg {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
select.input-lg {
height: 45px;
line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
height: auto;
}
.form-group-lg .form-control {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
.form-group-lg select.form-control {
height: 45px;
line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
height: auto;
}
.form-group-lg .form-control-static {
height: 45px;
min-height: 35px;
padding: 11px 16px;
font-size: 17px;
line-height: 1.3333333;
}
.has-feedback {
position: relative;
}
.has-feedback .form-control {
padding-right: 40px;
}
.form-control-feedback {
position: absolute;
top: 0;
right: 0;
z-index: 2;
display: block;
width: 32px;
height: 32px;
line-height: 32px;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
width: 45px;
height: 45px;
line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
color: #3c763d;
}
.has-success .form-control {
border-color: #3c763d;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
border-color: #2b542c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
color: #3c763d;
border-color: #3c763d;
background-color: #dff0d8;
}
.has-success .form-control-feedback {
color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
color: #8a6d3b;
}
.has-warning .form-control {
border-color: #8a6d3b;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
border-color: #66512c;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
color: #8a6d3b;
border-color: #8a6d3b;
background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
color: #a94442;
}
.has-error .form-control {
border-color: #a94442;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
border-color: #843534;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
color: #a94442;
border-color: #a94442;
background-color: #f2dede;
}
.has-error .form-control-feedback {
color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
top: 0;
}
.help-block {
display: block;
margin-top: 5px;
margin-bottom: 10px;
color: #404040;
}
@media (min-width: 768px) {
.form-inline .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.form-inline .form-control-static {
display: inline-block;
}
.form-inline .input-group {
display: inline-table;
vertical-align: middle;
}
.form-inline .input-group .input-group-addon,
.form-inline .input-group .input-group-btn,
.form-inline .input-group .form-control {
width: auto;
}
.form-inline .input-group > .form-control {
width: 100%;
}
.form-inline .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio,
.form-inline .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.form-inline .radio label,
.form-inline .checkbox label {
padding-left: 0;
}
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
margin-top: 0;
margin-bottom: 0;
padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
min-height: 25px;
}
.form-horizontal .form-group {
margin-left: 0px;
margin-right: 0px;
}
@media (min-width: 768px) {
.form-horizontal .control-label {
text-align: right;
margin-bottom: 0;
padding-top: 7px;
}
}
.form-horizontal .has-feedback .form-control-feedback {
right: 0px;
}
@media (min-width: 768px) {
.form-horizontal .form-group-lg .control-label {
padding-top: 11px;
font-size: 17px;
}
}
@media (min-width: 768px) {
.form-horizontal .form-group-sm .control-label {
padding-top: 6px;
font-size: 12px;
}
}
.btn {
display: inline-block;
margin-bottom: 0;
font-weight: normal;
text-align: center;
vertical-align: middle;
touch-action: manipulation;
cursor: pointer;
background-image: none;
border: 1px solid transparent;
white-space: nowrap;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
border-radius: 2px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
color: #333;
text-decoration: none;
}
.btn:active,
.btn.active {
outline: 0;
background-image: none;
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
cursor: not-allowed;
opacity: 0.65;
filter: alpha(opacity=65);
-webkit-box-shadow: none;
box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
pointer-events: none;
}
.btn-default {
color: #333;
background-color: #fff;
border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
.btn-default:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
background-color: #fff;
border-color: #ccc;
}
.btn-default .badge {
color: #fff;
background-color: #333;
}
.btn-primary {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
color: #fff;
background-color: #286090;
border-color: #122b40;
}
.btn-primary:hover {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
color: #fff;
background-color: #204d74;
border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
background-color: #337ab7;
border-color: #2e6da4;
}
.btn-primary .badge {
color: #337ab7;
background-color: #fff;
}
.btn-success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
color: #fff;
background-color: #449d44;
border-color: #255625;
}
.btn-success:hover {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
color: #fff;
background-color: #398439;
border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
background-color: #5cb85c;
border-color: #4cae4c;
}
.btn-success .badge {
color: #5cb85c;
background-color: #fff;
}
.btn-info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
color: #fff;
background-color: #31b0d5;
border-color: #1b6d85;
}
.btn-info:hover {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
color: #fff;
background-color: #269abc;
border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
background-color: #5bc0de;
border-color: #46b8da;
}
.btn-info .badge {
color: #5bc0de;
background-color: #fff;
}
.btn-warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
color: #fff;
background-color: #ec971f;
border-color: #985f0d;
}
.btn-warning:hover {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
color: #fff;
background-color: #d58512;
border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
background-color: #f0ad4e;
border-color: #eea236;
}
.btn-warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.btn-danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
color: #fff;
background-color: #c9302c;
border-color: #761c19;
}
.btn-danger:hover {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
color: #fff;
background-color: #ac2925;
border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
background-color: #d9534f;
border-color: #d43f3a;
}
.btn-danger .badge {
color: #d9534f;
background-color: #fff;
}
.btn-link {
color: #337ab7;
font-weight: normal;
border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
background-color: transparent;
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
color: #23527c;
text-decoration: underline;
background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
color: #777777;
text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
padding: 1px 5px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
.btn-block {
display: block;
width: 100%;
}
.btn-block + .btn-block {
margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
width: 100%;
}
.fade {
opacity: 0;
-webkit-transition: opacity 0.15s linear;
-o-transition: opacity 0.15s linear;
transition: opacity 0.15s linear;
}
.fade.in {
opacity: 1;
}
.collapse {
display: none;
}
.collapse.in {
display: block;
}
tr.collapse.in {
display: table-row;
}
tbody.collapse.in {
display: table-row-group;
}
.collapsing {
position: relative;
height: 0;
overflow: hidden;
-webkit-transition-property: height, visibility;
transition-property: height, visibility;
-webkit-transition-duration: 0.35s;
transition-duration: 0.35s;
-webkit-transition-timing-function: ease;
transition-timing-function: ease;
}
.caret {
display: inline-block;
width: 0;
height: 0;
margin-left: 2px;
vertical-align: middle;
border-top: 4px dashed;
border-top: 4px solid \9;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
}
.dropup,
.dropdown {
position: relative;
}
.dropdown-toggle:focus {
outline: 0;
}
.dropdown-menu {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
display: none;
float: left;
min-width: 160px;
padding: 5px 0;
margin: 2px 0 0;
list-style: none;
font-size: 13px;
text-align: left;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 2px;
-webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
background-clip: padding-box;
}
.dropdown-menu.pull-right {
right: 0;
left: auto;
}
.dropdown-menu .divider {
height: 1px;
margin: 8px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.dropdown-menu > li > a {
display: block;
padding: 3px 20px;
clear: both;
font-weight: normal;
line-height: 1.42857143;
color: #333333;
white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
text-decoration: none;
color: #262626;
background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: #fff;
text-decoration: none;
outline: 0;
background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none;
background-color: transparent;
background-image: none;
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
cursor: not-allowed;
}
.open > .dropdown-menu {
display: block;
}
.open > a {
outline: 0;
}
.dropdown-menu-right {
left: auto;
right: 0;
}
.dropdown-menu-left {
left: 0;
right: auto;
}
.dropdown-header {
display: block;
padding: 3px 20px;
font-size: 12px;
line-height: 1.42857143;
color: #777777;
white-space: nowrap;
}
.dropdown-backdrop {
position: fixed;
left: 0;
right: 0;
bottom: 0;
top: 0;
z-index: 990;
}
.pull-right > .dropdown-menu {
right: 0;
left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
border-top: 0;
border-bottom: 4px dashed;
border-bottom: 4px solid \9;
content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
top: auto;
bottom: 100%;
margin-bottom: 2px;
}
@media (min-width: 541px) {
.navbar-right .dropdown-menu {
left: auto;
right: 0;
}
.navbar-right .dropdown-menu-left {
left: 0;
right: auto;
}
}
.btn-group,
.btn-group-vertical {
position: relative;
display: inline-block;
vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
position: relative;
float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
margin-left: -1px;
}
.btn-toolbar {
margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
border-radius: 0;
}
.btn-group > .btn:first-child {
margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.btn-group > .btn-group {
float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
padding-left: 8px;
padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
padding-left: 12px;
padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn .caret {
margin-left: 0;
}
.btn-lg .caret {
border-width: 5px 5px 0;
border-bottom-width: 0;
}
.dropup .btn-lg .caret {
border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
display: block;
float: none;
width: 100%;
max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
margin-top: -1px;
margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
border-top-right-radius: 2px;
border-top-left-radius: 2px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
border-top-right-radius: 0;
border-top-left-radius: 0;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.btn-group-justified {
display: table;
width: 100%;
table-layout: fixed;
border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
float: none;
display: table-cell;
width: 1%;
}
.btn-group-justified > .btn-group .btn {
width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
position: absolute;
clip: rect(0, 0, 0, 0);
pointer-events: none;
}
.input-group {
position: relative;
display: table;
border-collapse: separate;
}
.input-group[class*="col-"] {
float: none;
padding-left: 0;
padding-right: 0;
}
.input-group .form-control {
position: relative;
z-index: 2;
float: left;
width: 100%;
margin-bottom: 0;
}
.input-group .form-control:focus {
z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
height: 45px;
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
height: 45px;
line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
height: 30px;
line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
border-radius: 0;
}
.input-group-addon,
.input-group-btn {
width: 1%;
white-space: nowrap;
vertical-align: middle;
}
.input-group-addon {
padding: 6px 12px;
font-size: 13px;
font-weight: normal;
line-height: 1;
color: #555555;
text-align: center;
background-color: #eeeeee;
border: 1px solid #ccc;
border-radius: 2px;
}
.input-group-addon.input-sm {
padding: 5px 10px;
font-size: 12px;
border-radius: 1px;
}
.input-group-addon.input-lg {
padding: 10px 16px;
font-size: 17px;
border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.input-group-addon:first-child {
border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
.input-group-addon:last-child {
border-left: 0;
}
.input-group-btn {
position: relative;
font-size: 0;
white-space: nowrap;
}
.input-group-btn > .btn {
position: relative;
}
.input-group-btn > .btn + .btn {
margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
z-index: 2;
margin-left: -1px;
}
.nav {
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.nav > li {
position: relative;
display: block;
}
.nav > li > a {
position: relative;
display: block;
padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
text-decoration: none;
background-color: #eeeeee;
}
.nav > li.disabled > a {
color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
color: #777777;
text-decoration: none;
background-color: transparent;
cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #eeeeee;
border-color: #337ab7;
}
.nav .nav-divider {
height: 1px;
margin: 8px 0;
overflow: hidden;
background-color: #e5e5e5;
}
.nav > li > a > img {
max-width: none;
}
.nav-tabs {
border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
float: left;
margin-bottom: -1px;
}
.nav-tabs > li > a {
margin-right: 2px;
line-height: 1.42857143;
border: 1px solid transparent;
border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
color: #555555;
background-color: #fff;
border: 1px solid #ddd;
border-bottom-color: transparent;
cursor: default;
}
.nav-tabs.nav-justified {
width: 100%;
border-bottom: 0;
}
.nav-tabs.nav-justified > li {
float: none;
}
.nav-tabs.nav-justified > li > a {
text-align: center;
margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-tabs.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs.nav-justified > li > a {
margin-right: 0;
border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs.nav-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 2px 2px 0 0;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.nav-pills > li {
float: left;
}
.nav-pills > li > a {
border-radius: 2px;
}
.nav-pills > li + li {
margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
color: #fff;
background-color: #337ab7;
}
.nav-stacked > li {
float: none;
}
.nav-stacked > li + li {
margin-top: 2px;
margin-left: 0;
}
.nav-justified {
width: 100%;
}
.nav-justified > li {
float: none;
}
.nav-justified > li > a {
text-align: center;
margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
top: auto;
left: auto;
}
@media (min-width: 768px) {
.nav-justified > li {
display: table-cell;
width: 1%;
}
.nav-justified > li > a {
margin-bottom: 0;
}
}
.nav-tabs-justified {
border-bottom: 0;
}
.nav-tabs-justified > li > a {
margin-right: 0;
border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border: 1px solid #ddd;
}
@media (min-width: 768px) {
.nav-tabs-justified > li > a {
border-bottom: 1px solid #ddd;
border-radius: 2px 2px 0 0;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
border-bottom-color: #fff;
}
}
.tab-content > .tab-pane {
display: none;
}
.tab-content > .active {
display: block;
}
.nav-tabs .dropdown-menu {
margin-top: -1px;
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.navbar {
position: relative;
min-height: 30px;
margin-bottom: 18px;
border: 1px solid transparent;
}
@media (min-width: 541px) {
.navbar {
border-radius: 2px;
}
}
@media (min-width: 541px) {
.navbar-header {
float: left;
}
}
.navbar-collapse {
overflow-x: visible;
padding-right: 0px;
padding-left: 0px;
border-top: 1px solid transparent;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
-webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
overflow-y: auto;
}
@media (min-width: 541px) {
.navbar-collapse {
width: auto;
border-top: 0;
box-shadow: none;
}
.navbar-collapse.collapse {
display: block !important;
height: auto !important;
padding-bottom: 0;
overflow: visible !important;
}
.navbar-collapse.in {
overflow-y: visible;
}
.navbar-fixed-top .navbar-collapse,
.navbar-static-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
padding-left: 0;
padding-right: 0;
}
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
max-height: 200px;
}
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0px;
margin-left: 0px;
}
@media (min-width: 541px) {
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
margin-right: 0;
margin-left: 0;
}
}
.navbar-static-top {
z-index: 1000;
border-width: 0 0 1px;
}
@media (min-width: 541px) {
.navbar-static-top {
border-radius: 0;
}
}
.navbar-fixed-top,
.navbar-fixed-bottom {
position: fixed;
right: 0;
left: 0;
z-index: 1030;
}
@media (min-width: 541px) {
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
}
.navbar-fixed-top {
top: 0;
border-width: 0 0 1px;
}
.navbar-fixed-bottom {
bottom: 0;
margin-bottom: 0;
border-width: 1px 0 0;
}
.navbar-brand {
float: left;
padding: 6px 0px;
font-size: 17px;
line-height: 18px;
height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
text-decoration: none;
}
.navbar-brand > img {
display: block;
}
@media (min-width: 541px) {
.navbar > .container .navbar-brand,
.navbar > .container-fluid .navbar-brand {
margin-left: 0px;
}
}
.navbar-toggle {
position: relative;
float: right;
margin-right: 0px;
padding: 9px 10px;
margin-top: -2px;
margin-bottom: -2px;
background-color: transparent;
background-image: none;
border: 1px solid transparent;
border-radius: 2px;
}
.navbar-toggle:focus {
outline: 0;
}
.navbar-toggle .icon-bar {
display: block;
width: 22px;
height: 2px;
border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
margin-top: 4px;
}
@media (min-width: 541px) {
.navbar-toggle {
display: none;
}
}
.navbar-nav {
margin: 3px 0px;
}
.navbar-nav > li > a {
padding-top: 10px;
padding-bottom: 10px;
line-height: 18px;
}
@media (max-width: 540px) {
.navbar-nav .open .dropdown-menu {
position: static;
float: none;
width: auto;
margin-top: 0;
background-color: transparent;
border: 0;
box-shadow: none;
}
.navbar-nav .open .dropdown-menu > li > a,
.navbar-nav .open .dropdown-menu .dropdown-header {
padding: 5px 15px 5px 25px;
}
.navbar-nav .open .dropdown-menu > li > a {
line-height: 18px;
}
.navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-nav .open .dropdown-menu > li > a:focus {
background-image: none;
}
}
@media (min-width: 541px) {
.navbar-nav {
float: left;
margin: 0;
}
.navbar-nav > li {
float: left;
}
.navbar-nav > li > a {
padding-top: 6px;
padding-bottom: 6px;
}
}
.navbar-form {
margin-left: 0px;
margin-right: 0px;
padding: 10px 0px;
border-top: 1px solid transparent;
border-bottom: 1px solid transparent;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
margin-top: -1px;
margin-bottom: -1px;
}
@media (min-width: 768px) {
.navbar-form .form-group {
display: inline-block;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .form-control {
display: inline-block;
width: auto;
vertical-align: middle;
}
.navbar-form .form-control-static {
display: inline-block;
}
.navbar-form .input-group {
display: inline-table;
vertical-align: middle;
}
.navbar-form .input-group .input-group-addon,
.navbar-form .input-group .input-group-btn,
.navbar-form .input-group .form-control {
width: auto;
}
.navbar-form .input-group > .form-control {
width: 100%;
}
.navbar-form .control-label {
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio,
.navbar-form .checkbox {
display: inline-block;
margin-top: 0;
margin-bottom: 0;
vertical-align: middle;
}
.navbar-form .radio label,
.navbar-form .checkbox label {
padding-left: 0;
}
.navbar-form .radio input[type="radio"],
.navbar-form .checkbox input[type="checkbox"] {
position: relative;
margin-left: 0;
}
.navbar-form .has-feedback .form-control-feedback {
top: 0;
}
}
@media (max-width: 540px) {
.navbar-form .form-group {
margin-bottom: 5px;
}
.navbar-form .form-group:last-child {
margin-bottom: 0;
}
}
@media (min-width: 541px) {
.navbar-form {
width: auto;
border: 0;
margin-left: 0;
margin-right: 0;
padding-top: 0;
padding-bottom: 0;
-webkit-box-shadow: none;
box-shadow: none;
}
}
.navbar-nav > li > .dropdown-menu {
margin-top: 0;
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
margin-bottom: 0;
border-top-right-radius: 2px;
border-top-left-radius: 2px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.navbar-btn {
margin-top: -1px;
margin-bottom: -1px;
}
.navbar-btn.btn-sm {
margin-top: 0px;
margin-bottom: 0px;
}
.navbar-btn.btn-xs {
margin-top: 4px;
margin-bottom: 4px;
}
.navbar-text {
margin-top: 6px;
margin-bottom: 6px;
}
@media (min-width: 541px) {
.navbar-text {
float: left;
margin-left: 0px;
margin-right: 0px;
}
}
@media (min-width: 541px) {
.navbar-left {
float: left !important;
float: left;
}
.navbar-right {
float: right !important;
float: right;
margin-right: 0px;
}
.navbar-right ~ .navbar-right {
margin-right: 0;
}
}
.navbar-default {
background-color: #f8f8f8;
border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
color: #5e5e5e;
background-color: transparent;
}
.navbar-default .navbar-text {
color: #777;
}
.navbar-default .navbar-nav > li > a {
color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
.navbar-default .navbar-toggle {
border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
background-color: #e7e7e7;
color: #555;
}
@media (max-width: 540px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #777;
}
.navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
color: #333;
background-color: transparent;
}
.navbar-default .navbar-nav .open .dropdown-menu > .active > a,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #555;
background-color: #e7e7e7;
}
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #ccc;
background-color: transparent;
}
}
.navbar-default .navbar-link {
color: #777;
}
.navbar-default .navbar-link:hover {
color: #333;
}
.navbar-default .btn-link {
color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
color: #ccc;
}
.navbar-inverse {
background-color: #222;
border-color: #080808;
}
.navbar-inverse .navbar-brand {
color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-text {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
color: #444;
background-color: transparent;
}
.navbar-inverse .navbar-toggle {
border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
background-color: #080808;
color: #fff;
}
@media (max-width: 540px) {
.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
border-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #9d9d9d;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
color: #fff;
background-color: transparent;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
.navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
color: #444;
background-color: transparent;
}
}
.navbar-inverse .navbar-link {
color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
color: #fff;
}
.navbar-inverse .btn-link {
color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
color: #444;
}
.breadcrumb {
padding: 8px 15px;
margin-bottom: 18px;
list-style: none;
background-color: #f5f5f5;
border-radius: 2px;
}
.breadcrumb > li {
display: inline-block;
}
.breadcrumb > li + li:before {
content: "/\00a0";
padding: 0 5px;
color: #5e5e5e;
}
.breadcrumb > .active {
color: #777777;
}
.pagination {
display: inline-block;
padding-left: 0;
margin: 18px 0;
border-radius: 2px;
}
.pagination > li {
display: inline;
}
.pagination > li > a,
.pagination > li > span {
position: relative;
float: left;
padding: 6px 12px;
line-height: 1.42857143;
text-decoration: none;
color: #337ab7;
background-color: #fff;
border: 1px solid #ddd;
margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
margin-left: 0;
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
border-bottom-right-radius: 2px;
border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
z-index: 2;
color: #23527c;
background-color: #eeeeee;
border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
z-index: 3;
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
color: #777777;
background-color: #fff;
border-color: #ddd;
cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
padding: 10px 16px;
font-size: 17px;
line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
border-bottom-left-radius: 3px;
border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
border-bottom-right-radius: 3px;
border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
border-bottom-left-radius: 1px;
border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
border-bottom-right-radius: 1px;
border-top-right-radius: 1px;
}
.pager {
padding-left: 0;
margin: 18px 0;
list-style: none;
text-align: center;
}
.pager li {
display: inline;
}
.pager li > a,
.pager li > span {
display: inline-block;
padding: 5px 14px;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
text-decoration: none;
background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
float: right;
}
.pager .previous > a,
.pager .previous > span {
float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
color: #777777;
background-color: #fff;
cursor: not-allowed;
}
.label {
display: inline;
padding: .2em .6em .3em;
font-size: 75%;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;
border-radius: .25em;
}
a.label:hover,
a.label:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.label:empty {
display: none;
}
.btn .label {
position: relative;
top: -1px;
}
.label-default {
background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
background-color: #5e5e5e;
}
.label-primary {
background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
background-color: #286090;
}
.label-success {
background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
background-color: #449d44;
}
.label-info {
background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
background-color: #31b0d5;
}
.label-warning {
background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
background-color: #ec971f;
}
.label-danger {
background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
background-color: #c9302c;
}
.badge {
display: inline-block;
min-width: 10px;
padding: 3px 7px;
font-size: 12px;
font-weight: bold;
color: #fff;
line-height: 1;
vertical-align: middle;
white-space: nowrap;
text-align: center;
background-color: #777777;
border-radius: 10px;
}
.badge:empty {
display: none;
}
.btn .badge {
position: relative;
top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
top: 0;
padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
color: #fff;
text-decoration: none;
cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
color: #337ab7;
background-color: #fff;
}
.list-group-item > .badge {
float: right;
}
.list-group-item > .badge + .badge {
margin-right: 5px;
}
.nav-pills > li > a > .badge {
margin-left: 3px;
}
.jumbotron {
padding-top: 30px;
padding-bottom: 30px;
margin-bottom: 30px;
color: inherit;
background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
color: inherit;
}
.jumbotron p {
margin-bottom: 15px;
font-size: 20px;
font-weight: 200;
}
.jumbotron > hr {
border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
border-radius: 3px;
padding-left: 0px;
padding-right: 0px;
}
.jumbotron .container {
max-width: 100%;
}
@media screen and (min-width: 768px) {
.jumbotron {
padding-top: 48px;
padding-bottom: 48px;
}
.container .jumbotron,
.container-fluid .jumbotron {
padding-left: 60px;
padding-right: 60px;
}
.jumbotron h1,
.jumbotron .h1 {
font-size: 59px;
}
}
.thumbnail {
display: block;
padding: 4px;
margin-bottom: 18px;
line-height: 1.42857143;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 2px;
-webkit-transition: border 0.2s ease-in-out;
-o-transition: border 0.2s ease-in-out;
transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
margin-left: auto;
margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
border-color: #337ab7;
}
.thumbnail .caption {
padding: 9px;
color: #000;
}
.alert {
padding: 15px;
margin-bottom: 18px;
border: 1px solid transparent;
border-radius: 2px;
}
.alert h4 {
margin-top: 0;
color: inherit;
}
.alert .alert-link {
font-weight: bold;
}
.alert > p,
.alert > ul {
margin-bottom: 0;
}
.alert > p + p {
margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
position: relative;
top: -2px;
right: -21px;
color: inherit;
}
.alert-success {
background-color: #dff0d8;
border-color: #d6e9c6;
color: #3c763d;
}
.alert-success hr {
border-top-color: #c9e2b3;
}
.alert-success .alert-link {
color: #2b542c;
}
.alert-info {
background-color: #d9edf7;
border-color: #bce8f1;
color: #31708f;
}
.alert-info hr {
border-top-color: #a6e1ec;
}
.alert-info .alert-link {
color: #245269;
}
.alert-warning {
background-color: #fcf8e3;
border-color: #faebcc;
color: #8a6d3b;
}
.alert-warning hr {
border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
color: #66512c;
}
.alert-danger {
background-color: #f2dede;
border-color: #ebccd1;
color: #a94442;
}
.alert-danger hr {
border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
.progress {
overflow: hidden;
height: 18px;
margin-bottom: 18px;
background-color: #f5f5f5;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
float: left;
width: 0%;
height: 100%;
font-size: 12px;
line-height: 18px;
color: #fff;
text-align: center;
background-color: #337ab7;
-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
-webkit-transition: width 0.6s ease;
-o-transition: width 0.6s ease;
transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
-webkit-animation: progress-bar-stripes 2s linear infinite;
-o-animation: progress-bar-stripes 2s linear infinite;
animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
margin-top: 15px;
}
.media:first-child {
margin-top: 0;
}
.media,
.media-body {
zoom: 1;
overflow: hidden;
}
.media-body {
width: 10000px;
}
.media-object {
display: block;
}
.media-object.img-thumbnail {
max-width: none;
}
.media-right,
.media > .pull-right {
padding-left: 10px;
}
.media-left,
.media > .pull-left {
padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
display: table-cell;
vertical-align: top;
}
.media-middle {
vertical-align: middle;
}
.media-bottom {
vertical-align: bottom;
}
.media-heading {
margin-top: 0;
margin-bottom: 5px;
}
.media-list {
padding-left: 0;
list-style: none;
}
.list-group {
margin-bottom: 20px;
padding-left: 0;
}
.list-group-item {
position: relative;
display: block;
padding: 10px 15px;
margin-bottom: -1px;
background-color: #fff;
border: 1px solid #ddd;
}
.list-group-item:first-child {
border-top-right-radius: 2px;
border-top-left-radius: 2px;
}
.list-group-item:last-child {
margin-bottom: 0;
border-bottom-right-radius: 2px;
border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
text-decoration: none;
color: #555;
background-color: #f5f5f5;
}
button.list-group-item {
width: 100%;
text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
background-color: #eeeeee;
color: #777777;
cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
z-index: 2;
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
color: #c7ddef;
}
.list-group-item-success {
color: #3c763d;
background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
color: #3c763d;
background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
color: #fff;
background-color: #3c763d;
border-color: #3c763d;
}
.list-group-item-info {
color: #31708f;
background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
color: #31708f;
background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
color: #fff;
background-color: #31708f;
border-color: #31708f;
}
.list-group-item-warning {
color: #8a6d3b;
background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
color: #8a6d3b;
background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
color: #fff;
background-color: #8a6d3b;
border-color: #8a6d3b;
}
.list-group-item-danger {
color: #a94442;
background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
color: #a94442;
background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
color: #fff;
background-color: #a94442;
border-color: #a94442;
}
.list-group-item-heading {
margin-top: 0;
margin-bottom: 5px;
}
.list-group-item-text {
margin-bottom: 0;
line-height: 1.3;
}
.panel {
margin-bottom: 18px;
background-color: #fff;
border: 1px solid transparent;
border-radius: 2px;
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
padding: 15px;
}
.panel-heading {
padding: 10px 15px;
border-bottom: 1px solid transparent;
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
color: inherit;
}
.panel-title {
margin-top: 0;
margin-bottom: 0;
font-size: 15px;
color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
color: inherit;
}
.panel-footer {
padding: 10px 15px;
background-color: #f5f5f5;
border-top: 1px solid #ddd;
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
border-width: 1px 0;
border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
border-top: 0;
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
border-bottom: 0;
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
border-top-right-radius: 0;
border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
border-top-width: 0;
}
.list-group + .panel-footer {
border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
padding-left: 15px;
padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
border-top-right-radius: 1px;
border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
border-top-left-radius: 1px;
border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
border-bottom-right-radius: 1px;
border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
border-bottom-left-radius: 1px;
border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 0;
}
.panel > .table-responsive {
border: 0;
margin-bottom: 0;
}
.panel-group {
margin-bottom: 18px;
}
.panel-group .panel {
margin-bottom: 0;
border-radius: 2px;
}
.panel-group .panel + .panel {
margin-top: 5px;
}
.panel-group .panel-heading {
border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
border-bottom: 1px solid #ddd;
}
.panel-default {
border-color: #ddd;
}
.panel-default > .panel-heading {
color: #333333;
background-color: #f5f5f5;
border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
color: #f5f5f5;
background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ddd;
}
.panel-primary {
border-color: #337ab7;
}
.panel-primary > .panel-heading {
color: #fff;
background-color: #337ab7;
border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
color: #337ab7;
background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #337ab7;
}
.panel-success {
border-color: #d6e9c6;
}
.panel-success > .panel-heading {
color: #3c763d;
background-color: #dff0d8;
border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
color: #dff0d8;
background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #d6e9c6;
}
.panel-info {
border-color: #bce8f1;
}
.panel-info > .panel-heading {
color: #31708f;
background-color: #d9edf7;
border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
color: #d9edf7;
background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #bce8f1;
}
.panel-warning {
border-color: #faebcc;
}
.panel-warning > .panel-heading {
color: #8a6d3b;
background-color: #fcf8e3;
border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
color: #fcf8e3;
background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #faebcc;
}
.panel-danger {
border-color: #ebccd1;
}
.panel-danger > .panel-heading {
color: #a94442;
background-color: #f2dede;
border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
color: #f2dede;
background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
border-bottom-color: #ebccd1;
}
.embed-responsive {
position: relative;
display: block;
height: 0;
padding: 0;
overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
position: absolute;
top: 0;
left: 0;
bottom: 0;
height: 100%;
width: 100%;
border: 0;
}
.embed-responsive-16by9 {
padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
padding-bottom: 75%;
}
.well {
min-height: 20px;
padding: 19px;
margin-bottom: 20px;
background-color: #f5f5f5;
border: 1px solid #e3e3e3;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
border-color: #ddd;
border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
padding: 24px;
border-radius: 3px;
}
.well-sm {
padding: 9px;
border-radius: 1px;
}
.close {
float: right;
font-size: 19.5px;
font-weight: bold;
line-height: 1;
color: #000;
text-shadow: 0 1px 0 #fff;
opacity: 0.2;
filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
opacity: 0.5;
filter: alpha(opacity=50);
}
button.close {
padding: 0;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
}
.modal-open {
overflow: hidden;
}
.modal {
display: none;
overflow: hidden;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1050;
-webkit-overflow-scrolling: touch;
outline: 0;
}
.modal.fade .modal-dialog {
-webkit-transform: translate(0, -25%);
-ms-transform: translate(0, -25%);
-o-transform: translate(0, -25%);
transform: translate(0, -25%);
-webkit-transition: -webkit-transform 0.3s ease-out;
-moz-transition: -moz-transform 0.3s ease-out;
-o-transition: -o-transform 0.3s ease-out;
transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
.modal-open .modal {
overflow-x: hidden;
overflow-y: auto;
}
.modal-dialog {
position: relative;
width: auto;
margin: 10px;
}
.modal-content {
position: relative;
background-color: #fff;
border: 1px solid #999;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
-webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
background-clip: padding-box;
outline: 0;
}
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1040;
background-color: #000;
}
.modal-backdrop.fade {
opacity: 0;
filter: alpha(opacity=0);
}
.modal-backdrop.in {
opacity: 0.5;
filter: alpha(opacity=50);
}
.modal-header {
padding: 15px;
border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
margin-top: -2px;
}
.modal-title {
margin: 0;
line-height: 1.42857143;
}
.modal-body {
position: relative;
padding: 15px;
}
.modal-footer {
padding: 15px;
text-align: right;
border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
margin-left: 5px;
margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
margin-left: 0;
}
.modal-scrollbar-measure {
position: absolute;
top: -9999px;
width: 50px;
height: 50px;
overflow: scroll;
}
@media (min-width: 768px) {
.modal-dialog {
width: 600px;
margin: 30px auto;
}
.modal-content {
-webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
}
.modal-sm {
width: 300px;
}
}
@media (min-width: 992px) {
.modal-lg {
width: 900px;
}
}
.tooltip {
position: absolute;
z-index: 1070;
display: block;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
font-size: 12px;
opacity: 0;
filter: alpha(opacity=0);
}
.tooltip.in {
opacity: 0.9;
filter: alpha(opacity=90);
}
.tooltip.top {
margin-top: -3px;
padding: 5px 0;
}
.tooltip.right {
margin-left: 3px;
padding: 0 5px;
}
.tooltip.bottom {
margin-top: 3px;
padding: 5px 0;
}
.tooltip.left {
margin-left: -3px;
padding: 0 5px;
}
.tooltip-inner {
max-width: 200px;
padding: 3px 8px;
color: #fff;
text-align: center;
background-color: #000;
border-radius: 2px;
}
.tooltip-arrow {
position: absolute;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.tooltip.top .tooltip-arrow {
bottom: 0;
left: 50%;
margin-left: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
bottom: 0;
right: 5px;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
bottom: 0;
left: 5px;
margin-bottom: -5px;
border-width: 5px 5px 0;
border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
top: 50%;
left: 0;
margin-top: -5px;
border-width: 5px 5px 5px 0;
border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
top: 50%;
right: 0;
margin-top: -5px;
border-width: 5px 0 5px 5px;
border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
top: 0;
left: 50%;
margin-left: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
top: 0;
right: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
top: 0;
left: 5px;
margin-top: -5px;
border-width: 0 5px 5px;
border-bottom-color: #000;
}
.popover {
position: absolute;
top: 0;
left: 0;
z-index: 1060;
display: none;
max-width: 276px;
padding: 1px;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: 1.42857143;
text-align: left;
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
font-size: 13px;
background-color: #fff;
background-clip: padding-box;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
border-radius: 3px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
margin-top: -10px;
}
.popover.right {
margin-left: 10px;
}
.popover.bottom {
margin-top: 10px;
}
.popover.left {
margin-left: -10px;
}
.popover-title {
margin: 0;
padding: 8px 14px;
font-size: 13px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
border-radius: 2px 2px 0 0;
}
.popover-content {
padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
position: absolute;
display: block;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
}
.popover > .arrow {
border-width: 11px;
}
.popover > .arrow:after {
border-width: 10px;
content: "";
}
.popover.top > .arrow {
left: 50%;
margin-left: -11px;
border-bottom-width: 0;
border-top-color: #999999;
border-top-color: rgba(0, 0, 0, 0.25);
bottom: -11px;
}
.popover.top > .arrow:after {
content: " ";
bottom: 1px;
margin-left: -10px;
border-bottom-width: 0;
border-top-color: #fff;
}
.popover.right > .arrow {
top: 50%;
left: -11px;
margin-top: -11px;
border-left-width: 0;
border-right-color: #999999;
border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
content: " ";
left: 1px;
bottom: -10px;
border-left-width: 0;
border-right-color: #fff;
}
.popover.bottom > .arrow {
left: 50%;
margin-left: -11px;
border-top-width: 0;
border-bottom-color: #999999;
border-bottom-color: rgba(0, 0, 0, 0.25);
top: -11px;
}
.popover.bottom > .arrow:after {
content: " ";
top: 1px;
margin-left: -10px;
border-top-width: 0;
border-bottom-color: #fff;
}
.popover.left > .arrow {
top: 50%;
right: -11px;
margin-top: -11px;
border-right-width: 0;
border-left-color: #999999;
border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
content: " ";
right: 1px;
border-right-width: 0;
border-left-color: #fff;
bottom: -10px;
}
.carousel {
position: relative;
}
.carousel-inner {
position: relative;
overflow: hidden;
width: 100%;
}
.carousel-inner > .item {
display: none;
position: relative;
-webkit-transition: 0.6s ease-in-out left;
-o-transition: 0.6s ease-in-out left;
transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
.carousel-inner > .item {
-webkit-transition: -webkit-transform 0.6s ease-in-out;
-moz-transition: -moz-transform 0.6s ease-in-out;
-o-transition: -o-transform 0.6s ease-in-out;
transition: transform 0.6s ease-in-out;
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-perspective: 1000px;
-moz-perspective: 1000px;
perspective: 1000px;
}
.carousel-inner > .item.next,
.carousel-inner > .item.active.right {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
left: 0;
}
.carousel-inner > .item.prev,
.carousel-inner > .item.active.left {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
left: 0;
}
.carousel-inner > .item.next.left,
.carousel-inner > .item.prev.right,
.carousel-inner > .item.active {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
left: 0;
}
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
display: block;
}
.carousel-inner > .active {
left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
position: absolute;
top: 0;
width: 100%;
}
.carousel-inner > .next {
left: 100%;
}
.carousel-inner > .prev {
left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
left: 0;
}
.carousel-inner > .active.left {
left: -100%;
}
.carousel-inner > .active.right {
left: 100%;
}
.carousel-control {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 15%;
opacity: 0.5;
filter: alpha(opacity=50);
font-size: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
left: auto;
right: 0;
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
outline: 0;
color: #fff;
text-decoration: none;
opacity: 0.9;
filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
position: absolute;
top: 50%;
margin-top: -10px;
z-index: 5;
display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
left: 50%;
margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
right: 50%;
margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 20px;
height: 20px;
line-height: 1;
font-family: serif;
}
.carousel-control .icon-prev:before {
content: '\2039';
}
.carousel-control .icon-next:before {
content: '\203a';
}
.carousel-indicators {
position: absolute;
bottom: 10px;
left: 50%;
z-index: 15;
width: 60%;
margin-left: -30%;
padding-left: 0;
list-style: none;
text-align: center;
}
.carousel-indicators li {
display: inline-block;
width: 10px;
height: 10px;
margin: 1px;
text-indent: -999px;
border: 1px solid #fff;
border-radius: 10px;
cursor: pointer;
background-color: #000 \9;
background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
margin: 0;
width: 12px;
height: 12px;
background-color: #fff;
}
.carousel-caption {
position: absolute;
left: 15%;
right: 15%;
bottom: 20px;
z-index: 10;
padding-top: 20px;
padding-bottom: 20px;
color: #fff;
text-align: center;
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
text-shadow: none;
}
@media screen and (min-width: 768px) {
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-prev,
.carousel-control .icon-next {
width: 30px;
height: 30px;
margin-top: -10px;
font-size: 30px;
}
.carousel-control .glyphicon-chevron-left,
.carousel-control .icon-prev {
margin-left: -10px;
}
.carousel-control .glyphicon-chevron-right,
.carousel-control .icon-next {
margin-right: -10px;
}
.carousel-caption {
left: 20%;
right: 20%;
padding-bottom: 30px;
}
.carousel-indicators {
bottom: 20px;
}
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
content: " ";
display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
clear: both;
}
.center-block {
display: block;
margin-left: auto;
margin-right: auto;
}
.pull-right {
float: right !important;
}
.pull-left {
float: left !important;
}
.hide {
display: none !important;
}
.show {
display: block !important;
}
.invisible {
visibility: hidden;
}
.text-hide {
font: 0/0 a;
color: transparent;
text-shadow: none;
background-color: transparent;
border: 0;
}
.hidden {
display: none !important;
}
.affix {
position: fixed;
}
@-ms-viewport {
width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
display: none !important;
}
@media (max-width: 767px) {
.visible-xs {
display: block !important;
}
table.visible-xs {
display: table !important;
}
tr.visible-xs {
display: table-row !important;
}
th.visible-xs,
td.visible-xs {
display: table-cell !important;
}
}
@media (max-width: 767px) {
.visible-xs-block {
display: block !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline {
display: inline !important;
}
}
@media (max-width: 767px) {
.visible-xs-inline-block {
display: inline-block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm {
display: block !important;
}
table.visible-sm {
display: table !important;
}
tr.visible-sm {
display: table-row !important;
}
th.visible-sm,
td.visible-sm {
display: table-cell !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-block {
display: block !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline {
display: inline !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.visible-sm-inline-block {
display: inline-block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md {
display: block !important;
}
table.visible-md {
display: table !important;
}
tr.visible-md {
display: table-row !important;
}
th.visible-md,
td.visible-md {
display: table-cell !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-block {
display: block !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline {
display: inline !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.visible-md-inline-block {
display: inline-block !important;
}
}
@media (min-width: 1200px) {
.visible-lg {
display: block !important;
}
table.visible-lg {
display: table !important;
}
tr.visible-lg {
display: table-row !important;
}
th.visible-lg,
td.visible-lg {
display: table-cell !important;
}
}
@media (min-width: 1200px) {
.visible-lg-block {
display: block !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline {
display: inline !important;
}
}
@media (min-width: 1200px) {
.visible-lg-inline-block {
display: inline-block !important;
}
}
@media (max-width: 767px) {
.hidden-xs {
display: none !important;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.hidden-sm {
display: none !important;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.hidden-md {
display: none !important;
}
}
@media (min-width: 1200px) {
.hidden-lg {
display: none !important;
}
}
.visible-print {
display: none !important;
}
@media print {
.visible-print {
display: block !important;
}
table.visible-print {
display: table !important;
}
tr.visible-print {
display: table-row !important;
}
th.visible-print,
td.visible-print {
display: table-cell !important;
}
}
.visible-print-block {
display: none !important;
}
@media print {
.visible-print-block {
display: block !important;
}
}
.visible-print-inline {
display: none !important;
}
@media print {
.visible-print-inline {
display: inline !important;
}
}
.visible-print-inline-block {
display: none !important;
}
@media print {
.visible-print-inline-block {
display: inline-block !important;
}
}
@media print {
.hidden-print {
display: none !important;
}
}
/*!
*
* Font Awesome
*
*/
/*!
* Font Awesome 4.2.0 by @davegandy - https://fontawesome.io - @fontawesome
* License - https://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/
/* FONT PATH
* -------------------------- */
@font-face {
font-family: 'FontAwesome';
src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
font-size: 1.33333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.fa-2x {
font-size: 2em;
}
.fa-3x {
font-size: 3em;
}
.fa-4x {
font-size: 4em;
}
.fa-5x {
font-size: 5em;
}
.fa-fw {
width: 1.28571429em;
text-align: center;
}
.fa-ul {
padding-left: 0;
margin-left: 2.14285714em;
list-style-type: none;
}
.fa-ul > li {
position: relative;
}
.fa-li {
position: absolute;
left: -2.14285714em;
width: 2.14285714em;
top: 0.14285714em;
text-align: center;
}
.fa-li.fa-lg {
left: -1.85714286em;
}
.fa-border {
padding: .2em .25em .15em;
border: solid 0.08em #eee;
border-radius: .1em;
}
.pull-right {
float: right;
}
.pull-left {
float: left;
}
.fa.pull-left {
margin-right: .3em;
}
.fa.pull-right {
margin-left: .3em;
}
.fa-spin {
-webkit-animation: fa-spin 2s infinite linear;
animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
@keyframes fa-spin {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(359deg);
transform: rotate(359deg);
}
}
.fa-rotate-90 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.fa-rotate-180 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
-webkit-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.fa-rotate-270 {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
-webkit-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.fa-flip-horizontal {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
-webkit-transform: scale(-1, 1);
-ms-transform: scale(-1, 1);
transform: scale(-1, 1);
}
.fa-flip-vertical {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
-webkit-transform: scale(1, -1);
-ms-transform: scale(1, -1);
transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
filter: none;
}
.fa-stack {
position: relative;
display: inline-block;
width: 2em;
height: 2em;
line-height: 2em;
vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
position: absolute;
left: 0;
width: 100%;
text-align: center;
}
.fa-stack-1x {
line-height: inherit;
}
.fa-stack-2x {
font-size: 2em;
}
.fa-inverse {
color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
readers do not read off random characters that represent icons */
.fa-glass:before {
content: "\f000";
}
.fa-music:before {
content: "\f001";
}
.fa-search:before {
content: "\f002";
}
.fa-envelope-o:before {
content: "\f003";
}
.fa-heart:before {
content: "\f004";
}
.fa-star:before {
content: "\f005";
}
.fa-star-o:before {
content: "\f006";
}
.fa-user:before {
content: "\f007";
}
.fa-film:before {
content: "\f008";
}
.fa-th-large:before {
content: "\f009";
}
.fa-th:before {
content: "\f00a";
}
.fa-th-list:before {
content: "\f00b";
}
.fa-check:before {
content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
content: "\f00d";
}
.fa-search-plus:before {
content: "\f00e";
}
.fa-search-minus:before {
content: "\f010";
}
.fa-power-off:before {
content: "\f011";
}
.fa-signal:before {
content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
content: "\f013";
}
.fa-trash-o:before {
content: "\f014";
}
.fa-home:before {
content: "\f015";
}
.fa-file-o:before {
content: "\f016";
}
.fa-clock-o:before {
content: "\f017";
}
.fa-road:before {
content: "\f018";
}
.fa-download:before {
content: "\f019";
}
.fa-arrow-circle-o-down:before {
content: "\f01a";
}
.fa-arrow-circle-o-up:before {
content: "\f01b";
}
.fa-inbox:before {
content: "\f01c";
}
.fa-play-circle-o:before {
content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
content: "\f01e";
}
.fa-refresh:before {
content: "\f021";
}
.fa-list-alt:before {
content: "\f022";
}
.fa-lock:before {
content: "\f023";
}
.fa-flag:before {
content: "\f024";
}
.fa-headphones:before {
content: "\f025";
}
.fa-volume-off:before {
content: "\f026";
}
.fa-volume-down:before {
content: "\f027";
}
.fa-volume-up:before {
content: "\f028";
}
.fa-qrcode:before {
content: "\f029";
}
.fa-barcode:before {
content: "\f02a";
}
.fa-tag:before {
content: "\f02b";
}
.fa-tags:before {
content: "\f02c";
}
.fa-book:before {
content: "\f02d";
}
.fa-bookmark:before {
content: "\f02e";
}
.fa-print:before {
content: "\f02f";
}
.fa-camera:before {
content: "\f030";
}
.fa-font:before {
content: "\f031";
}
.fa-bold:before {
content: "\f032";
}
.fa-italic:before {
content: "\f033";
}
.fa-text-height:before {
content: "\f034";
}
.fa-text-width:before {
content: "\f035";
}
.fa-align-left:before {
content: "\f036";
}
.fa-align-center:before {
content: "\f037";
}
.fa-align-right:before {
content: "\f038";
}
.fa-align-justify:before {
content: "\f039";
}
.fa-list:before {
content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
content: "\f03b";
}
.fa-indent:before {
content: "\f03c";
}
.fa-video-camera:before {
content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
content: "\f03e";
}
.fa-pencil:before {
content: "\f040";
}
.fa-map-marker:before {
content: "\f041";
}
.fa-adjust:before {
content: "\f042";
}
.fa-tint:before {
content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
content: "\f044";
}
.fa-share-square-o:before {
content: "\f045";
}
.fa-check-square-o:before {
content: "\f046";
}
.fa-arrows:before {
content: "\f047";
}
.fa-step-backward:before {
content: "\f048";
}
.fa-fast-backward:before {
content: "\f049";
}
.fa-backward:before {
content: "\f04a";
}
.fa-play:before {
content: "\f04b";
}
.fa-pause:before {
content: "\f04c";
}
.fa-stop:before {
content: "\f04d";
}
.fa-forward:before {
content: "\f04e";
}
.fa-fast-forward:before {
content: "\f050";
}
.fa-step-forward:before {
content: "\f051";
}
.fa-eject:before {
content: "\f052";
}
.fa-chevron-left:before {
content: "\f053";
}
.fa-chevron-right:before {
content: "\f054";
}
.fa-plus-circle:before {
content: "\f055";
}
.fa-minus-circle:before {
content: "\f056";
}
.fa-times-circle:before {
content: "\f057";
}
.fa-check-circle:before {
content: "\f058";
}
.fa-question-circle:before {
content: "\f059";
}
.fa-info-circle:before {
content: "\f05a";
}
.fa-crosshairs:before {
content: "\f05b";
}
.fa-times-circle-o:before {
content: "\f05c";
}
.fa-check-circle-o:before {
content: "\f05d";
}
.fa-ban:before {
content: "\f05e";
}
.fa-arrow-left:before {
content: "\f060";
}
.fa-arrow-right:before {
content: "\f061";
}
.fa-arrow-up:before {
content: "\f062";
}
.fa-arrow-down:before {
content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
content: "\f064";
}
.fa-expand:before {
content: "\f065";
}
.fa-compress:before {
content: "\f066";
}
.fa-plus:before {
content: "\f067";
}
.fa-minus:before {
content: "\f068";
}
.fa-asterisk:before {
content: "\f069";
}
.fa-exclamation-circle:before {
content: "\f06a";
}
.fa-gift:before {
content: "\f06b";
}
.fa-leaf:before {
content: "\f06c";
}
.fa-fire:before {
content: "\f06d";
}
.fa-eye:before {
content: "\f06e";
}
.fa-eye-slash:before {
content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
content: "\f071";
}
.fa-plane:before {
content: "\f072";
}
.fa-calendar:before {
content: "\f073";
}
.fa-random:before {
content: "\f074";
}
.fa-comment:before {
content: "\f075";
}
.fa-magnet:before {
content: "\f076";
}
.fa-chevron-up:before {
content: "\f077";
}
.fa-chevron-down:before {
content: "\f078";
}
.fa-retweet:before {
content: "\f079";
}
.fa-shopping-cart:before {
content: "\f07a";
}
.fa-folder:before {
content: "\f07b";
}
.fa-folder-open:before {
content: "\f07c";
}
.fa-arrows-v:before {
content: "\f07d";
}
.fa-arrows-h:before {
content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
content: "\f080";
}
.fa-twitter-square:before {
content: "\f081";
}
.fa-facebook-square:before {
content: "\f082";
}
.fa-camera-retro:before {
content: "\f083";
}
.fa-key:before {
content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
content: "\f085";
}
.fa-comments:before {
content: "\f086";
}
.fa-thumbs-o-up:before {
content: "\f087";
}
.fa-thumbs-o-down:before {
content: "\f088";
}
.fa-star-half:before {
content: "\f089";
}
.fa-heart-o:before {
content: "\f08a";
}
.fa-sign-out:before {
content: "\f08b";
}
.fa-linkedin-square:before {
content: "\f08c";
}
.fa-thumb-tack:before {
content: "\f08d";
}
.fa-external-link:before {
content: "\f08e";
}
.fa-sign-in:before {
content: "\f090";
}
.fa-trophy:before {
content: "\f091";
}
.fa-github-square:before {
content: "\f092";
}
.fa-upload:before {
content: "\f093";
}
.fa-lemon-o:before {
content: "\f094";
}
.fa-phone:before {
content: "\f095";
}
.fa-square-o:before {
content: "\f096";
}
.fa-bookmark-o:before {
content: "\f097";
}
.fa-phone-square:before {
content: "\f098";
}
.fa-twitter:before {
content: "\f099";
}
.fa-facebook:before {
content: "\f09a";
}
.fa-github:before {
content: "\f09b";
}
.fa-unlock:before {
content: "\f09c";
}
.fa-credit-card:before {
content: "\f09d";
}
.fa-rss:before {
content: "\f09e";
}
.fa-hdd-o:before {
content: "\f0a0";
}
.fa-bullhorn:before {
content: "\f0a1";
}
.fa-bell:before {
content: "\f0f3";
}
.fa-certificate:before {
content: "\f0a3";
}
.fa-hand-o-right:before {
content: "\f0a4";
}
.fa-hand-o-left:before {
content: "\f0a5";
}
.fa-hand-o-up:before {
content: "\f0a6";
}
.fa-hand-o-down:before {
content: "\f0a7";
}
.fa-arrow-circle-left:before {
content: "\f0a8";
}
.fa-arrow-circle-right:before {
content: "\f0a9";
}
.fa-arrow-circle-up:before {
content: "\f0aa";
}
.fa-arrow-circle-down:before {
content: "\f0ab";
}
.fa-globe:before {
content: "\f0ac";
}
.fa-wrench:before {
content: "\f0ad";
}
.fa-tasks:before {
content: "\f0ae";
}
.fa-filter:before {
content: "\f0b0";
}
.fa-briefcase:before {
content: "\f0b1";
}
.fa-arrows-alt:before {
content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
content: "\f0c1";
}
.fa-cloud:before {
content: "\f0c2";
}
.fa-flask:before {
content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
content: "\f0c5";
}
.fa-paperclip:before {
content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
content: "\f0c7";
}
.fa-square:before {
content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
content: "\f0c9";
}
.fa-list-ul:before {
content: "\f0ca";
}
.fa-list-ol:before {
content: "\f0cb";
}
.fa-strikethrough:before {
content: "\f0cc";
}
.fa-underline:before {
content: "\f0cd";
}
.fa-table:before {
content: "\f0ce";
}
.fa-magic:before {
content: "\f0d0";
}
.fa-truck:before {
content: "\f0d1";
}
.fa-pinterest:before {
content: "\f0d2";
}
.fa-pinterest-square:before {
content: "\f0d3";
}
.fa-google-plus-square:before {
content: "\f0d4";
}
.fa-google-plus:before {
content: "\f0d5";
}
.fa-money:before {
content: "\f0d6";
}
.fa-caret-down:before {
content: "\f0d7";
}
.fa-caret-up:before {
content: "\f0d8";
}
.fa-caret-left:before {
content: "\f0d9";
}
.fa-caret-right:before {
content: "\f0da";
}
.fa-columns:before {
content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
content: "\f0de";
}
.fa-envelope:before {
content: "\f0e0";
}
.fa-linkedin:before {
content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
content: "\f0e4";
}
.fa-comment-o:before {
content: "\f0e5";
}
.fa-comments-o:before {
content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
content: "\f0e7";
}
.fa-sitemap:before {
content: "\f0e8";
}
.fa-umbrella:before {
content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
content: "\f0ea";
}
.fa-lightbulb-o:before {
content: "\f0eb";
}
.fa-exchange:before {
content: "\f0ec";
}
.fa-cloud-download:before {
content: "\f0ed";
}
.fa-cloud-upload:before {
content: "\f0ee";
}
.fa-user-md:before {
content: "\f0f0";
}
.fa-stethoscope:before {
content: "\f0f1";
}
.fa-suitcase:before {
content: "\f0f2";
}
.fa-bell-o:before {
content: "\f0a2";
}
.fa-coffee:before {
content: "\f0f4";
}
.fa-cutlery:before {
content: "\f0f5";
}
.fa-file-text-o:before {
content: "\f0f6";
}
.fa-building-o:before {
content: "\f0f7";
}
.fa-hospital-o:before {
content: "\f0f8";
}
.fa-ambulance:before {
content: "\f0f9";
}
.fa-medkit:before {
content: "\f0fa";
}
.fa-fighter-jet:before {
content: "\f0fb";
}
.fa-beer:before {
content: "\f0fc";
}
.fa-h-square:before {
content: "\f0fd";
}
.fa-plus-square:before {
content: "\f0fe";
}
.fa-angle-double-left:before {
content: "\f100";
}
.fa-angle-double-right:before {
content: "\f101";
}
.fa-angle-double-up:before {
content: "\f102";
}
.fa-angle-double-down:before {
content: "\f103";
}
.fa-angle-left:before {
content: "\f104";
}
.fa-angle-right:before {
content: "\f105";
}
.fa-angle-up:before {
content: "\f106";
}
.fa-angle-down:before {
content: "\f107";
}
.fa-desktop:before {
content: "\f108";
}
.fa-laptop:before {
content: "\f109";
}
.fa-tablet:before {
content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
content: "\f10b";
}
.fa-circle-o:before {
content: "\f10c";
}
.fa-quote-left:before {
content: "\f10d";
}
.fa-quote-right:before {
content: "\f10e";
}
.fa-spinner:before {
content: "\f110";
}
.fa-circle:before {
content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
content: "\f112";
}
.fa-github-alt:before {
content: "\f113";
}
.fa-folder-o:before {
content: "\f114";
}
.fa-folder-open-o:before {
content: "\f115";
}
.fa-smile-o:before {
content: "\f118";
}
.fa-frown-o:before {
content: "\f119";
}
.fa-meh-o:before {
content: "\f11a";
}
.fa-gamepad:before {
content: "\f11b";
}
.fa-keyboard-o:before {
content: "\f11c";
}
.fa-flag-o:before {
content: "\f11d";
}
.fa-flag-checkered:before {
content: "\f11e";
}
.fa-terminal:before {
content: "\f120";
}
.fa-code:before {
content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
content: "\f123";
}
.fa-location-arrow:before {
content: "\f124";
}
.fa-crop:before {
content: "\f125";
}
.fa-code-fork:before {
content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
content: "\f127";
}
.fa-question:before {
content: "\f128";
}
.fa-info:before {
content: "\f129";
}
.fa-exclamation:before {
content: "\f12a";
}
.fa-superscript:before {
content: "\f12b";
}
.fa-subscript:before {
content: "\f12c";
}
.fa-eraser:before {
content: "\f12d";
}
.fa-puzzle-piece:before {
content: "\f12e";
}
.fa-microphone:before {
content: "\f130";
}
.fa-microphone-slash:before {
content: "\f131";
}
.fa-shield:before {
content: "\f132";
}
.fa-calendar-o:before {
content: "\f133";
}
.fa-fire-extinguisher:before {
content: "\f134";
}
.fa-rocket:before {
content: "\f135";
}
.fa-maxcdn:before {
content: "\f136";
}
.fa-chevron-circle-left:before {
content: "\f137";
}
.fa-chevron-circle-right:before {
content: "\f138";
}
.fa-chevron-circle-up:before {
content: "\f139";
}
.fa-chevron-circle-down:before {
content: "\f13a";
}
.fa-html5:before {
content: "\f13b";
}
.fa-css3:before {
content: "\f13c";
}
.fa-anchor:before {
content: "\f13d";
}
.fa-unlock-alt:before {
content: "\f13e";
}
.fa-bullseye:before {
content: "\f140";
}
.fa-ellipsis-h:before {
content: "\f141";
}
.fa-ellipsis-v:before {
content: "\f142";
}
.fa-rss-square:before {
content: "\f143";
}
.fa-play-circle:before {
content: "\f144";
}
.fa-ticket:before {
content: "\f145";
}
.fa-minus-square:before {
content: "\f146";
}
.fa-minus-square-o:before {
content: "\f147";
}
.fa-level-up:before {
content: "\f148";
}
.fa-level-down:before {
content: "\f149";
}
.fa-check-square:before {
content: "\f14a";
}
.fa-pencil-square:before {
content: "\f14b";
}
.fa-external-link-square:before {
content: "\f14c";
}
.fa-share-square:before {
content: "\f14d";
}
.fa-compass:before {
content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
content: "\f153";
}
.fa-gbp:before {
content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
content: "\f158";
}
.fa-won:before,
.fa-krw:before {
content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
content: "\f15a";
}
.fa-file:before {
content: "\f15b";
}
.fa-file-text:before {
content: "\f15c";
}
.fa-sort-alpha-asc:before {
content: "\f15d";
}
.fa-sort-alpha-desc:before {
content: "\f15e";
}
.fa-sort-amount-asc:before {
content: "\f160";
}
.fa-sort-amount-desc:before {
content: "\f161";
}
.fa-sort-numeric-asc:before {
content: "\f162";
}
.fa-sort-numeric-desc:before {
content: "\f163";
}
.fa-thumbs-up:before {
content: "\f164";
}
.fa-thumbs-down:before {
content: "\f165";
}
.fa-youtube-square:before {
content: "\f166";
}
.fa-youtube:before {
content: "\f167";
}
.fa-xing:before {
content: "\f168";
}
.fa-xing-square:before {
content: "\f169";
}
.fa-youtube-play:before {
content: "\f16a";
}
.fa-dropbox:before {
content: "\f16b";
}
.fa-stack-overflow:before {
content: "\f16c";
}
.fa-instagram:before {
content: "\f16d";
}
.fa-flickr:before {
content: "\f16e";
}
.fa-adn:before {
content: "\f170";
}
.fa-bitbucket:before {
content: "\f171";
}
.fa-bitbucket-square:before {
content: "\f172";
}
.fa-tumblr:before {
content: "\f173";
}
.fa-tumblr-square:before {
content: "\f174";
}
.fa-long-arrow-down:before {
content: "\f175";
}
.fa-long-arrow-up:before {
content: "\f176";
}
.fa-long-arrow-left:before {
content: "\f177";
}
.fa-long-arrow-right:before {
content: "\f178";
}
.fa-apple:before {
content: "\f179";
}
.fa-windows:before {
content: "\f17a";
}
.fa-android:before {
content: "\f17b";
}
.fa-linux:before {
content: "\f17c";
}
.fa-dribbble:before {
content: "\f17d";
}
.fa-skype:before {
content: "\f17e";
}
.fa-foursquare:before {
content: "\f180";
}
.fa-trello:before {
content: "\f181";
}
.fa-female:before {
content: "\f182";
}
.fa-male:before {
content: "\f183";
}
.fa-gittip:before {
content: "\f184";
}
.fa-sun-o:before {
content: "\f185";
}
.fa-moon-o:before {
content: "\f186";
}
.fa-archive:before {
content: "\f187";
}
.fa-bug:before {
content: "\f188";
}
.fa-vk:before {
content: "\f189";
}
.fa-weibo:before {
content: "\f18a";
}
.fa-renren:before {
content: "\f18b";
}
.fa-pagelines:before {
content: "\f18c";
}
.fa-stack-exchange:before {
content: "\f18d";
}
.fa-arrow-circle-o-right:before {
content: "\f18e";
}
.fa-arrow-circle-o-left:before {
content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
content: "\f191";
}
.fa-dot-circle-o:before {
content: "\f192";
}
.fa-wheelchair:before {
content: "\f193";
}
.fa-vimeo-square:before {
content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
content: "\f195";
}
.fa-plus-square-o:before {
content: "\f196";
}
.fa-space-shuttle:before {
content: "\f197";
}
.fa-slack:before {
content: "\f198";
}
.fa-envelope-square:before {
content: "\f199";
}
.fa-wordpress:before {
content: "\f19a";
}
.fa-openid:before {
content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
content: "\f19d";
}
.fa-yahoo:before {
content: "\f19e";
}
.fa-google:before {
content: "\f1a0";
}
.fa-reddit:before {
content: "\f1a1";
}
.fa-reddit-square:before {
content: "\f1a2";
}
.fa-stumbleupon-circle:before {
content: "\f1a3";
}
.fa-stumbleupon:before {
content: "\f1a4";
}
.fa-delicious:before {
content: "\f1a5";
}
.fa-digg:before {
content: "\f1a6";
}
.fa-pied-piper:before {
content: "\f1a7";
}
.fa-pied-piper-alt:before {
content: "\f1a8";
}
.fa-drupal:before {
content: "\f1a9";
}
.fa-joomla:before {
content: "\f1aa";
}
.fa-language:before {
content: "\f1ab";
}
.fa-fax:before {
content: "\f1ac";
}
.fa-building:before {
content: "\f1ad";
}
.fa-child:before {
content: "\f1ae";
}
.fa-paw:before {
content: "\f1b0";
}
.fa-spoon:before {
content: "\f1b1";
}
.fa-cube:before {
content: "\f1b2";
}
.fa-cubes:before {
content: "\f1b3";
}
.fa-behance:before {
content: "\f1b4";
}
.fa-behance-square:before {
content: "\f1b5";
}
.fa-steam:before {
content: "\f1b6";
}
.fa-steam-square:before {
content: "\f1b7";
}
.fa-recycle:before {
content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
content: "\f1ba";
}
.fa-tree:before {
content: "\f1bb";
}
.fa-spotify:before {
content: "\f1bc";
}
.fa-deviantart:before {
content: "\f1bd";
}
.fa-soundcloud:before {
content: "\f1be";
}
.fa-database:before {
content: "\f1c0";
}
.fa-file-pdf-o:before {
content: "\f1c1";
}
.fa-file-word-o:before {
content: "\f1c2";
}
.fa-file-excel-o:before {
content: "\f1c3";
}
.fa-file-powerpoint-o:before {
content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
content: "\f1c8";
}
.fa-file-code-o:before {
content: "\f1c9";
}
.fa-vine:before {
content: "\f1ca";
}
.fa-codepen:before {
content: "\f1cb";
}
.fa-jsfiddle:before {
content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
content: "\f1cd";
}
.fa-circle-o-notch:before {
content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
content: "\f1d1";
}
.fa-git-square:before {
content: "\f1d2";
}
.fa-git:before {
content: "\f1d3";
}
.fa-hacker-news:before {
content: "\f1d4";
}
.fa-tencent-weibo:before {
content: "\f1d5";
}
.fa-qq:before {
content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
content: "\f1d9";
}
.fa-history:before {
content: "\f1da";
}
.fa-circle-thin:before {
content: "\f1db";
}
.fa-header:before {
content: "\f1dc";
}
.fa-paragraph:before {
content: "\f1dd";
}
.fa-sliders:before {
content: "\f1de";
}
.fa-share-alt:before {
content: "\f1e0";
}
.fa-share-alt-square:before {
content: "\f1e1";
}
.fa-bomb:before {
content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
content: "\f1e3";
}
.fa-tty:before {
content: "\f1e4";
}
.fa-binoculars:before {
content: "\f1e5";
}
.fa-plug:before {
content: "\f1e6";
}
.fa-slideshare:before {
content: "\f1e7";
}
.fa-twitch:before {
content: "\f1e8";
}
.fa-yelp:before {
content: "\f1e9";
}
.fa-newspaper-o:before {
content: "\f1ea";
}
.fa-wifi:before {
content: "\f1eb";
}
.fa-calculator:before {
content: "\f1ec";
}
.fa-paypal:before {
content: "\f1ed";
}
.fa-google-wallet:before {
content: "\f1ee";
}
.fa-cc-visa:before {
content: "\f1f0";
}
.fa-cc-mastercard:before {
content: "\f1f1";
}
.fa-cc-discover:before {
content: "\f1f2";
}
.fa-cc-amex:before {
content: "\f1f3";
}
.fa-cc-paypal:before {
content: "\f1f4";
}
.fa-cc-stripe:before {
content: "\f1f5";
}
.fa-bell-slash:before {
content: "\f1f6";
}
.fa-bell-slash-o:before {
content: "\f1f7";
}
.fa-trash:before {
content: "\f1f8";
}
.fa-copyright:before {
content: "\f1f9";
}
.fa-at:before {
content: "\f1fa";
}
.fa-eyedropper:before {
content: "\f1fb";
}
.fa-paint-brush:before {
content: "\f1fc";
}
.fa-birthday-cake:before {
content: "\f1fd";
}
.fa-area-chart:before {
content: "\f1fe";
}
.fa-pie-chart:before {
content: "\f200";
}
.fa-line-chart:before {
content: "\f201";
}
.fa-lastfm:before {
content: "\f202";
}
.fa-lastfm-square:before {
content: "\f203";
}
.fa-toggle-off:before {
content: "\f204";
}
.fa-toggle-on:before {
content: "\f205";
}
.fa-bicycle:before {
content: "\f206";
}
.fa-bus:before {
content: "\f207";
}
.fa-ioxhost:before {
content: "\f208";
}
.fa-angellist:before {
content: "\f209";
}
.fa-cc:before {
content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
content: "\f20b";
}
.fa-meanpath:before {
content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
-o-transform: translate(0, 0);
transform: translate(0, 0);
}
code {
color: #000;
}
pre {
font-size: inherit;
line-height: inherit;
}
label {
font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.corner-all {
border-radius: 2px;
}
.no-padding {
padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell https://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer. It allows the usage of flexible box
model layouts accross multiple browsers, including older browsers. The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below). Browsers that are known to implement this
new spec completely include:
Firefox 28.0+
Chrome 29.0+
Internet Explorer 11+
Opera 17.0+
Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
.hbox > * {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
}
.vbox {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
.vbox > * {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
/* Old browsers */
-webkit-box-direction: reverse;
-moz-box-direction: reverse;
box-direction: reverse;
/* Modern browsers */
flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
/* Old browsers */
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
/* Modern browsers */
flex: none;
width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
/* Old browsers */
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
/* Old browsers */
-webkit-box-flex: 2;
-moz-box-flex: 2;
box-flex: 2;
/* Modern browsers */
flex: 2;
}
.box-group1 {
/* Deprecated */
-webkit-box-flex-group: 1;
-moz-box-flex-group: 1;
box-flex-group: 1;
}
.box-group2 {
/* Deprecated */
-webkit-box-flex-group: 2;
-moz-box-flex-group: 2;
box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
/* Old browsers */
-webkit-box-pack: start;
-moz-box-pack: start;
box-pack: start;
/* Modern browsers */
justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
/* Old browsers */
-webkit-box-pack: end;
-moz-box-pack: end;
box-pack: end;
/* Modern browsers */
justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
/* Old browsers */
-webkit-box-pack: center;
-moz-box-pack: center;
box-pack: center;
/* Modern browsers */
justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
/* Old browsers */
-webkit-box-pack: baseline;
-moz-box-pack: baseline;
box-pack: baseline;
/* Modern browsers */
justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
/* Old browsers */
-webkit-box-pack: stretch;
-moz-box-pack: stretch;
box-pack: stretch;
/* Modern browsers */
justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
/* Old browsers */
-webkit-box-align: start;
-moz-box-align: start;
box-align: start;
/* Modern browsers */
align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
/* Old browsers */
-webkit-box-align: end;
-moz-box-align: end;
box-align: end;
/* Modern browsers */
align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
/* Old browsers */
-webkit-box-align: center;
-moz-box-align: center;
box-align: center;
/* Modern browsers */
align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
/* Old browsers */
-webkit-box-align: baseline;
-moz-box-align: baseline;
box-align: baseline;
/* Modern browsers */
align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
/* Old browsers */
-webkit-box-align: stretch;
-moz-box-align: stretch;
box-align: stretch;
/* Modern browsers */
align-items: stretch;
}
div.error {
margin: 2em;
text-align: center;
}
div.error > h1 {
font-size: 500%;
line-height: normal;
}
div.error > p {
font-size: 200%;
line-height: normal;
}
div.traceback-wrapper {
text-align: left;
max-width: 800px;
margin: auto;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
body {
background-color: #fff;
/* This makes sure that the body covers the entire window and needs to
be in a different element than the display: box in wrapper below */
position: absolute;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
overflow: visible;
}
body > #header {
/* Initially hidden to prevent FLOUC */
display: none;
background-color: #fff;
/* Display over codemirror */
position: relative;
z-index: 100;
}
body > #header #header-container {
padding-bottom: 5px;
padding-top: 5px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
body > #header .header-bar {
width: 100%;
height: 1px;
background: #e7e7e7;
margin-bottom: -1px;
}
@media print {
body > #header {
display: none !important;
}
}
#header-spacer {
width: 100%;
visibility: hidden;
}
@media print {
#header-spacer {
display: none;
}
}
#ipython_notebook {
padding-left: 0px;
padding-top: 1px;
padding-bottom: 1px;
}
@media (max-width: 991px) {
#ipython_notebook {
margin-left: 10px;
}
}
[dir="rtl"] #ipython_notebook {
float: right !important;
}
#noscript {
width: auto;
padding-top: 16px;
padding-bottom: 16px;
text-align: center;
font-size: 22px;
color: red;
font-weight: bold;
}
#ipython_notebook img {
height: 28px;
}
#site {
width: 100%;
display: none;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
overflow: auto;
}
@media print {
#site {
height: auto !important;
}
}
/* Smaller buttons */
.ui-button .ui-button-text {
padding: 0.2em 0.8em;
font-size: 77%;
}
input.ui-button {
padding: 0.3em 0.9em;
}
span#login_widget {
float: right;
}
span#login_widget > .button,
#logout {
color: #333;
background-color: #fff;
border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
background-color: #fff;
border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
color: #fff;
background-color: #333;
}
.nav-header {
text-transform: none;
}
#header > span {
margin-top: 10px;
}
.modal_stretch .modal-dialog {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
max-height: calc(100vh - 200px);
overflow: auto;
flex: 1;
}
@media (min-width: 768px) {
.modal .modal-dialog {
width: 700px;
}
}
@media (min-width: 768px) {
select.form-control {
margin-left: 12px;
margin-right: 12px;
}
}
/*!
*
* IPython auth
*
*/
.center-nav {
display: inline-block;
margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
background-color: none;
display: inline;
}
.alternate_upload.form {
padding: 0;
margin: 0;
}
.alternate_upload input.fileinput {
text-align: center;
vertical-align: middle;
display: inline;
opacity: 0;
z-index: 2;
width: 12ex;
margin-right: -12ex;
}
.alternate_upload .btn-upload {
height: 22px;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
[dir="rtl"] #tabs li {
float: right;
}
ul#tabs {
margin-bottom: 4px;
}
[dir="rtl"] ul#tabs {
margin-right: 0px;
}
ul#tabs a {
padding-top: 6px;
padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
text-decoration: none;
}
ul.breadcrumb i.icon-home {
font-size: 16px;
margin-right: 4px;
}
ul.breadcrumb span {
color: #5e5e5e;
}
.list_toolbar {
padding: 4px 0 4px 0;
vertical-align: middle;
}
.list_toolbar .tree-buttons {
padding-top: 1px;
}
[dir="rtl"] .list_toolbar .tree-buttons {
float: left !important;
}
[dir="rtl"] .list_toolbar .pull-right {
padding-top: 1px;
float: left !important;
}
[dir="rtl"] .list_toolbar .pull-left {
float: right !important;
}
.dynamic-buttons {
padding-top: 3px;
display: inline-block;
}
.list_toolbar [class*="span"] {
min-height: 24px;
}
.list_header {
font-weight: bold;
background-color: #EEE;
}
.list_placeholder {
font-weight: bold;
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
}
.list_container {
margin-top: 4px;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 2px;
}
.list_container > div {
border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
background-color: red;
}
.list_container > div:last-child {
border: none;
}
.list_item:hover .list_item {
background-color: #ddd;
}
.list_item a {
text-decoration: none;
}
.list_item:hover {
background-color: #fafafa;
}
.list_header > div,
.list_item > div {
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
line-height: 22px;
}
.list_header > div input,
.list_item > div input {
margin-right: 7px;
margin-left: 14px;
vertical-align: baseline;
line-height: 22px;
position: relative;
top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
margin-left: -1px;
vertical-align: baseline;
line-height: 22px;
}
.new-file input[type=checkbox] {
visibility: hidden;
}
.item_name {
line-height: 22px;
height: 24px;
}
.item_icon {
font-size: 14px;
color: #5e5e5e;
margin-right: 7px;
margin-left: 7px;
line-height: 22px;
vertical-align: baseline;
}
.item_buttons {
line-height: 1em;
margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
margin-left: 5px;
}
.item_buttons .btn {
min-width: 13ex;
}
.item_buttons .running-indicator {
padding-top: 4px;
color: #5cb85c;
}
.item_buttons .kernel-name {
padding-top: 4px;
color: #5bc0de;
margin-right: 7px;
float: left;
}
.toolbar_info {
height: 24px;
line-height: 24px;
}
.list_item input:not([type=checkbox]) {
padding-top: 3px;
padding-bottom: 3px;
height: 22px;
line-height: 14px;
margin: 0px;
}
.highlight_text {
color: blue;
}
#project_name {
display: inline-block;
padding-left: 7px;
margin-left: -2px;
}
#project_name > .breadcrumb {
padding: 0px;
margin-bottom: 0px;
background-color: transparent;
font-weight: bold;
}
#tree-selector {
padding-right: 0px;
}
[dir="rtl"] #tree-selector a {
float: right;
}
#button-select-all {
min-width: 50px;
}
#select-all {
margin-left: 7px;
margin-right: 2px;
}
.menu_icon {
margin-right: 2px;
}
.tab-content .row {
margin-left: 0px;
margin-right: 0px;
}
.folder_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f114";
}
.folder_icon:before.pull-left {
margin-right: .3em;
}
.folder_icon:before.pull-right {
margin-left: .3em;
}
.notebook_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f02d";
position: relative;
top: -1px;
}
.notebook_icon:before.pull-left {
margin-right: .3em;
}
.notebook_icon:before.pull-right {
margin-left: .3em;
}
.running_notebook_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f02d";
position: relative;
top: -1px;
color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
margin-left: .3em;
}
.file_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f016";
position: relative;
top: -2px;
}
.file_icon:before.pull-left {
margin-right: .3em;
}
.file_icon:before.pull-right {
margin-left: .3em;
}
#notebook_toolbar .pull-right {
padding-top: 0px;
margin-right: -1px;
}
ul#new-menu {
left: auto;
right: 0;
}
[dir="rtl"] #new-menu {
text-align: right;
}
.kernel-menu-icon {
padding-right: 12px;
width: 24px;
content: "\f096";
}
.kernel-menu-icon:before {
content: "\f096";
}
.kernel-menu-icon-current:before {
content: "\f00c";
}
#tab_content {
padding-top: 20px;
}
#running .panel-group .panel {
margin-top: 3px;
margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
background-color: #EEE;
padding-top: 4px;
padding-bottom: 4px;
padding-left: 7px;
padding-right: 7px;
line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
text-decoration: none;
}
#running .panel-group .panel .panel-body {
padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
margin-top: 0px;
margin-bottom: 0px;
border: 0px;
border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
border-bottom: 0px;
}
[dir="rtl"] #running .col-sm-8 {
float: right !important;
}
.delete-button {
display: none;
}
.duplicate-button {
display: none;
}
.rename-button {
display: none;
}
.shutdown-button {
display: none;
}
.dynamic-instructions {
display: inline-block;
padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
padding: 0px 5px;
}
.selected-keymap i.fa:before {
content: "\f00c";
}
#mode-menu {
overflow: auto;
max-height: 20em;
}
.edit_app #header {
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
/* Use a negative 1 bottom margin, so the border overlaps the border of the
header */
margin-bottom: -1px;
}
.dirty-indicator {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator.pull-left {
margin-right: .3em;
}
.dirty-indicator.pull-right {
margin-left: .3em;
}
.dirty-indicator-dirty {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator-dirty.pull-left {
margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
margin-left: .3em;
}
.dirty-indicator-clean {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
width: 20px;
}
.dirty-indicator-clean.pull-left {
margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
margin-left: .3em;
}
.dirty-indicator-clean:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
margin-left: .3em;
}
#filename {
font-size: 16pt;
display: table;
padding: 0px 5px;
}
#current-mode {
padding-left: 5px;
padding-right: 5px;
}
#texteditor-backdrop {
padding-top: 20px;
padding-bottom: 20px;
}
@media not print {
#texteditor-backdrop {
background-color: #EEE;
}
}
@media print {
#texteditor-backdrop #texteditor-container .CodeMirror-gutter,
#texteditor-backdrop #texteditor-container .CodeMirror-gutters {
background-color: #fff;
}
}
@media not print {
#texteditor-backdrop #texteditor-container .CodeMirror-gutter,
#texteditor-backdrop #texteditor-container .CodeMirror-gutters {
background-color: #fff;
}
}
@media not print {
#texteditor-backdrop #texteditor-container {
padding: 0px;
background-color: #fff;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
color: black;
}
.ansired {
color: darkred;
}
.ansigreen {
color: darkgreen;
}
.ansiyellow {
color: #c4a000;
}
.ansiblue {
color: darkblue;
}
.ansipurple {
color: darkviolet;
}
.ansicyan {
color: steelblue;
}
.ansigray {
color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
background-color: black;
}
.ansibgred {
background-color: red;
}
.ansibggreen {
background-color: green;
}
.ansibgyellow {
background-color: yellow;
}
.ansibgblue {
background-color: blue;
}
.ansibgpurple {
background-color: magenta;
}
.ansibgcyan {
background-color: cyan;
}
.ansibggray {
background-color: gray;
}
div.cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
border-radius: 2px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
border-width: 1px;
border-style: solid;
border-color: transparent;
width: 100%;
padding: 5px;
/* This acts as a spacer between cells, that is outside the border */
margin: 0px;
outline: none;
border-left-width: 1px;
padding-left: 5px;
background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
border-left-color: #90CAF9;
border-left-color: #E3F2FD;
border-left-width: 1px;
padding-left: 5px;
border-right-color: #E3F2FD;
border-right-width: 1px;
background: #E3F2FD;
}
@media print {
div.cell.jupyter-soft-selected {
border-color: transparent;
}
}
div.cell.selected {
border-color: #ababab;
border-left-width: 0px;
padding-left: 6px;
background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
div.cell.selected {
border-color: transparent;
}
}
div.cell.selected.jupyter-soft-selected {
border-left-width: 0;
padding-left: 6px;
background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
border-color: #66BB6A;
border-left-width: 0px;
padding-left: 6px;
background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
.edit_mode div.cell.selected {
border-color: transparent;
}
}
.prompt {
/* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
min-width: 14ex;
/* This padding is tuned to match the padding on the CodeMirror editor. */
padding: 0.4em;
margin: 0px;
font-family: monospace;
text-align: right;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
/* Don't highlight prompt number selection */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
/* Use default cursor */
cursor: default;
}
@media (max-width: 540px) {
.prompt {
text-align: left;
}
}
div.inner_cell {
min-width: 0;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
border: 1px solid #cfcfcf;
border-radius: 2px;
background: #f7f7f7;
line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
is no content in the output_subarea and the prompt. The main purpose of this is
to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
padding-top: 0;
padding-bottom: 0;
}
div.unrecognized_cell {
padding: 5px 5px 5px 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.unrecognized_cell .inner_cell {
border-radius: 2px;
padding: 5px;
font-weight: bold;
color: red;
border: 1px solid #cfcfcf;
background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
color: inherit;
text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
color: inherit;
text-decoration: none;
}
@media (max-width: 540px) {
div.unrecognized_cell > div.prompt {
display: none;
}
}
div.code_cell {
/* avoid page breaking on code cells when printing */
}
@media print {
div.code_cell {
page-break-inside: avoid;
}
}
/* any special styling for code cells that are currently running goes here */
div.input {
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.input {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
color: #303F9F;
border-top: 1px solid transparent;
}
div.input_area > div.highlight {
margin: 0.4em;
border: none;
padding: 0px;
background-color: transparent;
}
div.input_area > div.highlight > pre {
margin: 0px;
border: none;
padding: 0px;
background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
* monospace font with inconsistent normal/bold/italic height. See
* notebookmain.js. Such fonts will have keywords vertically offset with
* respect to the rest of the text. The user should select a better font.
* See: https://github.com/ipython/ipython/issues/1503
*
* .CodeMirror span {
* vertical-align: bottom;
* }
*/
.CodeMirror {
line-height: 1.21429em;
/* Changed from 1em to our global default */
font-size: 14px;
height: auto;
/* Changed to auto to autogrow */
background: none;
/* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
/* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
/* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
overflow-y: hidden;
overflow-x: auto;
}
.CodeMirror-lines {
/* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
/* we have set a different line-height and want this to scale with that. */
padding: 0.4em;
}
.CodeMirror-linenumber {
padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
border-bottom-left-radius: 2px;
border-top-left-radius: 2px;
}
.CodeMirror pre {
/* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
/* .CodeMirror-lines */
padding: 0;
border: 0;
border-radius: 0;
}
/*
Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme
*/
.highlight-base {
color: #000;
}
.highlight-variable {
color: #000;
}
.highlight-variable-2 {
color: #1a1a1a;
}
.highlight-variable-3 {
color: #333333;
}
.highlight-string {
color: #BA2121;
}
.highlight-comment {
color: #408080;
font-style: italic;
}
.highlight-number {
color: #080;
}
.highlight-atom {
color: #88F;
}
.highlight-keyword {
color: #008000;
font-weight: bold;
}
.highlight-builtin {
color: #008000;
}
.highlight-error {
color: #f00;
}
.highlight-operator {
color: #AA22FF;
font-weight: bold;
}
.highlight-meta {
color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
color: #00f;
}
.highlight-string-2 {
color: #f50;
}
.highlight-qualifier {
color: #555;
}
.highlight-bracket {
color: #997;
}
.highlight-tag {
color: #170;
}
.highlight-attribute {
color: #00c;
}
.highlight-header {
color: blue;
}
.highlight-quote {
color: #090;
}
.highlight-link {
color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
color: #008000;
font-weight: bold;
}
.cm-s-ipython span.cm-atom {
color: #88F;
}
.cm-s-ipython span.cm-number {
color: #080;
}
.cm-s-ipython span.cm-def {
color: #00f;
}
.cm-s-ipython span.cm-variable {
color: #000;
}
.cm-s-ipython span.cm-operator {
color: #AA22FF;
font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
color: #333333;
}
.cm-s-ipython span.cm-comment {
color: #408080;
font-style: italic;
}
.cm-s-ipython span.cm-string {
color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
color: #f50;
}
.cm-s-ipython span.cm-meta {
color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
color: #555;
}
.cm-s-ipython span.cm-builtin {
color: #008000;
}
.cm-s-ipython span.cm-bracket {
color: #997;
}
.cm-s-ipython span.cm-tag {
color: #170;
}
.cm-s-ipython span.cm-attribute {
color: #00c;
}
.cm-s-ipython span.cm-header {
color: blue;
}
.cm-s-ipython span.cm-quote {
color: #090;
}
.cm-s-ipython span.cm-link {
color: #00c;
}
.cm-s-ipython span.cm-error {
color: #f00;
}
.cm-s-ipython span.cm-tab {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
background-position: right;
background-repeat: no-repeat;
}
div.output_wrapper {
/* this position must be relative to enable descendents to be absolute within it */
position: relative;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
/* ideally, this would be max-height, but FF barfs all over that */
height: 24em;
/* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
width: 100%;
overflow: auto;
border-radius: 2px;
-webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
margin: 0px;
padding: 0px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
div.out_prompt_overlay {
height: 100%;
padding: 0px 0.4em;
position: absolute;
border-radius: 2px;
}
div.out_prompt_overlay:hover {
/* use inner shadow to get border that is computed the same on WebKit/FF */
-webkit-box-shadow: inset 0 0 1px #000;
box-shadow: inset 0 0 1px #000;
background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
padding: 0px;
page-break-inside: avoid;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
div.output_area .MathJax_Display {
text-align: left !important;
}
div.output_area .rendered_html table {
margin-left: 0;
margin-right: 0;
}
div.output_area .rendered_html img {
margin-left: 0;
margin-right: 0;
}
div.output_area img,
div.output_area svg {
max-width: 100%;
height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
max-width: none;
}
/* This is needed to protect the pre formating from global settings such
as that of bootstrap */
.output {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
@media (max-width: 540px) {
div.output_area {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: vertical;
-moz-box-align: stretch;
display: box;
box-orient: vertical;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: column;
align-items: stretch;
}
}
div.output_area pre {
margin: 0;
padding: 0;
border: 0;
vertical-align: baseline;
color: black;
background-color: transparent;
border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
the prompt div. */
div.output_subarea {
overflow-x: auto;
padding: 0.4em;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
output types */
/* all text output has this class: */
div.output_text {
text-align: left;
color: #000;
/* This has to match that of the the CodeMirror class line-height below */
line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
background: #fdd;
/* very light red background for stderr */
}
div.output_latex {
text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
padding: 0;
}
.js-error {
color: darkred;
}
/* raw_input styles */
div.raw_input_container {
line-height: 1.21429em;
padding-top: 5px;
}
pre.raw_input_prompt {
/* nothing needed here. */
}
input.raw_input {
font-family: monospace;
font-size: inherit;
color: inherit;
width: auto;
/* make sure input baseline aligns with prompt */
vertical-align: baseline;
/* padding + margin = 0.5em between prompt and cursor */
padding: 0em 0.25em;
margin: 0em 0.25em;
}
input.raw_input:focus {
box-shadow: none;
}
p.p-space {
margin-bottom: 10px;
}
div.output_unrecognized {
padding: 5px;
font-weight: bold;
color: red;
}
div.output_unrecognized a {
color: inherit;
text-decoration: none;
}
div.output_unrecognized a:hover {
color: inherit;
text-decoration: none;
}
.rendered_html {
color: #000;
/* any extras will just be numbers: */
}
.rendered_html em {
font-style: italic;
}
.rendered_html strong {
font-weight: bold;
}
.rendered_html u {
text-decoration: underline;
}
.rendered_html :link {
text-decoration: underline;
}
.rendered_html :visited {
text-decoration: underline;
}
.rendered_html h1 {
font-size: 185.7%;
margin: 1.08em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h2 {
font-size: 157.1%;
margin: 1.27em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h3 {
font-size: 128.6%;
margin: 1.55em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h4 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
}
.rendered_html h5 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h6 {
font-size: 100%;
margin: 2em 0 0 0;
font-weight: bold;
line-height: 1.0;
font-style: italic;
}
.rendered_html h1:first-child {
margin-top: 0.538em;
}
.rendered_html h2:first-child {
margin-top: 0.636em;
}
.rendered_html h3:first-child {
margin-top: 0.777em;
}
.rendered_html h4:first-child {
margin-top: 1em;
}
.rendered_html h5:first-child {
margin-top: 1em;
}
.rendered_html h6:first-child {
margin-top: 1em;
}
.rendered_html ul {
list-style: disc;
margin: 0em 2em;
padding-left: 0px;
}
.rendered_html ul ul {
list-style: square;
margin: 0em 2em;
}
.rendered_html ul ul ul {
list-style: circle;
margin: 0em 2em;
}
.rendered_html ol {
list-style: decimal;
margin: 0em 2em;
padding-left: 0px;
}
.rendered_html ol ol {
list-style: upper-alpha;
margin: 0em 2em;
}
.rendered_html ol ol ol {
list-style: lower-alpha;
margin: 0em 2em;
}
.rendered_html ol ol ol ol {
list-style: lower-roman;
margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
list-style: decimal;
margin: 0em 2em;
}
.rendered_html * + ul {
margin-top: 1em;
}
.rendered_html * + ol {
margin-top: 1em;
}
.rendered_html hr {
color: black;
background-color: black;
}
.rendered_html pre {
margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
border: 0;
background-color: #fff;
color: #000;
font-size: 100%;
padding: 0px;
}
.rendered_html blockquote {
margin: 1em 2em;
}
.rendered_html table {
margin-left: auto;
margin-right: auto;
border: 1px solid black;
border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
border: 1px solid black;
border-collapse: collapse;
margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
text-align: left;
vertical-align: middle;
padding: 4px;
}
.rendered_html th {
font-weight: bold;
}
.rendered_html * + table {
margin-top: 1em;
}
.rendered_html p {
text-align: left;
}
.rendered_html * + p {
margin-top: 1em;
}
.rendered_html img {
display: block;
margin-left: auto;
margin-right: auto;
}
.rendered_html * + img {
margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
max-width: 100%;
height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
max-width: none;
}
div.text_cell {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
}
@media (max-width: 540px) {
div.text_cell > div.prompt {
display: none;
}
}
div.text_cell_render {
/*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
outline: none;
resize: none;
width: inherit;
border-style: none;
padding: 0.5em 0.5em 0.5em 0.4em;
color: #000;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
a.anchor-link:link {
text-decoration: none;
padding: 0px 20px;
visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
visibility: visible;
}
.text_cell.rendered .input_area {
display: none;
}
.text_cell.rendered .rendered_html {
overflow-x: auto;
overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
font-weight: bold;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
font-size: 185.7%;
}
.cm-header-2 {
font-size: 157.1%;
}
.cm-header-3 {
font-size: 128.6%;
}
.cm-header-4 {
font-size: 110%;
}
.cm-header-5 {
font-size: 100%;
font-style: italic;
}
.cm-header-6 {
font-size: 100%;
font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
.notebook_app {
padding-left: 0px;
padding-right: 0px;
}
}
#ipython-main-app {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
height: 100%;
}
div#notebook_panel {
margin: 0px;
padding: 0px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
height: 100%;
}
div#notebook {
font-size: 14px;
line-height: 20px;
overflow-y: hidden;
overflow-x: auto;
width: 100%;
/* This spaces the page away from the edge of the notebook area */
padding-top: 20px;
margin: 0px;
outline: none;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
min-height: 100%;
}
@media not print {
#notebook-container {
padding: 15px;
background-color: #fff;
min-height: 0;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
}
@media print {
#notebook-container {
width: 100%;
}
}
div.ui-widget-content {
border: 1px solid #ababab;
outline: none;
}
pre.dialog {
background-color: #f7f7f7;
border: 1px solid #ddd;
border-radius: 2px;
padding: 0.4em;
padding-left: 2em;
}
p.dialog {
padding: 0.2em;
}
/* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
*/
pre,
code,
kbd,
samp {
white-space: pre-wrap;
}
#fonttest {
font-family: monospace;
}
p {
margin-bottom: 0;
}
.end_space {
min-height: 100px;
transition: height .2s ease;
}
.notebook_app > #header {
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
.notebook_app {
background-color: #EEE;
}
}
kbd {
border-style: solid;
border-width: 1px;
box-shadow: none;
margin: 2px;
padding-left: 2px;
padding-right: 2px;
padding-top: 1px;
padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
border: thin solid #CFCFCF;
border-bottom: none;
background: #EEE;
border-radius: 2px 2px 0px 0px;
width: 100%;
height: 29px;
padding-right: 4px;
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
/* Old browsers */
-webkit-box-pack: end;
-moz-box-pack: end;
box-pack: end;
/* Modern browsers */
justify-content: flex-end;
display: -webkit-flex;
}
@media print {
.celltoolbar {
display: none;
}
}
.ctb_hideshow {
display: none;
vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
border: 1px solid #cfcfcf;
}
.celltoolbar {
font-size: 87%;
padding-top: 3px;
}
.celltoolbar select {
display: block;
width: 100%;
height: 32px;
padding: 6px 12px;
font-size: 13px;
line-height: 1.42857143;
color: #555555;
background-color: #fff;
background-image: none;
border: 1px solid #ccc;
border-radius: 2px;
-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
height: 30px;
padding: 5px 10px;
font-size: 12px;
line-height: 1.5;
border-radius: 1px;
width: inherit;
font-size: inherit;
height: 22px;
padding: 0px;
display: inline-block;
}
.celltoolbar select:focus {
border-color: #66afe9;
outline: 0;
-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
color: #999;
opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
color: #999;
}
.celltoolbar select::-ms-expand {
border: 0;
background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
background-color: #eeeeee;
opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
cursor: not-allowed;
}
textarea.celltoolbar select {
height: auto;
}
select.celltoolbar select {
height: 30px;
line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
height: auto;
}
.celltoolbar label {
margin-left: 5px;
margin-right: 5px;
}
.completions {
position: absolute;
z-index: 110;
overflow: hidden;
border: 1px solid #ababab;
border-radius: 2px;
-webkit-box-shadow: 0px 6px 10px -1px #adadad;
box-shadow: 0px 6px 10px -1px #adadad;
line-height: 1;
}
.completions select {
background: white;
outline: none;
border: none;
padding: 0px;
margin: 0px;
overflow: auto;
font-family: monospace;
font-size: 110%;
color: #000;
width: auto;
}
.completions select option.context {
color: #286090;
}
#kernel_logo_widget {
float: right !important;
float: right;
}
#kernel_logo_widget .current_kernel_logo {
display: none;
margin-top: -1px;
margin-bottom: -1px;
width: 32px;
height: 32px;
}
#menubar {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
margin-top: 1px;
}
#menubar .navbar {
border-top: 1px;
border-radius: 0px 0px 2px 2px;
margin-bottom: 0px;
}
#menubar .navbar-toggle {
float: left;
padding-top: 7px;
padding-bottom: 7px;
border: none;
}
#menubar .navbar-collapse {
clear: left;
}
.nav-wrapper {
border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
padding-top: 4px;
}
ul#help_menu li a {
overflow: hidden;
padding-right: 2.2em;
}
ul#help_menu li a i {
margin-right: -1.2em;
}
.dropdown-submenu {
position: relative;
}
.dropdown-submenu > .dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
display: block;
}
.dropdown-submenu > a:after {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
display: block;
content: "\f0da";
float: right;
color: #333333;
margin-top: 2px;
margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
color: #262626;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
left: -100%;
margin-left: 10px;
}
#notification_area {
float: right !important;
float: right;
z-index: 10;
}
.indicator_area {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
}
#kernel_indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
padding-left: 5px;
padding-right: 5px;
}
#modal_indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
}
#readonly-indicator {
float: right !important;
float: right;
color: #777;
margin-left: 5px;
margin-right: 5px;
width: 11px;
z-index: 10;
text-align: center;
width: auto;
margin-top: 2px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 0px;
display: none;
}
.modal_indicator:before {
width: 1.28571429em;
text-align: center;
}
.edit_mode .modal_indicator:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
margin-left: .3em;
}
.command_mode .modal_indicator:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
margin-left: .3em;
}
.kernel_idle_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
margin-left: .3em;
}
.kernel_busy_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f111";
}
.kernel_busy_icon:before.pull-left {
margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
margin-left: .3em;
}
.kernel_dead_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
margin-left: .3em;
}
.kernel_disconnected_icon:before {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
margin-left: .3em;
}
.notification_widget {
color: #777;
z-index: 10;
background: rgba(240, 240, 240, 0.5);
margin-right: 4px;
color: #333;
background-color: #fff;
border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
color: #333;
background-color: #e6e6e6;
border-color: #8c8c8c;
}
.notification_widget:hover {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
color: #333;
background-color: #e6e6e6;
border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
color: #333;
background-color: #d4d4d4;
border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
background-color: #fff;
border-color: #ccc;
}
.notification_widget .badge {
color: #fff;
background-color: #333;
}
.notification_widget.warning {
color: #fff;
background-color: #f0ad4e;
border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
color: #fff;
background-color: #ec971f;
border-color: #985f0d;
}
.notification_widget.warning:hover {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
color: #fff;
background-color: #ec971f;
border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
color: #fff;
background-color: #d58512;
border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
background-color: #f0ad4e;
border-color: #eea236;
}
.notification_widget.warning .badge {
color: #f0ad4e;
background-color: #fff;
}
.notification_widget.success {
color: #fff;
background-color: #5cb85c;
border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
color: #fff;
background-color: #449d44;
border-color: #255625;
}
.notification_widget.success:hover {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
color: #fff;
background-color: #449d44;
border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
color: #fff;
background-color: #398439;
border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
background-color: #5cb85c;
border-color: #4cae4c;
}
.notification_widget.success .badge {
color: #5cb85c;
background-color: #fff;
}
.notification_widget.info {
color: #fff;
background-color: #5bc0de;
border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
color: #fff;
background-color: #31b0d5;
border-color: #1b6d85;
}
.notification_widget.info:hover {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
color: #fff;
background-color: #31b0d5;
border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
color: #fff;
background-color: #269abc;
border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
background-color: #5bc0de;
border-color: #46b8da;
}
.notification_widget.info .badge {
color: #5bc0de;
background-color: #fff;
}
.notification_widget.danger {
color: #fff;
background-color: #d9534f;
border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
color: #fff;
background-color: #c9302c;
border-color: #761c19;
}
.notification_widget.danger:hover {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
color: #fff;
background-color: #c9302c;
border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
color: #fff;
background-color: #ac2925;
border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
background-color: #d9534f;
border-color: #d43f3a;
}
.notification_widget.danger .badge {
color: #d9534f;
background-color: #fff;
}
div#pager {
background-color: #fff;
font-size: 14px;
line-height: 20px;
overflow: hidden;
display: none;
position: fixed;
bottom: 0px;
width: 100%;
max-height: 50%;
padding-top: 8px;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
/* Display over codemirror */
z-index: 100;
/* Hack which prevents jquery ui resizable from changing top. */
top: auto !important;
}
div#pager pre {
line-height: 1.21429em;
color: #000;
background-color: #f7f7f7;
padding: 0.4em;
}
div#pager #pager-button-area {
position: absolute;
top: 8px;
right: 20px;
}
div#pager #pager-contents {
position: relative;
overflow: auto;
width: 100%;
height: 100%;
}
div#pager #pager-contents #pager-container {
position: relative;
padding: 15px 0px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
top: 0px;
height: 8px;
background: #f7f7f7;
border-top: 1px solid #cfcfcf;
border-bottom: 1px solid #cfcfcf;
/* This injects handle bars (a short, wide = symbol) for
the resize handle. */
}
div#pager .ui-resizable-handle::after {
content: '';
top: 2px;
left: 50%;
height: 3px;
width: 30px;
margin-left: -15px;
position: absolute;
border-top: 1px solid #cfcfcf;
}
.quickhelp {
/* Old browsers */
display: -webkit-box;
-webkit-box-orient: horizontal;
-webkit-box-align: stretch;
display: -moz-box;
-moz-box-orient: horizontal;
-moz-box-align: stretch;
display: box;
box-orient: horizontal;
box-align: stretch;
/* Modern browsers */
display: flex;
flex-direction: row;
align-items: stretch;
line-height: 1.8em;
}
.shortcut_key {
display: inline-block;
width: 21ex;
text-align: right;
font-family: monospace;
}
.shortcut_descr {
display: inline-block;
/* Old browsers */
-webkit-box-flex: 1;
-moz-box-flex: 1;
box-flex: 1;
/* Modern browsers */
flex: 1;
}
span.save_widget {
margin-top: 6px;
}
span.save_widget span.filename {
height: 1em;
line-height: 1em;
padding: 3px;
margin-left: 16px;
border: none;
font-size: 146.5%;
border-radius: 2px;
}
span.save_widget span.filename:hover {
background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
font-size: small;
}
@media (max-width: 767px) {
span.save_widget {
font-size: small;
}
span.checkpoint_status,
span.autosave_status {
display: none;
}
}
@media (min-width: 768px) and (max-width: 991px) {
span.checkpoint_status {
display: none;
}
span.autosave_status {
font-size: x-small;
}
}
.toolbar {
padding: 0px;
margin-left: -5px;
margin-top: 2px;
margin-bottom: 5px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
width: auto;
vertical-align: middle;
margin-right: 2px;
margin-bottom: 0px;
display: inline;
font-size: 92%;
margin-left: 0.3em;
margin-right: 0.3em;
padding: 0px;
padding-top: 3px;
}
.toolbar .btn {
padding: 2px 8px;
}
.toolbar .btn-group {
margin-top: 0px;
margin-left: 5px;
}
#maintoolbar {
margin-bottom: -3px;
margin-top: -8px;
border: 0px;
min-height: 27px;
margin-left: 0px;
padding-top: 11px;
padding-bottom: 3px;
}
#maintoolbar .navbar-text {
float: none;
vertical-align: middle;
text-align: right;
margin-left: 5px;
margin-right: 0px;
margin-top: 0px;
}
.select-xs {
height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
background-color: #F37626;
color: white;
}
/**
* Primary styles
*
* Author: Jupyter Development Team
*/
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
* of chance of beeing generated from the ../less/[samename].less file, you can
* try to get back the less file by reverting somme commit in history
**/
/*
* We'll try to get something pretty, so we
* have some strange css to have the scroll bar on
* the left with fix button on the top right of the tooltip
*/
@-moz-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-webkit-keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@-moz-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@-webkit-keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
/*properties of tooltip after "expand"*/
.bigtooltip {
overflow: auto;
height: 200px;
-webkit-transition-property: height;
-webkit-transition-duration: 500ms;
-moz-transition-property: height;
-moz-transition-duration: 500ms;
transition-property: height;
transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
-webkit-transition-property: height;
-webkit-transition-duration: 500ms;
-moz-transition-property: height;
-moz-transition-duration: 500ms;
transition-property: height;
transition-duration: 500ms;
text-overflow: ellipsis;
overflow: hidden;
height: 80px;
}
.tooltipbuttons {
position: absolute;
padding-right: 15px;
top: 0px;
right: 0px;
}
.tooltiptext {
/*avoid the button to overlap on some docstring*/
padding-right: 30px;
}
.ipython_tooltip {
max-width: 700px;
/*fade-in animation when inserted*/
-webkit-animation: fadeOut 400ms;
-moz-animation: fadeOut 400ms;
animation: fadeOut 400ms;
-webkit-animation: fadeIn 400ms;
-moz-animation: fadeIn 400ms;
animation: fadeIn 400ms;
vertical-align: middle;
background-color: #f7f7f7;
overflow: visible;
border: #ababab 1px solid;
outline: none;
padding: 3px;
margin: 0px;
padding-left: 7px;
font-family: monospace;
min-height: 50px;
-moz-box-shadow: 0px 6px 10px -1px #adadad;
-webkit-box-shadow: 0px 6px 10px -1px #adadad;
box-shadow: 0px 6px 10px -1px #adadad;
border-radius: 2px;
position: absolute;
z-index: 1000;
}
.ipython_tooltip a {
float: right;
}
.ipython_tooltip .tooltiptext pre {
border: 0;
border-radius: 0;
font-size: 100%;
background-color: #f7f7f7;
}
.pretooltiparrow {
left: 0px;
margin: 0px;
top: -16px;
width: 40px;
height: 16px;
overflow: hidden;
position: absolute;
}
.pretooltiparrow:before {
background-color: #f7f7f7;
border: 1px #ababab solid;
z-index: 11;
content: "";
position: absolute;
left: 15px;
top: 10px;
width: 25px;
height: 25px;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
ul.typeahead-list i {
margin-left: -10px;
width: 18px;
}
ul.typeahead-list {
max-height: 80vh;
overflow: auto;
}
ul.typeahead-list > li > a {
/** Firefox bug **/
/* see https://github.com/jupyter/notebook/issues/559 */
white-space: normal;
}
.cmd-palette .modal-body {
padding: 7px;
}
.cmd-palette form {
background: white;
}
.cmd-palette input {
outline: none;
}
.no-shortcut {
display: none;
}
.command-shortcut:before {
content: "(command)";
padding-right: 3px;
color: #777777;
}
.edit-shortcut:before {
content: "(edit)";
padding-right: 3px;
color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
background-color: #BBDEFB;
border-color: #90CAF9;
border-style: solid;
border-width: 1px;
border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
background-color: #FFCDD2;
border-color: #EF9A9A;
border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
background-color: #C8E6C9;
border-color: #A5D6A7;
border-radius: 0px;
}
#find-and-replace #replace-preview {
max-height: 60vh;
overflow: auto;
}
#find-and-replace #replace-preview pre {
padding: 5px 10px;
}
.terminal-app {
background: #EEE;
}
.terminal-app #header {
background: #fff;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
width: 100%;
float: left;
font-family: monospace;
color: white;
background: black;
padding: 0.4em;
border-radius: 2px;
-webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
line-height: 1em;
font-size: 14px;
}
.terminal-app .terminal .xterm-rows {
padding: 10px;
}
.terminal-app .terminal-cursor {
color: black;
background: white;
}
.terminal-app #terminado-container {
margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
</style>
<style type="text/css">
.highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
</style>
<style type="text/css">
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }
.ansi-bold { font-weight: bold; }
</style>
<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
overflow: visible;
padding: 8px;
}
div#notebook {
overflow: visible;
border-top: none;
}
@media print {
div.cell {
display: block;
page-break-inside: avoid;
}
div.output_wrapper {
display: block;
page-break-inside: avoid;
}
div.output {
display: block;
page-break-inside: avoid;
}
}
</style>
<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">
<!-- Loading mathjax macro -->
<!-- Load mathjax -->
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
processEnvironments: true
},
// Center justify equations in code and markdown cells. Elsewhere
// we use CSS to left justify single line equations in code cells.
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<!-- End of mathjax configuration --></head>
<body>
<div tabindex="-1" id="notebook" class="border-box-sizing">
<div class="container" id="notebook-container">
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Deep-Learning-based-Email-Spam-Filter">Deep Learning based Email Spam Filter<a class="anchor-link" href="#Deep-Learning-based-Email-Spam-Filter">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Introduction">Introduction<a class="anchor-link" href="#Introduction">¶</a></h1><p>We will create the email spam filter model using deep learning and evaluate the model with other currently popular machine learning methods like xgboost, random forest, svm etc.</p>
<p>For this sample project, we will use Enron dataset in English. However this approach works well for other languages also which i had empiricially tested in my job.</p>
<p>This approach combines unsupervised learning with Supervised learning. We will generate the features in unsupervised way using TF-IDF algorithm and then use this to features to train Models on labeled enron data.</p>
<p>The code and data for this project can be obtained at :
<a href="https://github.com/sanjaymeena/Deep-Learning-based-Spam-Filter">https://github.com/sanjaymeena/Deep-Learning-based-Spam-Filter</a></p>
<p>The broad steps can be divided as :</p>
<h2 id="1.-Preprocessing:">1. Preprocessing:<a class="anchor-link" href="#1.-Preprocessing:">¶</a></h2><p>Here we will generate a pandas dataframe from the enron dataset . We will tokenize and also do some data analysis</p>
<h2 id="2.--Features-Generation-(Unsupervised-Learning)">2. Features Generation (Unsupervised Learning)<a class="anchor-link" href="#2.--Features-Generation-(Unsupervised-Learning)">¶</a></h2><p>We will use <a href="https://en.wikipedia.org/wiki/Tf%E2%80%93idf">TF-IDF</a> as features to be used for training the models.</p>
<h2 id="3.-Model-Training">3. Model Training<a class="anchor-link" href="#3.-Model-Training">¶</a></h2><ul>
<li>We will train a 3-layered deep learning model. </li>
<li>We will also train Random forest, SVM and Xgboost for comparison purpose.</li>
<li>We will the same tf-idf features for all the models </li>
</ul>
<h2 id="4.-Result-Analysis-and-iterate-to-improve-the-performnce">4. Result Analysis and iterate to improve the performnce<a class="anchor-link" href="#4.-Result-Analysis-and-iterate-to-improve-the-performnce">¶</a></h2><ul>
<li>We will present our results in nice and informative way to provide good comparison information. </li>
</ul>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="1.-Preprocessing">1. Preprocessing<a class="anchor-link" href="#1.-Preprocessing">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [1]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Load required libraries</span>
<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">import</span> <span class="nn">time</span>
<span class="kn">import</span> <span class="nn">pickle</span>
<span class="kn">import</span> <span class="nn">seaborn</span> <span class="k">as</span> <span class="nn">sns</span>
<span class="kn">import</span> <span class="nn">sys</span>
<span class="n">sys</span><span class="o">.</span><span class="n">setrecursionlimit</span><span class="p">(</span><span class="mi">1500</span><span class="p">)</span>
<span class="o">%</span><span class="k">matplotlib</span> inline
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Preparing-Enron-Data">Preparing Enron Data<a class="anchor-link" href="#Preparing-Enron-Data">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will extract and load the Enron spam data in Pandas Dataframe.</p>
<p>Enron data combined with Spam assasin dataset has been obtained from : <a href="https://www.cs.bgu.ac.il/~elhadad/nlp16/spam_classifier.html">https://www.cs.bgu.ac.il/~elhadad/nlp16/spam_classifier.html</a> and I also used their code to process the data into Pandas dataframe</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [2]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">end_val</span><span class="p">,</span> <span class="n">bar_length</span><span class="o">=</span><span class="mi">50</span><span class="p">):</span>
<span class="sd">'''</span>
<span class="sd"> Print a progress bar of the form: Percent: [##### ]</span>
<span class="sd"> i is the current progress value expected in a range [0..end_val]</span>
<span class="sd"> bar_length is the width of the progress bar on the screen.</span>
<span class="sd"> '''</span>
<span class="n">percent</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o">/</span> <span class="n">end_val</span>
<span class="n">hashes</span> <span class="o">=</span> <span class="s1">'#'</span> <span class="o">*</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">percent</span> <span class="o">*</span> <span class="n">bar_length</span><span class="p">))</span>
<span class="n">spaces</span> <span class="o">=</span> <span class="s1">' '</span> <span class="o">*</span> <span class="p">(</span><span class="n">bar_length</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">hashes</span><span class="p">))</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"</span><span class="se">\r</span><span class="s2">Percent: [</span><span class="si">{0}</span><span class="s2">] </span><span class="si">{1}</span><span class="s2">%"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">hashes</span> <span class="o">+</span> <span class="n">spaces</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="nb">round</span><span class="p">(</span><span class="n">percent</span> <span class="o">*</span> <span class="mi">100</span><span class="p">))))</span>
<span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
<span class="n">NEWLINE</span> <span class="o">=</span> <span class="s1">'</span><span class="se">\n</span><span class="s1">'</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [3]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">HAM</span> <span class="o">=</span> <span class="s1">'ham'</span>
<span class="n">SPAM</span> <span class="o">=</span> <span class="s1">'spam'</span>
<span class="n">SOURCES</span> <span class="o">=</span> <span class="p">[</span>
<span class="p">(</span><span class="s1">'../data/enron//spam'</span><span class="p">,</span> <span class="n">SPAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//easy_ham'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//hard_ham'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//beck-s'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//farmer-d'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//kaminski-v'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//kitchen-l'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//lokay-m'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//williams-w3'</span><span class="p">,</span> <span class="n">HAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//BG'</span><span class="p">,</span> <span class="n">SPAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//GP'</span><span class="p">,</span> <span class="n">SPAM</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'../data/enron//SH'</span><span class="p">,</span> <span class="n">SPAM</span><span class="p">)</span>
<span class="p">]</span>
<span class="n">SKIP_FILES</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'cmds'</span><span class="p">}</span>
<span class="n">NEWLINE</span><span class="o">=</span><span class="s2">"</span><span class="se">\n</span><span class="s2">"</span>
<span class="k">def</span> <span class="nf">read_files</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
<span class="sd">'''</span>
<span class="sd"> Generator of pairs (filename, filecontent)</span>
<span class="sd"> for all files below path whose name is not in SKIP_FILES.</span>
<span class="sd"> The content of the file is of the form:</span>
<span class="sd"> header....</span>
<span class="sd"> <emptyline></span>
<span class="sd"> body...</span>
<span class="sd"> This skips the headers and returns body only.</span>
<span class="sd"> '''</span>
<span class="k">for</span> <span class="n">root</span><span class="p">,</span> <span class="n">dir_names</span><span class="p">,</span> <span class="n">file_names</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
<span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">dir_names</span><span class="p">:</span>
<span class="n">read_files</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">path</span><span class="p">))</span>
<span class="k">for</span> <span class="n">file_name</span> <span class="ow">in</span> <span class="n">file_names</span><span class="p">:</span>
<span class="k">if</span> <span class="n">file_name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">SKIP_FILES</span><span class="p">:</span>
<span class="n">file_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">file_name</span><span class="p">)</span>
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">file_path</span><span class="p">):</span>
<span class="n">past_header</span><span class="p">,</span> <span class="n">lines</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> <span class="p">[]</span>
<span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="s2">"latin-1"</span><span class="p">)</span>
<span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">f</span><span class="p">:</span>
<span class="k">if</span> <span class="n">past_header</span><span class="p">:</span>
<span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
<span class="k">elif</span> <span class="n">line</span> <span class="o">==</span> <span class="n">NEWLINE</span><span class="p">:</span>
<span class="n">past_header</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="n">content</span> <span class="o">=</span> <span class="n">NEWLINE</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span>
<span class="k">yield</span> <span class="n">file_path</span><span class="p">,</span> <span class="n">content</span>
<span class="k">def</span> <span class="nf">build_data_frame</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">classification</span><span class="p">):</span>
<span class="n">rows</span> <span class="o">=</span> <span class="p">[]</span>
<span class="n">index</span> <span class="o">=</span> <span class="p">[]</span>
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">file_name</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">read_files</span><span class="p">(</span><span class="n">path</span><span class="p">)):</span>
<span class="k">if</span> <span class="p">((</span><span class="n">i</span><span class="o">+</span><span class="n">l</span><span class="p">)</span> <span class="o">%</span> <span class="mi">100</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
<span class="n">progress</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="n">l</span><span class="p">,</span> <span class="mi">58910</span><span class="p">,</span> <span class="mi">50</span><span class="p">)</span>
<span class="n">rows</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s1">'text'</span><span class="p">:</span> <span class="n">text</span><span class="p">,</span> <span class="s1">'label'</span><span class="p">:</span> <span class="n">classification</span><span class="p">,</span><span class="s1">'file'</span><span class="p">:</span><span class="n">file_name</span><span class="p">})</span>
<span class="n">index</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
<span class="n">data_frame</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">rows</span><span class="p">,</span> <span class="n">index</span><span class="o">=</span><span class="n">index</span><span class="p">)</span>
<span class="k">return</span> <span class="n">data_frame</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">rows</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">load_data</span><span class="p">():</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">({</span><span class="s1">'text'</span><span class="p">:</span> <span class="p">[],</span> <span class="s1">'label'</span><span class="p">:</span> <span class="p">[],</span><span class="s1">'file'</span><span class="p">:[]})</span>
<span class="n">l</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">for</span> <span class="n">path</span><span class="p">,</span> <span class="n">classification</span> <span class="ow">in</span> <span class="n">SOURCES</span><span class="p">:</span>
<span class="n">data_frame</span><span class="p">,</span> <span class="n">nrows</span> <span class="o">=</span> <span class="n">build_data_frame</span><span class="p">(</span><span class="n">l</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">classification</span><span class="p">)</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data_frame</span><span class="p">)</span>
<span class="n">l</span> <span class="o">+=</span> <span class="n">nrows</span>
<span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">reindex</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">permutation</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">index</span><span class="p">))</span>
<span class="k">return</span> <span class="n">data</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [4]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># We will load the Email spam dataset into Panadas dataframe here . </span>
<span class="n">data</span><span class="o">=</span><span class="n">load_data</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Percent: [################################################ ] 96%</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [5]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># We change the dataframe index from filenames to indices here. </span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [6]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">new_index</span><span class="o">=</span><span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))]</span>
<span class="n">data</span><span class="o">.</span><span class="n">index</span><span class="o">=</span><span class="n">new_index</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will add two more columns to our dataframe for tokenized text and token count.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [7]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">token_count</span><span class="p">(</span><span class="n">row</span><span class="p">):</span>
<span class="s1">'returns token count'</span>
<span class="n">text</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s1">'tokenized_text'</span><span class="p">]</span>
<span class="n">length</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
<span class="k">return</span> <span class="n">length</span>
<span class="k">def</span> <span class="nf">tokenize</span><span class="p">(</span><span class="n">row</span><span class="p">):</span>
<span class="s2">"tokenize the text using default space tokenizer"</span>
<span class="n">text</span><span class="o">=</span><span class="n">row</span><span class="p">[</span><span class="s1">'text'</span><span class="p">]</span>
<span class="n">lines</span><span class="o">=</span><span class="p">(</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">text</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">NEWLINE</span><span class="p">)</span> <span class="p">)</span>
<span class="n">tokenized</span><span class="o">=</span><span class="s2">""</span>
<span class="k">for</span> <span class="n">sentence</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="n">tokenized</span><span class="o">+=</span> <span class="s2">" "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tok</span> <span class="k">for</span> <span class="n">tok</span> <span class="ow">in</span> <span class="n">sentence</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
<span class="k">return</span> <span class="n">tokenized</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will use apply functions on dataframe to add the columns for :</p>
<pre><code>* Tokenized text
* Token Count
* Language
</code></pre>
<p>Language column in this case is not necessary as we only have english text. However this approach is good for properly dealing with multi lingual data.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [8]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="p">[</span><span class="s1">'tokenized_text'</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">tokenize</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [9]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="p">[</span><span class="s1">'token_count'</span><span class="p">]</span><span class="o">=</span><span class="n">data</span><span class="o">.</span><span class="n">apply</span><span class="p">(</span><span class="n">token_count</span><span class="p">,</span> <span class="n">axis</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [10]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">=</span><span class="s1">'en'</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Let's look at how our dataframe looks like</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [11]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">data</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[11]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>file</th>
<th>label</th>
<th>text</th>
<th>tokenized_text</th>
<th>token_count</th>
<th>lang</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>../data/enron//kaminski-v/personal/340</td>
<td>ham</td>
<td>Dear Vince-\n\n\n\nI am soooo gland to see you...</td>
<td>Dear Vince-I am soooo gland to see you get the...</td>
<td>38</td>
<td>en</td>
</tr>
<tr>
<th>1</th>
<td>../data/enron//williams-w3/hr/23</td>
<td>ham</td>
<td>I guess I forgot to send this to you. Cynthia ...</td>
<td>I guess I forgot to send this to you. Cynthia ...</td>
<td>180</td>
<td>en</td>
</tr>
<tr>
<th>2</th>
<td>../data/enron//BG/2004/09/1095440603.31976_48.txt</td>
<td>spam</td>
<td>\n\nFROM THE DESK OF LUKE DOMA \n\nWEMA BANK P...</td>
<td>FROM THE DESK OF LUKE DOMAWEMA BANK PLC,LAGOS-...</td>
<td>350</td>
<td>en</td>
</tr>
<tr>
<th>3</th>
<td>../data/enron//GP/part7/msg10809.eml</td>
<td>spam</td>
<td><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Tr...</td>
<td><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Tr...</td>
<td>15</td>
<td>en</td>
</tr>
<tr>
<th>4</th>
<td>../data/enron//SH/HP/prodmsg.2.437295.200572</td>
<td>spam</td>
<td>This is a multi-part message in MIME format.\n...</td>
<td>This is a multi-part message in MIME format.--...</td>
<td>328</td>
<td>en</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [12]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Lets look at some information related to the data</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [13]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df</span><span class="o">=</span><span class="n">data</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">"total emails : "</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">))</span>
<span class="nb">print</span> <span class="p">(</span><span class="s2">"total spam emails : "</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'spam'</span><span class="p">])</span> <span class="p">)</span>
<span class="nb">print</span> <span class="p">(</span><span class="s2">"total normal emails : "</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="n">df</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'ham'</span><span class="p">])</span> <span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>total emails : 56513
total spam emails : 32974
total normal emails : 23539
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Plot-of-Emails-with-Langage-and-Email-type">Plot of Emails with Langage and Email type<a class="anchor-link" href="#Plot-of-Emails-with-Langage-and-Email-type">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [14]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">df1</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">([</span><span class="s1">'lang'</span><span class="p">,</span><span class="s1">'label'</span><span class="p">])[</span><span class="s1">'label'</span><span class="p">,</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">.</span><span class="n">size</span><span class="p">()</span><span class="o">.</span><span class="n">unstack</span><span class="p">()</span>
<span class="n">ax</span><span class="o">=</span><span class="n">df1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s1">'bar'</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s2">"Total Emails"</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s2">"Language"</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s2">"Plot of Emails count with languages and email type"</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[14]:</div>
<div class="output_text output_subarea output_execute_result">
<pre><matplotlib.text.Text at 0x11279f518></pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
SYutYGMm1ZQAAAAASUVORK5CYII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [15]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">bins</span> <span class="o">=</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">,</span><span class="mi">200</span><span class="p">,</span><span class="mi">300</span><span class="p">,</span><span class="mi">350</span><span class="p">,</span><span class="mi">400</span><span class="p">,</span><span class="mi">500</span><span class="p">,</span><span class="mi">600</span><span class="p">,</span><span class="mi">800</span><span class="p">,</span><span class="mi">1000</span><span class="p">,</span><span class="mi">1500</span><span class="p">,</span><span class="mi">2000</span><span class="p">,</span><span class="mi">3000</span><span class="p">,</span><span class="mi">4000</span><span class="p">,</span><span class="mi">5000</span><span class="p">,</span><span class="mi">6000</span><span class="p">,</span><span class="mi">10000</span><span class="p">,</span><span class="mi">20000</span><span class="p">]</span>
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">nrows</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">ncols</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
<span class="n">fig</span><span class="o">.</span><span class="n">subplots_adjust</span><span class="p">(</span><span class="n">hspace</span><span class="o">=.</span><span class="mi">5</span><span class="p">)</span>
<span class="n">df_sub</span><span class="o">=</span><span class="n">df</span><span class="p">[</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'ham'</span><span class="p">)]</span>
<span class="n">df1</span> <span class="o">=</span> <span class="n">df_sub</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">cut</span><span class="p">(</span><span class="n">df_sub</span><span class="p">[</span><span class="s1">'token_count'</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">bins</span><span class="p">))</span><span class="o">.</span><span class="n">token_count</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">right</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">]</span>
<span class="n">res1</span><span class="o">=</span><span class="n">df1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s1">'bar'</span><span class="p">,</span><span class="n">ax</span><span class="o">=</span><span class="n">axes</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
<span class="n">res1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Email tokens length'</span><span class="p">)</span>
<span class="n">res1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Frequency'</span><span class="p">)</span>
<span class="n">res1</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Token length Vs Frequency for Enron Normal Emails'</span><span class="p">)</span>
<span class="n">df_sub</span><span class="o">=</span><span class="n">df</span><span class="p">[</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'spam'</span><span class="p">)]</span>
<span class="n">df1</span> <span class="o">=</span> <span class="n">df_sub</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="n">pd</span><span class="o">.</span><span class="n">cut</span><span class="p">(</span><span class="n">df_sub</span><span class="p">[</span><span class="s1">'token_count'</span><span class="p">],</span> <span class="n">bins</span><span class="o">=</span><span class="n">bins</span><span class="p">))</span><span class="o">.</span><span class="n">token_count</span><span class="o">.</span><span class="n">count</span><span class="p">()</span>
<span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="o">=</span><span class="p">[</span><span class="n">a</span><span class="o">.</span><span class="n">right</span> <span class="k">for</span> <span class="n">a</span> <span class="ow">in</span> <span class="n">df1</span><span class="o">.</span><span class="n">index</span><span class="p">]</span>
<span class="n">res2</span><span class="o">=</span><span class="n">df1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">kind</span><span class="o">=</span><span class="s1">'bar'</span><span class="p">,</span><span class="n">ax</span><span class="o">=</span><span class="n">axes</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="n">res2</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Email tokens length'</span><span class="p">)</span>
<span class="n">res2</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Frequency'</span><span class="p">)</span>
<span class="n">res2</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Token length Vs Frequency for Enron Spam Emails'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[15]:</div>
<div class="output_text output_subarea output_execute_result">
<pre><matplotlib.text.Text at 0x105ef6550></pre>
</div>
</div>
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAuMAAAGYCAYAAADocOw7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
AAALEgAACxIB0t1+/AAAIABJREFUeJzs3XucJXV95//XG0YEvHDRCSqDDlHUoDGKI5CYRCMGBjRC
sl4wRkaXyOYnRqPZVbxEEpUsbi4oP5UsERSMingLGFEc8ZJNVpBREQRERlAY5DJxuKgoin72j/p2
ODTdM6e7T3ednn49H4/z6KpvVX3Ot+qc/vSn61R9T6oKSZIkSQtvm747IEmSJC1VFuOSJElSTyzG
JUmSpJ5YjEuSJEk9sRiXJEmSemIxLkmSJPXEYnwKSVYnWb8Az/MnST47388zzXOfkeQNfTy3Okl2
T/J/k/wgyXF992cpS/LoJHeOQT8emeSWgfnzk/xRn31arMzjWgjm8aUlyV8leUebHtnfja22GE/y
w4HHL5L8eGD+BX33byHN5Y9Fkvu2Y/YbUyw7Kck/zTDeGUnumPT6HDabvm0FXgp8p6ruV1Wvn2uw
9jrfOenY/jDJA0bQ17n27fgkleRZA233bW0P6rNvw0hyQ5LbJx3Xvxv181TVt6pq51HHXazM43cx
j4+tpZTHH5Dk9CQ3JrktyRVJXjUG/Vrd8sPkY/aEUT9XVR1bVS8bddxlow44LqrqvhPTSb4D/HFV
9XL2YjGrqh8m+ShwBPB/J9qTbAc8Fzh8FmHfXFVv2dwKSZZVVe9nKufZw4DLZrPhZo7PF6rq6XPr
1rwd/03Am5J8oub4bWM9vT8OrKp/W+DnXNLM46NhHp9XSymPvwO4E3gk8APg0cCjRhh/Lq6qqkf0
3YnZ2mrPjG9Jkh2SvDPJ9Uk2JPmbJPeaZt3/keTiiTN4SX6/zd+S5P8k2Xtg3RuSvDLJN5LcmuT9
LeEN06fHJvlckpuTXD54pqGdiXhbknPTfRz270keNrD8GUmubH16W9rH2+0/w7cBT23/Kd4w8JQP
nC7eJKcBz01y74G2ZwI/Bs5rz/8X7Vje1vr+W8Ps86T9vyHJf09yKXBba9sjyVlJ/iPJVUn+ZGD9
+7Tje0uSS5K8Nu1j6STbt7OuKyYdwzcMzM/6dUzynLbtD9pxPyDJC5P8+6R9el2SD02xrx8Engf8
RXtdfmtz78n2n//6dpxvBE6a5fGdcp+mi5/k6CTfTvL9JB9Lstuk43tUW35zkhO20IWzge3p/vhP
1b9dk3wgycYkVyd5dZK0ZX/SfjfemeRm4JiBtne0/bkyyarWp+vSnb05fCD+7yf5enuPXpPkdTM9
htP0e2T9yGY+9mzL/q09x8Ykp4+i/4vZ5n5npljXPG4eN4/PLY8/CXh/Vd1aVb+oqsuq6uOTYr0s
yXfS5ajjkv/M4Y9O8oUkm9qy05Lcb9J+vSrJpe1YnpTkwUnWtvfjp5Pcf6bHq8U+P8lfJvlyi/2x
dGf5z2yxz5/0HjupvXa3tW32H1h2fJJ3T/M8L2n7/oP2Pn/O0J2sqq3+AXwHePqktv8F/B/ggcBu
wIXA69uy1cD6Nv3XwAXArm1+f+B64InAtsBRwLeAZW35DcC/t5jLgfXAi6bp158An23T929xX9Di
PonuTOIj2vIzgJuAfYB7AR8B3tuWPRj4IV1ivRfwauBnwB9Nfp6B55423hT9DPBd4NkDbR8Hjm/T
vwZc1fY5wC8De04T6wzgDdMsu6G9Dg8BdmjH4RLgNcB2dP+NXwM8pa3/Nro/IjsDewJXDLxu2wMF
rJjquefyOgK/DdwM/A7dP7QPbX27D90fnz0HnvNy4BnDHAu2/J68E3hTOxY7bO79tJnjO90+3SM+
cEjb5nHteJ4MfGbS8f0Y3Xt3T+AW4KnTPPfxwLvpCvFvtmN+3xbjQW2dM4EPt/ZHAFcDLxjYtzuB
l7Rtd2htPwP+sLX9Dd379IS2D89qr9P2LcYBwGPaa7YP3e/X6rbs0cCdWzh2v7mZ3+N56QdwPnf9
Hn8c+O90v2M7AE/uO7cu5APzuHl80nPP5XXEPD54fIfN4/8EfB1YQ3tPDyybiHXuwGt5FXe9fx8N
PK3160F0ue34Sfs1cdwe2l6bLwO/2vbj34DXTNOv//xdn2b5+e01XAnsClxJ93foKXRXiHwIOGlg
/SOAXeh+p14PXAvcqy07Hnj3wD7d2aZ3acfu4W3+IcCvDJ3f5jN5jsuDqZP4dcDTBuYPBb458MJ+
G3gn8HngfgPrvWfiF2ug7bvAfgNvqMFkdyLwtmn6NZjE1wBrJy0/beLNR/cL/46BZX8AXNSmjwI+
P7BsG7oEvaUkPmW8afr6FuDsNv0A4I6JNxpdYXE9XVJbtoXX4gy6MzG3tMeGgWU3AH84MP8U4MpJ
2//VxC8N8D0GkgbwcoZP4rN+Hdvr8j+n2b/3AH/Rple112HKY8I9k/iW3pM/oiWEzbyffjZwbG8B
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
uJmZmZlZg/wLL67NdVQ8g8MAAAAASUVORK5CYII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Prepare-training-and-test-data">Prepare training and test data<a class="anchor-link" href="#Prepare-training-and-test-data">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will split data into test data and data for model training and validation. We do this step to keep test data out of both tf-idf and classifier models.</p>
<p>We will keep 10000 emails for testing and rest for the model building process.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We shuffle the data in the dataframe first.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [16]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># We randomize the rows to subset the dataframe</span>
<span class="n">df</span><span class="o">.</span><span class="n">reset_index</span><span class="p">(</span><span class="n">inplace</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="n">df</span><span class="o">=</span><span class="n">df</span><span class="o">.</span><span class="n">reindex</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">permutation</span><span class="p">(</span><span class="n">df</span><span class="o">.</span><span class="n">index</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [17]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">len_unseen</span><span class="o">=</span><span class="mi">10000</span>
<span class="n">df_unseen_test</span><span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[:</span><span class="n">len_unseen</span><span class="p">]</span>
<span class="n">df_model</span> <span class="o">=</span> <span class="n">df</span><span class="o">.</span><span class="n">iloc</span><span class="p">[</span><span class="n">len_unseen</span><span class="p">:]</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'total emails for unseen test data : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_unseen_test</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\t</span><span class="s1"> total spam emails for enron : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_unseen_test</span><span class="p">[(</span><span class="n">df_unseen_test</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df_unseen_test</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'spam'</span><span class="p">)]))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\t</span><span class="s1"> total normal emails for enron : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_unseen_test</span><span class="p">[(</span><span class="n">df_unseen_test</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df_unseen_test</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'ham'</span><span class="p">)]))</span>
<span class="nb">print</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'total emails for model training/validation : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_model</span><span class="p">))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\t</span><span class="s1"> total spam emails for enron : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_model</span><span class="p">[(</span><span class="n">df_model</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df_model</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'spam'</span><span class="p">)]))</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'</span><span class="se">\t</span><span class="s1"> total normal emails for enron : '</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">df_model</span><span class="p">[(</span><span class="n">df_model</span><span class="p">[</span><span class="s1">'lang'</span><span class="p">]</span><span class="o">==</span><span class="s1">'en'</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">df_model</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">==</span><span class="s1">'ham'</span><span class="p">)]))</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>total emails for unseen test data : 10000
total spam emails for enron : 5823
total normal emails for enron : 4177
total emails for model training/validation : 46513
total spam emails for enron : 27151
total normal emails for enron : 19362
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Train-Machine-Learning-Models">Train Machine Learning Models<a class="anchor-link" href="#Train-Machine-Learning-Models">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [18]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">## Deep Learning Model </span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will build our deep learning model using Keras library with tensorflow as backend.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [19]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">keras</span>
<span class="kn">from</span> <span class="nn">keras.layers</span> <span class="k">import</span> <span class="n">Input</span><span class="p">,</span> <span class="n">Dense</span>
<span class="kn">from</span> <span class="nn">keras.models</span> <span class="k">import</span> <span class="n">Model</span><span class="p">,</span><span class="n">load_model</span>
<span class="kn">from</span> <span class="nn">keras.layers</span> <span class="k">import</span> <span class="n">Input</span><span class="p">,</span> <span class="n">Dense</span>
<span class="kn">from</span> <span class="nn">keras.models</span> <span class="k">import</span> <span class="n">Model</span>
<span class="kn">from</span> <span class="nn">keras</span> <span class="k">import</span> <span class="n">regularizers</span>
<span class="kn">from</span> <span class="nn">keras.preprocessing.text</span> <span class="k">import</span> <span class="n">Tokenizer</span>
<span class="kn">from</span> <span class="nn">keras.models</span> <span class="k">import</span> <span class="n">Sequential</span>
<span class="kn">from</span> <span class="nn">keras.layers</span> <span class="k">import</span> <span class="n">Dense</span><span class="p">,</span> <span class="n">Dropout</span><span class="p">,</span> <span class="n">Activation</span>
<span class="kn">from</span> <span class="nn">keras.callbacks</span> <span class="k">import</span> <span class="n">ModelCheckpoint</span><span class="p">,</span> <span class="n">TensorBoard</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stderr output_text">
<pre>Using TensorFlow backend.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [20]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">sklearn</span>
<span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">metrics</span>
<span class="kn">from</span> <span class="nn">sklearn</span> <span class="k">import</span> <span class="n">svm</span>
<span class="kn">from</span> <span class="nn">sklearn.externals</span> <span class="k">import</span> <span class="n">joblib</span>
<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">LabelEncoder</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Create-tf-idf-model-from-the-data">Create tf-idf model from the data<a class="anchor-link" href="#Create-tf-idf-model-from-the-data">¶</a></h1><p>We will create tf-idf model with keras</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [29]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># max number of features</span>
<span class="n">num_max</span> <span class="o">=</span> <span class="mi">4000</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [30]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">train_tf_idf_model</span><span class="p">(</span><span class="n">texts</span><span class="p">):</span>
<span class="s2">"train tf idf model "</span>
<span class="n">tic</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="n">tok</span> <span class="o">=</span> <span class="n">Tokenizer</span><span class="p">(</span><span class="n">num_words</span><span class="o">=</span><span class="n">num_max</span><span class="p">)</span>
<span class="n">tok</span><span class="o">.</span><span class="n">fit_on_texts</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span>
<span class="n">toc</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="nb">print</span> <span class="p">(</span><span class="s2">" -----total Computation time = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">((</span><span class="n">toc</span> <span class="o">-</span> <span class="n">tic</span><span class="p">))</span> <span class="o">+</span> <span class="s2">" seconds"</span><span class="p">)</span>
<span class="k">return</span> <span class="n">tok</span>
<span class="k">def</span> <span class="nf">prepare_model_input</span><span class="p">(</span><span class="n">tfidf_model</span><span class="p">,</span><span class="n">dataframe</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s1">'tfidf'</span><span class="p">):</span>
<span class="s2">"function to prepare data input features using tfidf model"</span>
<span class="n">tic</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="n">le</span> <span class="o">=</span> <span class="n">LabelEncoder</span><span class="p">()</span>
<span class="n">sample_texts</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'tokenized_text'</span><span class="p">])</span>
<span class="n">sample_texts</span> <span class="o">=</span> <span class="p">[</span><span class="s1">' '</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">x</span><span class="o">.</span><span class="n">split</span><span class="p">())</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">sample_texts</span><span class="p">]</span>
<span class="n">targets</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">dataframe</span><span class="p">[</span><span class="s1">'label'</span><span class="p">])</span>
<span class="n">targets</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.</span> <span class="k">if</span> <span class="n">x</span><span class="o">==</span><span class="s1">'spam'</span> <span class="k">else</span> <span class="mf">0.</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">targets</span><span class="p">]</span>
<span class="n">sample_target</span> <span class="o">=</span> <span class="n">le</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">targets</span><span class="p">)</span>
<span class="k">if</span> <span class="n">mode</span><span class="o">==</span><span class="s1">'tfidf'</span><span class="p">:</span>
<span class="n">sample_texts</span><span class="o">=</span><span class="n">tfidf_model</span><span class="o">.</span><span class="n">texts_to_matrix</span><span class="p">(</span><span class="n">sample_texts</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s1">'tfidf'</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">sample_texts</span><span class="o">=</span><span class="n">tfidf_model</span><span class="o">.</span><span class="n">texts_to_matrix</span><span class="p">(</span><span class="n">sample_texts</span><span class="p">)</span>
<span class="n">toc</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'shape of labels: '</span><span class="p">,</span> <span class="n">sample_target</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'shape of data: '</span><span class="p">,</span> <span class="n">sample_texts</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="nb">print</span> <span class="p">(</span><span class="s2">" -----total Computation time for preparing model data = "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">((</span><span class="n">toc</span> <span class="o">-</span> <span class="n">tic</span><span class="p">))</span> <span class="o">+</span> <span class="s2">" seconds"</span><span class="p">)</span>
<span class="k">return</span> <span class="n">sample_texts</span><span class="p">,</span><span class="n">sample_target</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [31]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">texts</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="n">df_model</span><span class="p">[</span><span class="s1">'tokenized_text'</span><span class="p">])</span>
<span class="n">tfidf_model</span><span class="o">=</span><span class="n">train_tf_idf_model</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre> -----total Computation time = 19.723424 seconds
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [32]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># prepare model input data</span>
<span class="n">mat_texts</span><span class="p">,</span><span class="n">tags</span><span class="o">=</span><span class="n">prepare_model_input</span><span class="p">(</span><span class="n">tfidf_model</span><span class="p">,</span><span class="n">df_model</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s1">'tfidf'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>shape of labels: (46513,)
shape of data: (46513, 4000)
-----total Computation time for preparing model data = 34.13841300000001 seconds
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Split-Train/validation-data">Split Train/validation data<a class="anchor-link" href="#Split-Train/validation-data">¶</a></h1><p>We will use 85% for training, 15% for validation.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [33]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">train_test_split</span>
<span class="n">X_train</span><span class="p">,</span> <span class="n">X_val</span><span class="p">,</span> <span class="n">y_train</span><span class="p">,</span> <span class="n">y_val</span> <span class="o">=</span> <span class="n">train_test_split</span><span class="p">(</span><span class="n">mat_texts</span><span class="p">,</span> <span class="n">tags</span><span class="p">,</span> <span class="n">test_size</span><span class="o">=</span><span class="mf">0.15</span><span class="p">)</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'train data shape: '</span><span class="p">,</span> <span class="n">X_train</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_train</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
<span class="nb">print</span> <span class="p">(</span><span class="s1">'validation data shape :'</span> <span class="p">,</span> <span class="n">X_val</span><span class="o">.</span><span class="n">shape</span><span class="p">,</span> <span class="n">y_val</span><span class="o">.</span><span class="n">shape</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>train data shape: (39536, 4000) (39536,)
validation data shape : (6977, 4000) (6977,)
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Build-models">Build models<a class="anchor-link" href="#Build-models">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Deep-learning-model">Deep learning model<a class="anchor-link" href="#Deep-learning-model">¶</a></h2><p>We will build our 3 layer deep learning model using Keras and tensorflow.</p>
<h3 id="Network">Network<a class="anchor-link" href="#Network">¶</a></h3><p>Input -> L1 : (Linear -> Relu) -> L2: (Linear -> Relu)-> (Linear -> Sigmoid)</p>
<ul>
<li>Layer L1 has 512 neurons with Relu activation</li>
<li><p>Layer L2 has 256 neurons with Relu activation</p>
</li>
<li><p>Regularization : We use dropout with probability 0.5 for L1, L2 to prevent overfitting</p>
</li>
<li>Loss Function : binary cross entropy</li>
<li>Optimizer : We use Adam optimizer for gradient descent estimation (faster optimization)</li>
<li>Data Shuffling : Data shuffling is set to true</li>
<li>Batch Size : 64</li>
<li>Learning Rate = 0.001</li>
</ul>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [258]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">## Define and initialize the network</span>
<span class="n">model_save_path</span><span class="o">=</span><span class="s2">"checkpoints/spam_detector_enron_model.h5"</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [259]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">get_simple_model</span><span class="p">():</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">Sequential</span><span class="p">()</span>
<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dense</span><span class="p">(</span><span class="mi">512</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'relu'</span><span class="p">,</span> <span class="n">input_shape</span><span class="o">=</span><span class="p">(</span><span class="n">num_max</span><span class="p">,)))</span>
<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dropout</span><span class="p">(</span><span class="mf">0.5</span><span class="p">))</span>
<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dense</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'relu'</span><span class="p">))</span>
<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dropout</span><span class="p">(</span><span class="mf">0.5</span><span class="p">))</span>
<span class="n">model</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dense</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">activation</span><span class="o">=</span><span class="s1">'sigmoid'</span><span class="p">))</span>
<span class="n">model</span><span class="o">.</span><span class="n">summary</span><span class="p">()</span>
<span class="n">model</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="n">loss</span><span class="o">=</span><span class="s1">'binary_crossentropy'</span><span class="p">,</span>
<span class="n">optimizer</span><span class="o">=</span><span class="s1">'adam'</span><span class="p">,</span>
<span class="n">metrics</span><span class="o">=</span><span class="p">[</span><span class="s1">'acc'</span><span class="p">,</span><span class="n">keras</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">binary_accuracy</span><span class="p">])</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">'compile done'</span><span class="p">)</span>
<span class="k">return</span> <span class="n">model</span>
<span class="k">def</span> <span class="nf">check_model</span><span class="p">(</span><span class="n">model</span><span class="p">,</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">epochs</span><span class="o">=</span><span class="mi">2</span><span class="p">):</span>
<span class="n">history</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">batch_size</span><span class="o">=</span><span class="mi">32</span><span class="p">,</span><span class="n">epochs</span><span class="o">=</span><span class="n">epochs</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span><span class="n">validation_split</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span>
<span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">checkpointer</span><span class="p">,</span> <span class="n">tensorboard</span><span class="p">])</span><span class="o">.</span><span class="n">history</span>
<span class="k">return</span> <span class="n">history</span>
<span class="k">def</span> <span class="nf">check_model2</span><span class="p">(</span><span class="n">model</span><span class="p">,</span><span class="n">x_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">,</span><span class="n">x_val</span><span class="p">,</span><span class="n">y_val</span><span class="p">,</span><span class="n">epochs</span><span class="o">=</span><span class="mi">10</span><span class="p">):</span>
<span class="n">history</span><span class="o">=</span><span class="n">model</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">x_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">,</span><span class="n">batch_size</span><span class="o">=</span><span class="mi">64</span><span class="p">,</span>
<span class="n">epochs</span><span class="o">=</span><span class="n">epochs</span><span class="p">,</span><span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">validation_data</span><span class="o">=</span><span class="p">(</span><span class="n">x_val</span><span class="p">,</span> <span class="n">y_val</span><span class="p">),</span>
<span class="n">callbacks</span><span class="o">=</span><span class="p">[</span><span class="n">checkpointer</span><span class="p">,</span> <span class="n">tensorboard</span><span class="p">])</span><span class="o">.</span><span class="n">history</span>
<span class="k">return</span> <span class="n">history</span>
<span class="c1"># define checkpointer</span>
<span class="n">checkpointer</span> <span class="o">=</span> <span class="n">ModelCheckpoint</span><span class="p">(</span><span class="n">filepath</span><span class="o">=</span><span class="n">model_save_path</span><span class="p">,</span>
<span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span>
<span class="n">save_best_only</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># define tensorboard</span>
<span class="n">tensorboard</span> <span class="o">=</span> <span class="n">TensorBoard</span><span class="p">(</span><span class="n">log_dir</span><span class="o">=</span><span class="s1">'./logs'</span><span class="p">,</span>
<span class="n">histogram_freq</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="n">write_graph</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
<span class="n">write_images</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
<span class="c1"># define the predict function for the deep learning model for later use</span>
<span class="k">def</span> <span class="nf">predict</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="n">result</span><span class="o">=</span><span class="n">spam_model_dl</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
<span class="n">prediction</span> <span class="o">=</span> <span class="p">[</span><span class="nb">round</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">result</span><span class="p">]</span>
<span class="k">return</span> <span class="n">prediction</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [260]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">## Train the model</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [261]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># get the compiled model</span>
<span class="n">model</span> <span class="o">=</span> <span class="n">get_simple_model</span><span class="p">()</span>
<span class="c1"># load history</span>
<span class="c1"># history=check_model(m,mat_texts,tags,epochs=10)</span>
<span class="n">history</span><span class="o">=</span><span class="n">check_model2</span><span class="p">(</span><span class="n">model</span><span class="p">,</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">,</span><span class="n">X_val</span><span class="p">,</span><span class="n">y_val</span><span class="p">,</span><span class="n">epochs</span><span class="o">=</span><span class="mi">10</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 512) 2048512
_________________________________________________________________
dropout_1 (Dropout) (None, 512) 0
_________________________________________________________________
dense_2 (Dense) (None, 256) 131328
_________________________________________________________________
dropout_2 (Dropout) (None, 256) 0
_________________________________________________________________
dense_3 (Dense) (None, 1) 257
=================================================================
Total params: 2,180,097
Trainable params: 2,180,097
Non-trainable params: 0
_________________________________________________________________
compile done
Train on 39536 samples, validate on 6977 samples
Epoch 1/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0825 - acc: 0.9791 - binary_accuracy: 0.9791Epoch 00000: val_loss improved from inf to 0.04133, saving model to checkpoints/spam_detector_enron_model.h5
39536/39536 [==============================] - 27s - loss: 0.0823 - acc: 0.9791 - binary_accuracy: 0.9791 - val_loss: 0.0413 - val_acc: 0.9911 - val_binary_accuracy: 0.9911
Epoch 2/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0394 - acc: 0.9925 - binary_accuracy: 0.9925Epoch 00001: val_loss improved from 0.04133 to 0.03843, saving model to checkpoints/spam_detector_enron_model.h5
39536/39536 [==============================] - 26s - loss: 0.0393 - acc: 0.9925 - binary_accuracy: 0.9925 - val_loss: 0.0384 - val_acc: 0.9931 - val_binary_accuracy: 0.9931
Epoch 3/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0198 - acc: 0.9959 - binary_accuracy: 0.9959Epoch 00002: val_loss did not improve
39536/39536 [==============================] - 27s - loss: 0.0198 - acc: 0.9959 - binary_accuracy: 0.9959 - val_loss: 0.0490 - val_acc: 0.9897 - val_binary_accuracy: 0.9897
Epoch 4/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0171 - acc: 0.9968 - binary_accuracy: 0.9968- ETA: 2s - loss: 0.0182 - acc: 0.Epoch 00003: val_loss did not improve
39536/39536 [==============================] - 28s - loss: 0.0170 - acc: 0.9968 - binary_accuracy: 0.9968 - val_loss: 0.0454 - val_acc: 0.9905 - val_binary_accuracy: 0.9905
Epoch 5/10
39488/39536 [============================>.] - ETA: 0s - loss: 0.0185 - acc: 0.9965 - binary_accuracy: 0.9965Epoch 00004: val_loss did not improve
39536/39536 [==============================] - 27s - loss: 0.0186 - acc: 0.9965 - binary_accuracy: 0.9965 - val_loss: 0.0472 - val_acc: 0.9921 - val_binary_accuracy: 0.9921
Epoch 6/10
39488/39536 [============================>.] - ETA: 0s - loss: 0.0147 - acc: 0.9974 - binary_accuracy: 0.9974Epoch 00005: val_loss did not improve
39536/39536 [==============================] - 28s - loss: 0.0147 - acc: 0.9974 - binary_accuracy: 0.9974 - val_loss: 0.0403 - val_acc: 0.9936 - val_binary_accuracy: 0.9936
Epoch 7/10
39488/39536 [============================>.] - ETA: 0s - loss: 0.0129 - acc: 0.9980 - binary_accuracy: 0.9980Epoch 00006: val_loss did not improve
39536/39536 [==============================] - 27s - loss: 0.0129 - acc: 0.9980 - binary_accuracy: 0.9980 - val_loss: 0.0490 - val_acc: 0.9908 - val_binary_accuracy: 0.9908
Epoch 8/10
39488/39536 [============================>.] - ETA: 0s - loss: 0.0107 - acc: 0.9985 - binary_accuracy: 0.9985Epoch 00007: val_loss improved from 0.03843 to 0.03611, saving model to checkpoints/spam_detector_enron_model.h5
39536/39536 [==============================] - 26s - loss: 0.0107 - acc: 0.9985 - binary_accuracy: 0.9985 - val_loss: 0.0361 - val_acc: 0.9937 - val_binary_accuracy: 0.9937
Epoch 9/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0127 - acc: 0.9982 - binary_accuracy: 0.9982Epoch 00008: val_loss did not improve
39536/39536 [==============================] - 26s - loss: 0.0127 - acc: 0.9982 - binary_accuracy: 0.9982 - val_loss: 0.0606 - val_acc: 0.9920 - val_binary_accuracy: 0.9920
Epoch 10/10
39424/39536 [============================>.] - ETA: 0s - loss: 0.0103 - acc: 0.9988 - binary_accuracy: 0.9988Epoch 00009: val_loss did not improve
39536/39536 [==============================] - 27s - loss: 0.0103 - acc: 0.9988 - binary_accuracy: 0.9988 - val_loss: 0.0561 - val_acc: 0.9925 - val_binary_accuracy: 0.9925
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>The results on validation data looks very good. Lets plot the loss on train and validation data</p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [262]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'loss'</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'val_loss'</span><span class="p">])</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'Email Spam Filter Model loss'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'loss'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'epoch'</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">([</span><span class="s1">'train'</span><span class="p">,</span> <span class="s1">'test'</span><span class="p">],</span> <span class="n">loc</span><span class="o">=</span><span class="s1">'upper right'</span><span class="p">);</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
+n+m+OY6V9l7RAAAAABJRU5ErkJggg==
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Other-Machine-Learning-Models">Other Machine Learning Models<a class="anchor-link" href="#Other-Machine-Learning-Models">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>We will build 3 more models and compare the performance in the same way. For this purpose we will use the same tf-idf as input feature . We will train following models :</p>
<ul>
<li>SVM </li>
<li>Random Forest</li>
<li>XGboost</li>
</ul>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [112]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Lets-train-the-svm-model">Lets train the svm model<a class="anchor-link" href="#Lets-train-the-svm-model">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [292]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">spam_model_svm</span> <span class="o">=</span> <span class="n">svm</span><span class="o">.</span><span class="n">SVC</span><span class="p">(</span><span class="n">verbose</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
<span class="n">spam_model_svm</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>[LibSVM]</pre>
</div>
</div>
<div class="output_area">
<div class="prompt output_prompt">Out[292]:</div>
<div class="output_text output_subarea output_execute_result">
<pre>SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=1)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Lets-build-random-forest">Lets build random forest<a class="anchor-link" href="#Lets-build-random-forest">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [36]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.ensemble</span> <span class="k">import</span> <span class="n">RandomForestClassifier</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [279]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">spam_model_rf</span> <span class="o">=</span> <span class="n">RandomForestClassifier</span><span class="p">(</span><span class="n">n_jobs</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">random_state</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span><span class="n">n_estimators</span><span class="o">=</span><span class="mi">50</span><span class="p">)</span>
<span class="c1"># Train the Classifier to take the training features and learn how they relate</span>
<span class="c1"># to the training y (the species)</span>
<span class="n">spam_model_rf</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[279]:</div>
<div class="output_text output_subarea output_execute_result">
<pre>RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
max_depth=None, max_features='auto', max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=50, n_jobs=2,
oob_score=False, random_state=0, verbose=0, warm_start=False)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Lets-train-xgboost-model">Lets train xgboost model<a class="anchor-link" href="#Lets-train-xgboost-model">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [284]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Build xgboost also </span>
<span class="kn">import</span> <span class="nn">xgboost</span> <span class="k">as</span> <span class="nn">xgb</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [285]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">spam_model_xgboost</span> <span class="o">=</span> <span class="n">xgb</span><span class="o">.</span><span class="n">XGBClassifier</span><span class="p">()</span>
<span class="n">spam_model_xgboost</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X_train</span><span class="p">,</span><span class="n">y_train</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[285]:</div>
<div class="output_text output_subarea output_execute_result">
<pre>XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,
colsample_bytree=1, gamma=0, learning_rate=0.1, max_delta_step=0,
max_depth=3, min_child_weight=1, missing=None, n_estimators=100,
n_jobs=1, nthread=None, objective='binary:logistic', random_state=0,
reg_alpha=0, reg_lambda=1, scale_pos_weight=1, seed=None,
silent=True, subsample=1)</pre>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h1 id="Evaluate-Model-Performance">Evaluate Model Performance<a class="anchor-link" href="#Evaluate-Model-Performance">¶</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Lets-prepare-test-data">Lets prepare test data<a class="anchor-link" href="#Lets-prepare-test-data">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">sample_texts</span><span class="p">,</span><span class="n">sample_target</span><span class="o">=</span><span class="n">prepare_model_input</span><span class="p">(</span><span class="n">tfidf_model</span><span class="p">,</span><span class="n">df_unseen_test</span><span class="p">,</span><span class="n">mode</span><span class="o">=</span><span class="s1">''</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [145]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># lets write a function to create the dataframe of the results from all the models</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [297]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">model_dict</span><span class="o">=</span><span class="p">{}</span>
<span class="n">model_dict</span><span class="p">[</span><span class="s1">'random_forest'</span><span class="p">]</span><span class="o">=</span><span class="n">spam_model_rf</span>
<span class="n">model_dict</span><span class="p">[</span><span class="s1">'svm'</span><span class="p">]</span><span class="o">=</span><span class="n">spam_model_svm</span>
<span class="n">model_dict</span><span class="p">[</span><span class="s1">'deep_learning'</span><span class="p">]</span><span class="o">=</span><span class="n">spam_model_dl</span>
<span class="n">model_dict</span><span class="p">[</span><span class="s1">'xgboost'</span><span class="p">]</span><span class="o">=</span><span class="n">spam_model_xgboost</span>
<span class="k">def</span> <span class="nf">getResults</span><span class="p">(</span><span class="n">model_dict</span><span class="p">,</span><span class="n">sample_texts</span><span class="p">,</span><span class="n">sample_target</span><span class="p">):</span>
<span class="sd">'''</span>
<span class="sd"> Get results from different models</span>
<span class="sd"> '''</span>
<span class="n">results</span><span class="o">=</span><span class="p">[]</span>
<span class="n">results_cm</span><span class="o">=</span><span class="p">{}</span>
<span class="k">for</span> <span class="n">name</span><span class="p">,</span><span class="n">model</span> <span class="ow">in</span> <span class="n">model_dict</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
<span class="c1"># print(name)</span>
<span class="n">tic1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="k">if</span> <span class="n">name</span> <span class="ow">in</span> <span class="s1">'deep_learning'</span><span class="p">:</span>
<span class="n">predicted_sample</span> <span class="o">=</span> <span class="n">predict</span><span class="p">(</span><span class="n">sample_texts</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">predicted_sample</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">predict</span><span class="p">(</span><span class="n">sample_texts</span><span class="p">)</span>
<span class="n">toc1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">process_time</span><span class="p">()</span>
<span class="c1"># print(predicted_sample)</span>
<span class="n">cm</span><span class="o">=</span><span class="n">sklearn</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">confusion_matrix</span><span class="p">(</span><span class="n">sample_target</span><span class="p">,</span> <span class="n">predicted_sample</span><span class="p">)</span>
<span class="n">results_cm</span><span class="p">[</span><span class="n">name</span><span class="p">]</span><span class="o">=</span><span class="n">cm</span>
<span class="n">total</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">predicted_sample</span><span class="p">)</span>
<span class="n">TP</span> <span class="o">=</span> <span class="n">cm</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">FP</span> <span class="o">=</span> <span class="n">cm</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
<span class="n">FN</span> <span class="o">=</span> <span class="n">cm</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
<span class="n">TN</span> <span class="o">=</span> <span class="n">cm</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
<span class="n">time_taken</span><span class="o">=</span><span class="nb">round</span><span class="p">(</span><span class="n">toc1</span> <span class="o">-</span> <span class="n">tic1</span><span class="p">,</span><span class="mi">4</span><span class="p">)</span>
<span class="n">res</span><span class="o">=</span><span class="n">sklearn</span><span class="o">.</span><span class="n">metrics</span><span class="o">.</span><span class="n">precision_recall_fscore_support</span><span class="p">(</span><span class="n">sample_target</span><span class="p">,</span> <span class="n">predicted_sample</span><span class="p">)</span>
<span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">([</span><span class="n">name</span><span class="p">,</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">1</span><span class="p">]),</span><span class="n">np</span><span class="o">.</span><span class="n">mean</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span><span class="n">total</span><span class="p">,</span><span class="n">TP</span><span class="p">,</span><span class="n">FP</span><span class="p">,</span><span class="n">FN</span><span class="p">,</span><span class="n">TN</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">time_taken</span><span class="p">)]</span> <span class="p">)</span>
<span class="n">df_cols</span><span class="o">=</span><span class="p">[</span><span class="s1">'model'</span><span class="p">,</span><span class="s1">'precision'</span><span class="p">,</span><span class="s1">'recall'</span><span class="p">,</span><span class="s1">'f1_score'</span><span class="p">,</span><span class="s1">'Total_samples'</span><span class="p">,</span><span class="s1">'TP'</span><span class="p">,</span><span class="s1">'FP'</span><span class="p">,</span><span class="s1">'FN'</span><span class="p">,</span><span class="s1">'TN'</span><span class="p">,</span><span class="s1">'execution_time'</span><span class="p">]</span>
<span class="n">result_df</span><span class="o">=</span><span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">results</span><span class="p">,</span><span class="n">columns</span><span class="o">=</span><span class="n">df_cols</span><span class="p">)</span>
<span class="k">return</span> <span class="n">result_df</span><span class="p">,</span><span class="n">results_cm</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h2 id="Results">Results<a class="anchor-link" href="#Results">¶</a></h2>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [298]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">result_df</span><span class="p">,</span><span class="n">results_cm</span><span class="o">=</span> <span class="n">getResults</span><span class="p">(</span><span class="n">model_dict</span><span class="p">,</span><span class="n">sample_texts</span><span class="p">,</span><span class="n">sample_target</span><span class="p">)</span>
<span class="n">result_df</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt output_prompt">Out[298]:</div>
<div class="output_html rendered_html output_subarea output_execute_result">
<div>
<style>
.dataframe thead tr:only-child th {
text-align: right;
}
.dataframe thead th {
text-align: left;
}
.dataframe tbody tr th {
vertical-align: top;
}
</style>
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>model</th>
<th>precision</th>
<th>recall</th>
<th>f1_score</th>
<th>Total_samples</th>
<th>TP</th>
<th>FP</th>
<th>FN</th>
<th>TN</th>
<th>execution_time</th>
</tr>
</thead>
<tbody>
<tr>
<th>0</th>
<td>random_forest</td>
<td>0.887624</td>
<td>0.896754</td>
<td>0.890721</td>
<td>10000</td>
<td>3743</td>
<td>338</td>
<td>732</td>
<td>5187</td>
<td>0.5935</td>
</tr>
<tr>
<th>1</th>
<td>svm</td>
<td>0.935807</td>
<td>0.947646</td>
<td>0.939390</td>
<td>10000</td>
<td>4026</td>
<td>55</td>
<td>540</td>
<td>5379</td>
<td>318.8586</td>
</tr>
<tr>
<th>2</th>
<td>deep_learning</td>
<td>0.990649</td>
<td>0.990723</td>
<td>0.990686</td>
<td>10000</td>
<td>4037</td>
<td>44</td>
<td>46</td>
<td>5873</td>
<td>5.4259</td>
</tr>
<tr>
<th>3</th>
<td>xgboost</td>
<td>0.882452</td>
<td>0.875857</td>
<td>0.878744</td>
<td>10000</td>
<td>3398</td>
<td>683</td>
<td>479</td>
<td>5440</td>
<td>0.4664</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>As we see, deep learning model does very well on the test data. The results from other models are close. I have tried this approach over multiple language emails and deep learning model is very consistent with the performance. XGboost also does very well. Please note that i have not optimized random forest and SVM much beyond the defaults. So they may have better performance with tuning.</p>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Plot-confusion-Matrix-for-all-the-models">Plot confusion Matrix for all the models<a class="anchor-link" href="#Plot-confusion-Matrix-for-all-the-models">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [300]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">plot_heatmap</span><span class="p">(</span><span class="n">cm</span><span class="p">,</span><span class="n">title</span><span class="p">):</span>
<span class="n">df_cm2</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">cm</span><span class="p">,</span> <span class="n">index</span> <span class="o">=</span> <span class="p">[</span><span class="s1">'normal'</span><span class="p">,</span> <span class="s1">'spam'</span><span class="p">])</span>
<span class="n">df_cm2</span><span class="o">.</span><span class="n">columns</span><span class="o">=</span><span class="p">[</span><span class="s1">'normal'</span><span class="p">,</span><span class="s1">'spam'</span><span class="p">]</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">axes</span><span class="p">()</span>
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">df_cm2</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s2">"d"</span><span class="p">,</span> <span class="n">linewidths</span><span class="o">=.</span><span class="mi">5</span><span class="p">,</span><span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
<span class="k">return</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="CM-for-Deep-Learning-Model">CM for Deep Learning Model<a class="anchor-link" href="#CM-for-Deep-Learning-Model">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [301]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plot_heatmap</span><span class="p">(</span><span class="n">results_cm</span><span class="p">[</span><span class="s1">'deep_learning'</span><span class="p">],</span><span class="s1">'Deep Learning'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
YII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="CM-for-SVM-Model">CM for SVM Model<a class="anchor-link" href="#CM-for-SVM-Model">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [302]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plot_heatmap</span><span class="p">(</span><span class="n">results_cm</span><span class="p">[</span><span class="s1">'svm'</span><span class="p">],</span><span class="s1">'SVM'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
xonZzCxj/j+JR+XJOCEmhwAAAABJRU5ErkJggg==
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="CM-for-Random-Forest-Model">CM for Random Forest Model<a class="anchor-link" href="#CM-for-Random-Forest-Model">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [303]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plot_heatmap</span><span class="p">(</span><span class="n">results_cm</span><span class="p">[</span><span class="s1">'random_forest'</span><span class="p">],</span><span class="s1">'Random Forest'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
gTnAh8DxUHwyWtIFrJ316fyNPS3twGxmuVJoxif/IuLoejYdsIG6AZxUz3HGAmPTnteB2cxyZXN6
V4aZWZvQmFEZWeXAbGa50pxdGa3FgdnMcsVdGWZmGeOM2cwsY5wxm5llTE3UbLxSxjkwm1muZHmS
1bQcmM0sV7I8M0laDsxmlivOmM3MMsajMszMMsajMszMMsaPZJuZZYz7mM3MMsZ9zGZmGeOM2cws
YzyO2cwsY5wxm5lljEdlmJlljG/+mZlljLsyzMwyxk/+mZllTB4yZrXARbT9/0pm1lLU1ANUte+d
OuZUr17Q5POVQ0sEZktIGhURY1q7HZYt/rmw9VW0dgM2M6NauwGWSf65sHU4MJuZZYwDs5lZxjgw
tyz3I9qG+OfC1uGbf2ZmGeOM2cwsYxyYzcwyxoG5jZA0RdKerd0OMys/B+YWIMmPvptZag7MKUnq
J+kFSX+UNEvSg5I6Sdpd0hOSZki6Q1L3pP4USVdImgacIukGSdckdedKGixpbHLMG0rOc42kack5
zmut67VNI6mzpHskTZf0nKSjJL0q6TeSZkp6UtKApO5hkqZKelbSQ5J6JeW/kDRO0t8lzZN0ZMn+
90tq17pXaeXmwNw4A4H/jYhdgCXA14DxwM8iYldgJjC6pH77iNgzIi5NvncH9gF+AkwELgd2AT4j
afekzjkRsSewK/AlSbuW+6KsWR0MvBERu0XEp4H7k/KlEfEZ4CrgiqTsH8CgiNgDuBk4o+Q4OwD7
A4cDfwYeSfZfARxa/suw1uTA3DivRMS/kvWnKf6fp1tEPJqUjQO+WFL/r+vtf1cUxyfOBN6KiJkR
UQBmAf2SOsMlPQM8SzFo79z8l2FlNBM4UNKvJX0hIpYm5TeVfO6TrPcBHpA0Ezid4r93rfsiYk1y
vErWBviZrP1ZsZxyYG6cVSXrNUC3jdRfXs/+hfWOVQCqJPUHTgMOSDLwe4COm95ca2kR8TLwWYoB
9EJJ59ZuKq2WfP4euCrJhL/Luv/Wq5LjFYA1sfaBgwJ+XW/uOTA3zVJgsaQvJN+PBR5toP7GdKEY
zJcm/Y2HNLF91sIkbQt8GBF/Bi6hGKQBjir5fDxZ7wosSNZHtlgjLfP8m7fpRgJ/kLQFMBc4flMP
FBHTJT0LvAjMBx5rniZaC/oMcImkArAG+D5wK9Bd0gyKmfDRSd1fALdIWgxMBvq3fHMti/xItlmZ
SXoV2DMi3m3ttljb4K4MM7OMccZsZpYxzpjNzDLGgdnMLGMcmM3MMsaB2cwsYxyYzcwy5v8DOVER
bvMeSpsAAAAASUVORK5CYII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="CM-for-Xgboost">CM for Xgboost<a class="anchor-link" href="#CM-for-Xgboost">¶</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [305]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">plot_heatmap</span><span class="p">(</span><span class="n">results_cm</span><span class="p">[</span><span class="s1">'xgboost'</span><span class="p">],</span><span class="s1">'xgboost'</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="output_wrapper">
<div class="output">
<div class="output_area">
<div class="prompt"></div>
<div class="output_png output_subarea ">
<img src="data:image/png;base64,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
NjPLmP8H/BTcQIivTY8AAAAASUVORK5CYII=
"
>
</div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>The code and data for this project can be obtained at :
<a href="https://github.com/sanjaymeena/Deep-Learning-based-Spam-Filter">https://github.com/sanjaymeena/Deep-Learning-based-Spam-Filter</a></p>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In [ ]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>Sanjay MeenaWe create Deep Learning based Email Spam Filter on Enron and Spam assassin dataset and compare results with Xgboost, SVM and Random forest