"mjChat"
Bootstrap 3.3.0 Snippet by mohanishappy

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="//code.jquery.com/jquery-1.11.1.min.js"></script> <!------ Include the above in your HEAD tag ----------> <div class="container"> <div class="row"> <div class="col-md-4"> <div class="col-md-4"> <div class="ui middle aligned selection list"> <div class="item"> <img class="ui avatar image" src="/images/avatar/small/helen.jpg"> <div class="content"> <div class="header">Helen</div> </div> </div> <div class="item"> <img class="ui avatar image" src="/images/avatar/small/christian.jpg"> <div class="content"> <div class="header">Christian</div> </div> </div> <div class="item"> <img class="ui avatar image" src="/images/avatar/small/daniel.jpg"> <div class="content"> <div class="header">Daniel</div> </div> </div> </div> </div </div> <div class="col-md-8"> <textarea class="form-control" id="textarea" name="textarea">default text</textarea> </div> </div> </div>
/* * # Semantic UI - 2.1.7 * https://github.com/Semantic-Org/Semantic-UI * http://www.semantic-ui.com/ * * Copyright 2014 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ @import url('https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin'); /*! * # Semantic UI 2.1.7 - Reset * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Reset *******************************/ /* Border-Box */ *, *:before, *:after { box-sizing: inherit; } html { box-sizing: border-box; } /* iPad Input Shadows */ input[type="text"], input[type="email"], input[type="search"], input[type="password"] { -webkit-appearance: none; -moz-appearance: none; /* mobile firefox too! */ } /******************************* Theme Overrides *******************************/ /*! normalize.css v3.0.1 | MIT License | git.io/normalize */ /** * Correct `block` display not defined in IE 8/9. */ /*! normalize.css v3.0.1 | MIT License | git.io/normalize */ /** * 1. Set default font family to sans-serif. * 2. Prevent iOS text size adjust after orientation change, without disabling * user zoom. */ html { font-family: sans-serif; /* 1 */ -ms-text-size-adjust: 100%; /* 2 */ -webkit-text-size-adjust: 100%; /* 2 */ } /** * Remove default margin. */ body { margin: 0; } /* HTML5 display definitions ========================================================================== */ /** * Correct `block` display not defined for any HTML5 element in IE 8/9. * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox. * Correct `block` display not defined for `main` in IE 11. */ article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** * 1. Correct `inline-block` display not defined in IE 8/9. * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. */ audio, canvas, progress, video { display: inline-block; /* 1 */ vertical-align: baseline; /* 2 */ } /** * Prevent modern browsers from displaying `audio` without controls. * Remove excess height in iOS 5 devices. */ audio:not([controls]) { display: none; height: 0; } /** * Address `[hidden]` styling not present in IE 8/9/10. * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. */ [hidden], template { display: none; } /* Links ========================================================================== */ /** * Remove the gray background color from active links in IE 10. */ a { background: transparent; } /** * Improve readability when focused and also mouse hovered in all browsers. */ a:active, a:hover { outline: 0; } /* Text-level semantics ========================================================================== */ /** * Address styling not present in IE 8/9/10/11, Safari, and Chrome. */ abbr[title] { border-bottom: 1px dotted; } /** * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. */ b, strong { font-weight: bold; } /** * Address styling not present in Safari and Chrome. */ dfn { font-style: italic; } /** * Address variable `h1` font-size and margin within `section` and `article` * contexts in Firefox 4+, Safari, and Chrome. */ h1 { font-size: 2em; margin: 0.67em 0; } /** * Address styling not present in IE 8/9. */ mark { background: #ff0; color: #000; } /** * Address inconsistent and variable font size in all browsers. */ small { font-size: 80%; } /** * Prevent `sub` and `sup` affecting `line-height` in all browsers. */ sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } /* Embedded content ========================================================================== */ /** * Remove border when inside `a` element in IE 8/9/10. */ img { border: 0; } /** * Correct overflow not hidden in IE 9/10/11. */ svg:not(:root) { overflow: hidden; } /* Grouping content ========================================================================== */ /** * Address margin not present in IE 8/9 and Safari. */ figure { margin: 1em 40px; } /** * Address differences between Firefox and other browsers. */ hr { box-sizing: content-box; height: 0; } /** * Contain overflow in all browsers. */ pre { overflow: auto; } /** * Address odd `em`-unit font size rendering in all browsers. */ code, kbd, pre, samp { font-family: monospace, monospace; font-size: 1em; } /* Forms ========================================================================== */ /** * Known limitation: by default, Chrome and Safari on OS X allow very limited * styling of `select`, unless a `border` property is set. */ /** * 1. Correct color not being inherited. * Known issue: affects color of disabled elements. * 2. Correct font properties not being inherited. * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. */ button, input, optgroup, select, textarea { color: inherit; /* 1 */ font: inherit; /* 2 */ margin: 0; /* 3 */ } /** * Address `overflow` set to `hidden` in IE 8/9/10/11. */ button { overflow: visible; } /** * Address inconsistent `text-transform` inheritance for `button` and `select`. * All other form control elements do not inherit `text-transform` values. * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. * Correct `select` style inheritance in Firefox. */ button, select { text-transform: none; } /** * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` * and `video` controls. * 2. Correct inability to style clickable `input` types in iOS. * 3. Improve usability and consistency of cursor style between image-type * `input` and others. */ button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; /* 2 */ cursor: pointer; /* 3 */ } /** * Re-set default cursor for disabled elements. */ button[disabled], html input[disabled] { cursor: default; } /** * Remove inner padding and border in Firefox 4+. */ button::-moz-focus-inner, input::-moz-focus-inner { border: 0; padding: 0; } /** * Address Firefox 4+ setting `line-height` on `input` using `!important` in * the UA stylesheet. */ input { line-height: normal; } /** * It's recommended that you don't attempt to style these elements. * Firefox's implementation doesn't respect box-sizing, padding, or width. * * 1. Address box sizing set to `content-box` in IE 8/9/10. * 2. Remove excess padding in IE 8/9/10. */ input[type="checkbox"], input[type="radio"] { box-sizing: border-box; /* 1 */ padding: 0; /* 2 */ } /** * Fix the cursor style for Chrome's increment/decrement buttons. For certain * `font-size` values of the `input`, it causes the cursor style of the * decrement button to change from `default` to `text`. */ input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { height: auto; } /** * 1. Address `appearance` set to `searchfield` in Safari and Chrome. * 2. Address `box-sizing` set to `border-box` in Safari and Chrome * (include `-moz` to future-proof). */ input[type="search"] { -webkit-appearance: textfield; /* 1 */ /* 2 */ box-sizing: content-box; } /** * Remove inner padding and search cancel button in Safari and Chrome on OS X. * Safari (but not Chrome) clips the cancel button when the search input has * padding (and `textfield` appearance). */ input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { -webkit-appearance: none; } /** * Define consistent border, margin, and padding. */ fieldset { border: 1px solid #c0c0c0; margin: 0 2px; padding: 0.35em 0.625em 0.75em; } /** * 1. Correct `color` not being inherited in IE 8/9/10/11. * 2. Remove padding so people aren't caught out if they zero out fieldsets. */ legend { border: 0; /* 1 */ padding: 0; /* 2 */ } /** * Remove default vertical scrollbar in IE 8/9/10/11. */ textarea { overflow: auto; } /** * Don't inherit the `font-weight` (applied by a rule above). * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. */ optgroup { font-weight: bold; } /* Tables ========================================================================== */ /** * Remove most spacing between table cells. */ table { border-collapse: collapse; border-spacing: 0; } td, th { padding: 0; } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Site * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Page *******************************/ html, body { height: 100%; } html { font-size: 14px; } body { margin: 0px; padding: 0px; overflow-x: hidden; min-width: 320px; background: #ffffff; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.4285em; color: rgba(0, 0, 0, 0.87); font-smoothing: antialiased; } /******************************* Headers *******************************/ h1, h2, h3, h4, h5 { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; line-height: 1.2857em; margin: calc(2rem - 0.14285em ) 0em 1rem; font-weight: bold; padding: 0em; } h1 { min-height: 1rem; font-size: 2rem; } h2 { font-size: 1.714rem; } h3 { font-size: 1.28rem; } h4 { font-size: 1.071rem; } h5 { font-size: 1rem; } h1:first-child, h2:first-child, h3:first-child, h4:first-child, h5:first-child { margin-top: 0em; } h1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child { margin-bottom: 0em; } /******************************* Text *******************************/ p { margin: 0em 0em 1em; line-height: 1.4285em; } p:first-child { margin-top: 0em; } p:last-child { margin-bottom: 0em; } /*------------------- Links --------------------*/ a { color: #4183c4; text-decoration: none; } a:hover { color: #1e70bf; text-decoration: none; } /******************************* Highlighting *******************************/ /* Site */ ::-webkit-selection { background-color: #cce2ff; color: rgba(0, 0, 0, 0.87); } ::-moz-selection { background-color: #cce2ff; color: rgba(0, 0, 0, 0.87); } ::selection { background-color: #cce2ff; color: rgba(0, 0, 0, 0.87); } /* Form */ textarea::-webkit-selection, input::-webkit-selection { background-color: rgba(100, 100, 100, 0.4); color: rgba(0, 0, 0, 0.87); } textarea::-moz-selection, input::-moz-selection { background-color: rgba(100, 100, 100, 0.4); color: rgba(0, 0, 0, 0.87); } textarea::selection, input::selection { background-color: rgba(100, 100, 100, 0.4); color: rgba(0, 0, 0, 0.87); } /******************************* Global Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Button * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Button *******************************/ .ui.button { cursor: pointer; display: inline-block; min-height: 1em; outline: none; border: none; vertical-align: baseline; background: #e0e1e2 none; color: rgba(0, 0, 0, 0.6); font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; margin: 0em 0.25em 0em 0em; padding: 0.78571429em 1.5em 0.78571429em; text-transform: none; text-shadow: none; font-weight: bold; line-height: 1em; font-style: normal; text-align: center; text-decoration: none; border-radius: 0.28571429rem; box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease; transition: opacity 0.1s ease, background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, background 0.1s ease; will-change: ''; -webkit-tap-highlight-color: transparent; } /******************************* States *******************************/ /*-------------- Hover ---------------*/ .ui.button:hover { background-color: #cacbcd; background-image: none; box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; color: rgba(0, 0, 0, 0.8); } .ui.button:hover .icon { opacity: 0.85; } /*-------------- Focus ---------------*/ .ui.button:focus { background-color: #cacbcd; color: rgba(0, 0, 0, 0.8); background-image: '' !important; box-shadow: '' !important; } .ui.button:focus .icon { opacity: 0.85; } /*-------------- Down ---------------*/ .ui.button:active, .ui.active.button:active { background-color: #babbbc; background-image: ''; color: rgba(0, 0, 0, 0.9); box-shadow: 0px 0px 0px 1px transparent inset, none; } /*-------------- Active ---------------*/ .ui.active.button { background-color: #c0c1c2; background-image: none; box-shadow: 0px 0px 0px 1px transparent inset; color: rgba(0, 0, 0, 0.95); } .ui.active.button:hover { background-color: #c0c1c2; background-image: none; color: rgba(0, 0, 0, 0.95); } .ui.active.button:active { background-color: #c0c1c2; background-image: none; } /*-------------- Loading ---------------*/ /* Specificity hack */ .ui.loading.loading.loading.loading.loading.loading.button { position: relative; cursor: default; text-shadow: none !important; color: transparent !important; opacity: 1; pointer-events: auto; -webkit-transition: all 0s linear, opacity 0.1s ease; transition: all 0s linear, opacity 0.1s ease; } .ui.loading.button:before { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.15); } .ui.loading.button:after { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; -webkit-animation: button-spin 0.6s linear; animation: button-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #ffffff transparent transparent; border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; } .ui.labeled.icon.loading.button .icon { background-color: transparent; box-shadow: none; } @-webkit-keyframes button-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes button-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .ui.basic.loading.button:not(.inverted):before { border-color: rgba(0, 0, 0, 0.1); } .ui.basic.loading.button:not(.inverted):after { border-top-color: #767676; } /*------------------- Disabled --------------------*/ .ui.buttons .disabled.button, .ui.disabled.button, .ui.button:disabled, .ui.disabled.button:hover, .ui.disabled.active.button { cursor: default; opacity: 0.45 !important; background-image: none !important; box-shadow: none !important; pointer-events: none; } /* Basic Group With Disabled */ .ui.basic.buttons .ui.disabled.button { border-color: rgba(34, 36, 38, 0.5); } /******************************* Types *******************************/ /*------------------- Animated --------------------*/ .ui.animated.button { position: relative; overflow: hidden; padding-right: 0em !important; vertical-align: middle; z-index: 1; } .ui.animated.button .content { will-change: transform, opacity; } .ui.animated.button .visible.content { position: relative; margin-right: 1.5em; } .ui.animated.button .hidden.content { position: absolute; width: 100%; } /* Horizontal */ .ui.animated.button .visible.content, .ui.animated.button .hidden.content { -webkit-transition: right 0.3s ease 0s; transition: right 0.3s ease 0s; } .ui.animated.button .visible.content { left: auto; right: 0%; } .ui.animated.button .hidden.content { top: 50%; left: auto; right: -100%; margin-top: -0.5em; } .ui.animated.button:focus .visible.content, .ui.animated.button:hover .visible.content { left: auto; right: 200%; } .ui.animated.button:focus .hidden.content, .ui.animated.button:hover .hidden.content { left: auto; right: 0%; } /* Vertical */ .ui.vertical.animated.button .visible.content, .ui.vertical.animated.button .hidden.content { -webkit-transition: top 0.3s ease, -webkit-transform 0.3s ease; transition: top 0.3s ease, transform 0.3s ease; } .ui.vertical.animated.button .visible.content { -webkit-transform: translateY(0%); -ms-transform: translateY(0%); transform: translateY(0%); right: auto; } .ui.vertical.animated.button .hidden.content { top: -50%; left: 0%; right: auto; } .ui.vertical.animated.button:focus .visible.content, .ui.vertical.animated.button:hover .visible.content { -webkit-transform: translateY(200%); -ms-transform: translateY(200%); transform: translateY(200%); right: auto; } .ui.vertical.animated.button:focus .hidden.content, .ui.vertical.animated.button:hover .hidden.content { top: 50%; right: auto; } /* Fade */ .ui.fade.animated.button .visible.content, .ui.fade.animated.button .hidden.content { -webkit-transition: opacity 0.3s ease, -webkit-transform 0.3s ease; transition: opacity 0.3s ease, transform 0.3s ease; } .ui.fade.animated.button .visible.content { left: auto; right: auto; opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } .ui.fade.animated.button .hidden.content { opacity: 0; left: 0%; right: auto; -webkit-transform: scale(1.5); -ms-transform: scale(1.5); transform: scale(1.5); } .ui.fade.animated.button:focus .visible.content, .ui.fade.animated.button:hover .visible.content { left: auto; right: auto; opacity: 0; -webkit-transform: scale(0.75); -ms-transform: scale(0.75); transform: scale(0.75); } .ui.fade.animated.button:focus .hidden.content, .ui.fade.animated.button:hover .hidden.content { left: 0%; right: auto; opacity: 1; -webkit-transform: scale(1); -ms-transform: scale(1); transform: scale(1); } /*------------------- Inverted --------------------*/ .ui.inverted.button { box-shadow: 0px 0px 0px 2px #ffffff inset !important; background: transparent none; color: #ffffff; text-shadow: none !important; } /* Group */ .ui.inverted.buttons .button { margin: 0px 0px 0px -2px; } .ui.inverted.buttons .button:first-child { margin-left: 0em; } .ui.inverted.vertical.buttons .button { margin: 0px 0px -2px 0px; } .ui.inverted.vertical.buttons .button:first-child { margin-top: 0em; } /* States */ /* Hover */ .ui.inverted.button:hover { background: #ffffff; box-shadow: 0px 0px 0px 2px #ffffff inset !important; color: rgba(0, 0, 0, 0.8); } /* Active / Focus */ .ui.inverted.button:focus, .ui.inverted.button.active { background: #ffffff; box-shadow: 0px 0px 0px 2px #ffffff inset !important; color: rgba(0, 0, 0, 0.8); } /* Active Focus */ .ui.inverted.button.active:focus { background: #dcddde; box-shadow: 0px 0px 0px 2px #dcddde inset !important; color: rgba(0, 0, 0, 0.8); } /*------------------- Labeled Button --------------------*/ .ui.labeled.button:not(.icon) { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; background: none !important; padding: 0px !important; border: none !important; box-shadow: none !important; } .ui.labeled.button > .button { margin: 0px; } .ui.labeled.button > .label { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; margin: 0px 0px 0px -1px !important; padding: ''; font-size: 1em; border-color: rgba(34, 36, 38, 0.15); } /* Tag */ .ui.labeled.button > .tag.label:before { width: 1.85em; height: 1.85em; } /* Right */ .ui.labeled.button:not([class*="left labeled"]) > .button { border-top-right-radius: 0px; border-bottom-right-radius: 0px; } .ui.labeled.button:not([class*="left labeled"]) > .label { border-top-left-radius: 0px; border-bottom-left-radius: 0px; } /* Left Side */ .ui[class*="left labeled"].button > .button { border-top-left-radius: 0px; border-bottom-left-radius: 0px; } .ui[class*="left labeled"].button > .label { border-top-right-radius: 0px; border-bottom-right-radius: 0px; } /*------------------- Social --------------------*/ /* Facebook */ .ui.facebook.button { background-color: #3b5998; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.facebook.button:hover { background-color: #304d8a; color: #ffffff; text-shadow: none; } .ui.facebook.button:active { background-color: #2d4373; color: #ffffff; text-shadow: none; } /* Twitter */ .ui.twitter.button { background-color: #0084b4; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.twitter.button:hover { background-color: #00719b; color: #ffffff; text-shadow: none; } .ui.twitter.button:active { background-color: #005f81; color: #ffffff; text-shadow: none; } /* Google Plus */ .ui.google.plus.button { background-color: #dc4a38; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.google.plus.button:hover { background-color: #de321d; color: #ffffff; text-shadow: none; } .ui.google.plus.button:active { background-color: #bf3322; color: #ffffff; text-shadow: none; } /* Linked In */ .ui.linkedin.button { background-color: #1f88be; color: #ffffff; text-shadow: none; } .ui.linkedin.button:hover { background-color: #147baf; color: #ffffff; text-shadow: none; } .ui.linkedin.button:active { background-color: #186992; color: #ffffff; text-shadow: none; } /* YouTube */ .ui.youtube.button { background-color: #cc181e; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.youtube.button:hover { background-color: #bd0d13; color: #ffffff; text-shadow: none; } .ui.youtube.button:active { background-color: #9e1317; color: #ffffff; text-shadow: none; } /* Instagram */ .ui.instagram.button { background-color: #49769c; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.instagram.button:hover { background-color: #3d698e; color: #ffffff; text-shadow: none; } .ui.instagram.button:active { background-color: #395c79; color: #ffffff; text-shadow: none; } /* Pinterest */ .ui.pinterest.button { background-color: #00aced; color: #ffffff; text-shadow: none; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.pinterest.button:hover { background-color: #0099d4; color: #ffffff; text-shadow: none; } .ui.pinterest.button:active { background-color: #0087ba; color: #ffffff; text-shadow: none; } /* VK */ .ui.vk.button { background-color: #4D7198; color: #ffffff; background-image: none; box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.vk.button:hover { background-color: #41648a; color: #ffffff; } .ui.vk.button:active { background-color: #3c5876; color: #ffffff; } /*-------------- Icon ---------------*/ .ui.button > .icon:not(.button) { height: 0.85714286em; opacity: 0.8; margin: 0em 0.42857143em 0em -0.21428571em; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; vertical-align: ''; color: ''; } .ui.button > .right.icon:not(.button) { margin: 0em -0.21428571em 0em 0.42857143em; } /******************************* Variations *******************************/ /*------------------- Floated --------------------*/ .ui[class*="left floated"].buttons, .ui[class*="left floated"].button { float: left; margin-left: 0em; margin-right: 0.25em; } .ui[class*="right floated"].buttons, .ui[class*="right floated"].button { float: right; margin-right: 0em; margin-left: 0.25em; } /*------------------- Compact --------------------*/ .ui.compact.buttons .button, .ui.compact.button { padding: 0.58928571em 1.125em 0.58928571em; } .ui.compact.icon.buttons .button, .ui.compact.icon.button { padding: 0.58928571em 0.58928571em 0.58928571em; } .ui.compact.labeled.icon.buttons .button, .ui.compact.labeled.icon.button { padding: 0.58928571em 3.69642857em 0.58928571em; } /*------------------- Sizes --------------------*/ .ui.mini.buttons .button, .ui.mini.buttons .or, .ui.mini.button { font-size: 0.71428571rem; } .ui.tiny.buttons .button, .ui.tiny.buttons .or, .ui.tiny.button { font-size: 0.85714286rem; } .ui.small.buttons .button, .ui.small.buttons .or, .ui.small.button { font-size: 0.92857143rem; } .ui.buttons .button, .ui.buttons .or, .ui.button { font-size: 1rem; } .ui.large.buttons .button, .ui.large.buttons .or, .ui.large.button { font-size: 1.14285714rem; } .ui.big.buttons .button, .ui.big.buttons .or, .ui.big.button { font-size: 1.28571429rem; } .ui.huge.buttons .button, .ui.huge.buttons .or, .ui.huge.button { font-size: 1.42857143rem; } .ui.massive.buttons .button, .ui.massive.buttons .or, .ui.massive.button { font-size: 1.71428571rem; } /*-------------- Icon Only ---------------*/ .ui.icon.buttons .button, .ui.icon.button { padding: 0.78571429em 0.78571429em 0.78571429em; } .ui.icon.buttons .button > .icon, .ui.icon.button > .icon { opacity: 0.9; margin: 0em; vertical-align: top; } /*------------------- Basic --------------------*/ .ui.basic.buttons .button, .ui.basic.button { background: transparent none !important; color: rgba(0, 0, 0, 0.6) !important; font-weight: normal; border-radius: 0.28571429rem; text-transform: none; text-shadow: none !important; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; } .ui.basic.buttons { box-shadow: none; border: 1px solid rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; } .ui.basic.buttons .button { border-radius: 0em; } .ui.basic.buttons .button:hover, .ui.basic.button:hover { background: #ffffff !important; color: rgba(0, 0, 0, 0.8) !important; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.basic.buttons .button:focus, .ui.basic.button:focus { background: #ffffff !important; color: rgba(0, 0, 0, 0.8) !important; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.basic.buttons .button:active, .ui.basic.button:active { background: #f8f8f8 !important; color: rgba(0, 0, 0, 0.9) !important; box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset; } .ui.basic.buttons .active.button, .ui.basic.active.button { background: rgba(0, 0, 0, 0.05) !important; box-shadow: '' !important; color: rgba(0, 0, 0, 0.95); box-shadow: rgba(34, 36, 38, 0.35); } .ui.basic.buttons .active.button:hover, .ui.basic.active.button:hover { background-color: rgba(0, 0, 0, 0.05); } /* Vertical */ .ui.basic.buttons .button:hover { box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.35) inset, 0px 0px 0px 0px rgba(34, 36, 38, 0.15) inset inset; } .ui.basic.buttons .button:active { box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.15) inset, 0px 1px 4px 0px rgba(34, 36, 38, 0.15) inset inset; } .ui.basic.buttons .active.button { box-shadow: rgba(34, 36, 38, 0.35) inset; } /* Standard Basic Inverted */ .ui.basic.inverted.buttons .button, .ui.basic.inverted.button { background-color: transparent !important; color: #f9fafb !important; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; } .ui.basic.inverted.buttons .button:hover, .ui.basic.inverted.button:hover { color: #ffffff !important; box-shadow: 0px 0px 0px 2px #ffffff inset !important; } .ui.basic.inverted.buttons .button:focus, .ui.basic.inverted.button:focus { color: #ffffff !important; box-shadow: 0px 0px 0px 2px #ffffff inset !important; } .ui.basic.inverted.buttons .button:active, .ui.basic.inverted.button:active { background-color: rgba(255, 255, 255, 0.08) !important; color: #ffffff !important; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.9) inset !important; } .ui.basic.inverted.buttons .active.button, .ui.basic.inverted.active.button { background-color: rgba(255, 255, 255, 0.08); color: #ffffff; text-shadow: none; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.7) inset; } .ui.basic.inverted.buttons .active.button:hover, .ui.basic.inverted.active.button:hover { background-color: rgba(255, 255, 255, 0.15); box-shadow: 0px 0px 0px 2px #ffffff inset !important; } /* Basic Group */ .ui.basic.buttons .button { border-left: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none; } .ui.basic.vertical.buttons .button { border-left: none; } .ui.basic.vertical.buttons .button { border-left-width: 0px; border-top: 1px solid rgba(34, 36, 38, 0.15); } .ui.basic.vertical.buttons .button:first-child { border-top-width: 0px; } /*-------------- Labeled Icon ---------------*/ .ui.labeled.icon.buttons .button, .ui.labeled.icon.button { position: relative; padding-left: 4.07142857em !important; padding-right: 1.5em !important; } /* Left Labeled */ .ui.labeled.icon.buttons > .button > .icon, .ui.labeled.icon.button > .icon { position: absolute; height: 100%; line-height: 1; border-radius: 0px; border-top-left-radius: inherit; border-bottom-left-radius: inherit; text-align: center; margin: 0em; width: 2.57142857em; background-color: rgba(0, 0, 0, 0.05); color: ''; box-shadow: -1px 0px 0px 0px transparent inset; } /* Left Labeled */ .ui.labeled.icon.buttons > .button > .icon, .ui.labeled.icon.button > .icon { top: 0em; left: 0em; } /* Right Labeled */ .ui[class*="right labeled"].icon.button { padding-right: 4.07142857em !important; padding-left: 1.5em !important; } .ui[class*="right labeled"].icon.button > .icon { left: auto; right: 0em; border-radius: 0px; border-top-right-radius: inherit; border-bottom-right-radius: inherit; box-shadow: 1px 0px 0px 0px transparent inset; } .ui.labeled.icon.buttons > .button > .icon:before, .ui.labeled.icon.button > .icon:before, .ui.labeled.icon.buttons > .button > .icon:after, .ui.labeled.icon.button > .icon:after { display: block; position: absolute; width: 100%; top: 50%; text-align: center; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%); } .ui.labeled.icon.buttons .button > .icon { border-radius: 0em; } .ui.labeled.icon.buttons .button:first-child > .icon { border-top-left-radius: 0.28571429rem; border-bottom-left-radius: 0.28571429rem; } .ui.labeled.icon.buttons .button:last-child > .icon { border-top-right-radius: 0.28571429rem; border-bottom-right-radius: 0.28571429rem; } .ui.vertical.labeled.icon.buttons .button:first-child > .icon { border-radius: 0em; border-top-left-radius: 0.28571429rem; } .ui.vertical.labeled.icon.buttons .button:last-child > .icon { border-radius: 0em; border-bottom-left-radius: 0.28571429rem; } /* Fluid Labeled */ .ui.fluid[class*="left labeled"].icon.button, .ui.fluid[class*="right labeled"].icon.button { padding-left: 1.5em !important; padding-right: 1.5em !important; } /*-------------- Toggle ---------------*/ /* Toggle (Modifies active state to give affordances) */ .ui.toggle.buttons .active.button, .ui.buttons .button.toggle.active, .ui.button.toggle.active { background-color: #21ba45 !important; box-shadow: none !important; text-shadow: none; color: #ffffff !important; } .ui.button.toggle.active:hover { background-color: #16ab39 !important; text-shadow: none; color: #ffffff !important; } /*-------------- Circular ---------------*/ .ui.circular.button { border-radius: 10em; } .ui.circular.button > .icon { width: 1em; vertical-align: baseline; } /*------------------- Or Buttons --------------------*/ .ui.buttons .or { position: relative; width: 0.3em; height: 2.57142857em; z-index: 3; } .ui.buttons .or:before { position: absolute; text-align: center; border-radius: 500rem; content: 'or'; top: 50%; left: 50%; background-color: #ffffff; text-shadow: none; margin-top: -0.89285714em; margin-left: -0.89285714em; width: 1.78571429em; height: 1.78571429em; line-height: 1.78571429em; color: rgba(0, 0, 0, 0.4); font-style: normal; font-weight: bold; box-shadow: 0px 0px 0px 1px transparent inset; } .ui.buttons .or[data-text]:before { content: attr(data-text); } /* Fluid Or */ .ui.fluid.buttons .or { width: 0em !important; } .ui.fluid.buttons .or:after { display: none; } /*------------------- Attached --------------------*/ /* Singular */ .ui.attached.button { position: relative; display: block; margin: 0em; border-radius: 0em; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) !important; } /* Top / Bottom */ .ui.attached.top.button { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.attached.bottom.button { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Left / Right */ .ui.left.attached.button { display: inline-block; border-left: none; text-align: right; padding-right: 0.75em; border-radius: 0.28571429rem 0em 0em 0.28571429rem; } .ui.right.attached.button { display: inline-block; text-align: left; padding-left: 0.75em; border-radius: 0em 0.28571429rem 0.28571429rem 0em; } /* Plural */ .ui.attached.buttons { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; border-radius: 0em; width: auto !important; z-index: 2; margin-left: -1px; margin-right: -1px; } .ui.attached.buttons .button { margin: 0em; } .ui.attached.buttons .button:first-child { border-radius: 0em; } .ui.attached.buttons .button:last-child { border-radius: 0em; } /* Top / Bottom */ .ui[class*="top attached"].buttons { margin-bottom: -1px; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui[class*="top attached"].buttons .button:first-child { border-radius: 0.28571429rem 0em 0em 0em; } .ui[class*="top attached"].buttons .button:last-child { border-radius: 0em 0.28571429rem 0em 0em; } .ui[class*="bottom attached"].buttons { margin-top: -1px; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui[class*="bottom attached"].buttons .button:first-child { border-radius: 0em 0em 0em 0.28571429rem; } .ui[class*="bottom attached"].buttons .button:last-child { border-radius: 0em 0em 0.28571429rem 0em; } /* Left / Right */ .ui[class*="left attached"].buttons { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; margin-right: 0em; margin-left: -1px; border-radius: 0em 0.28571429rem 0.28571429rem 0em; } .ui[class*="left attached"].buttons .button:first-child { margin-left: -1px; border-radius: 0em 0.28571429rem 0em 0em; } .ui[class*="left attached"].buttons .button:last-child { margin-left: -1px; border-radius: 0em 0em 0.28571429rem 0em; } .ui[class*="right attached"].buttons { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; margin-left: 0em; margin-right: -1px; border-radius: 0.28571429rem 0em 0em 0.28571429rem; } .ui[class*="right attached"].buttons .button:first-child { margin-left: -1px; border-radius: 0.28571429rem 0em 0em 0em; } .ui[class*="right attached"].buttons .button:last-child { margin-left: -1px; border-radius: 0em 0em 0em 0.28571429rem; } /*------------------- Fluid --------------------*/ .ui.fluid.buttons, .ui.fluid.button { width: 100%; } .ui.fluid.button { display: block; } .ui.two.buttons { width: 100%; } .ui.two.buttons > .button { width: 50%; } .ui.three.buttons { width: 100%; } .ui.three.buttons > .button { width: 33.333%; } .ui.four.buttons { width: 100%; } .ui.four.buttons > .button { width: 25%; } .ui.five.buttons { width: 100%; } .ui.five.buttons > .button { width: 20%; } .ui.six.buttons { width: 100%; } .ui.six.buttons > .button { width: 16.666%; } .ui.seven.buttons { width: 100%; } .ui.seven.buttons > .button { width: 14.285%; } .ui.eight.buttons { width: 100%; } .ui.eight.buttons > .button { width: 12.500%; } .ui.nine.buttons { width: 100%; } .ui.nine.buttons > .button { width: 11.11%; } .ui.ten.buttons { width: 100%; } .ui.ten.buttons > .button { width: 10%; } .ui.eleven.buttons { width: 100%; } .ui.eleven.buttons > .button { width: 9.09%; } .ui.twelve.buttons { width: 100%; } .ui.twelve.buttons > .button { width: 8.3333%; } /* Fluid Vertical Buttons */ .ui.fluid.vertical.buttons, .ui.fluid.vertical.buttons > .button { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: auto; } .ui.two.vertical.buttons > .button { height: 50%; } .ui.three.vertical.buttons > .button { height: 33.333%; } .ui.four.vertical.buttons > .button { height: 25%; } .ui.five.vertical.buttons > .button { height: 20%; } .ui.six.vertical.buttons > .button { height: 16.666%; } .ui.seven.vertical.buttons > .button { height: 14.285%; } .ui.eight.vertical.buttons > .button { height: 12.500%; } .ui.nine.vertical.buttons > .button { height: 11.11%; } .ui.ten.vertical.buttons > .button { height: 10%; } .ui.eleven.vertical.buttons > .button { height: 9.09%; } .ui.twelve.vertical.buttons > .button { height: 8.3333%; } /*------------------- Colors --------------------*/ /*--- Black ---*/ .ui.black.buttons .button, .ui.black.button { background-color: #1b1c1d; color: #ffffff; text-shadow: none; background-image: none; } .ui.black.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.black.buttons .button:hover, .ui.black.button:hover { background-color: #27292a; color: #ffffff; text-shadow: none; } .ui.black.buttons .button:focus, .ui.black.button:focus { background-color: #2f3032; color: #ffffff; text-shadow: none; } .ui.black.buttons .button:active, .ui.black.button:active { background-color: #343637; color: #ffffff; text-shadow: none; } .ui.black.buttons .active.button, .ui.black.buttons .active.button:active, .ui.black.active.button, .ui.black.button .active.button:active { background-color: #0f0f10; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.black.buttons .button, .ui.basic.black.button { box-shadow: 0px 0px 0px 1px #1b1c1d inset !important; color: #1b1c1d !important; } .ui.basic.black.buttons .button:hover, .ui.basic.black.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #27292a inset !important; color: #27292a !important; } .ui.basic.black.buttons .button:focus, .ui.basic.black.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #2f3032 inset !important; color: #27292a !important; } .ui.basic.black.buttons .active.button, .ui.basic.black.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #0f0f10 inset !important; color: #343637 !important; } .ui.basic.black.buttons .button:active, .ui.basic.black.button:active { box-shadow: 0px 0px 0px 1px #343637 inset !important; color: #343637 !important; } .ui.buttons:not(.vertical) > .basic.black.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.black.buttons .button, .ui.inverted.black.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #d4d4d5 inset !important; color: #ffffff; } .ui.inverted.black.buttons .button:hover, .ui.inverted.black.button:hover, .ui.inverted.black.buttons .button:focus, .ui.inverted.black.button:focus, .ui.inverted.black.buttons .button.active, .ui.inverted.black.button.active, .ui.inverted.black.buttons .button:active, .ui.inverted.black.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.black.buttons .button:hover, .ui.inverted.black.button:hover { background-color: #000000; } .ui.inverted.black.buttons .button:focus, .ui.inverted.black.button:focus { background-color: #000000; } .ui.inverted.black.buttons .active.button, .ui.inverted.black.active.button { background-color: #000000; } .ui.inverted.black.buttons .button:active, .ui.inverted.black.button:active { background-color: #000000; } /* Inverted Basic */ .ui.inverted.black.basic.buttons .button, .ui.inverted.black.buttons .basic.button, .ui.inverted.black.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.black.basic.buttons .button:hover, .ui.inverted.black.buttons .basic.button:hover, .ui.inverted.black.basic.button:hover { box-shadow: 0px 0px 0px 2px #000000 inset !important; color: #ffffff !important; } .ui.inverted.black.basic.buttons .button:focus, .ui.inverted.black.basic.buttons .button:focus, .ui.inverted.black.basic.button:focus { box-shadow: 0px 0px 0px 2px #000000 inset !important; color: #545454 !important; } .ui.inverted.black.basic.buttons .active.button, .ui.inverted.black.buttons .basic.active.button, .ui.inverted.black.basic.active.button { box-shadow: 0px 0px 0px 2px #000000 inset !important; color: #ffffff !important; } .ui.inverted.black.basic.buttons .button:active, .ui.inverted.black.buttons .basic.button:active, .ui.inverted.black.basic.button:active { box-shadow: 0px 0px 0px 2px #000000 inset !important; color: #ffffff !important; } /*--- Grey ---*/ .ui.grey.buttons .button, .ui.grey.button { background-color: #767676; color: #ffffff; text-shadow: none; background-image: none; } .ui.grey.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.grey.buttons .button:hover, .ui.grey.button:hover { background-color: #838383; color: #ffffff; text-shadow: none; } .ui.grey.buttons .button:focus, .ui.grey.button:focus { background-color: #8a8a8a; color: #ffffff; text-shadow: none; } .ui.grey.buttons .button:active, .ui.grey.button:active { background-color: #909090; color: #ffffff; text-shadow: none; } .ui.grey.buttons .active.button, .ui.grey.buttons .active.button:active, .ui.grey.active.button, .ui.grey.button .active.button:active { background-color: #696969; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.grey.buttons .button, .ui.basic.grey.button { box-shadow: 0px 0px 0px 1px #767676 inset !important; color: #767676 !important; } .ui.basic.grey.buttons .button:hover, .ui.basic.grey.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #838383 inset !important; color: #838383 !important; } .ui.basic.grey.buttons .button:focus, .ui.basic.grey.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #8a8a8a inset !important; color: #838383 !important; } .ui.basic.grey.buttons .active.button, .ui.basic.grey.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #696969 inset !important; color: #909090 !important; } .ui.basic.grey.buttons .button:active, .ui.basic.grey.button:active { box-shadow: 0px 0px 0px 1px #909090 inset !important; color: #909090 !important; } .ui.buttons:not(.vertical) > .basic.grey.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.grey.buttons .button, .ui.inverted.grey.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #d4d4d5 inset !important; color: #ffffff; } .ui.inverted.grey.buttons .button:hover, .ui.inverted.grey.button:hover, .ui.inverted.grey.buttons .button:focus, .ui.inverted.grey.button:focus, .ui.inverted.grey.buttons .button.active, .ui.inverted.grey.button.active, .ui.inverted.grey.buttons .button:active, .ui.inverted.grey.button:active { box-shadow: none !important; color: rgba(0, 0, 0, 0.6); } .ui.inverted.grey.buttons .button:hover, .ui.inverted.grey.button:hover { background-color: #cfd0d2; } .ui.inverted.grey.buttons .button:focus, .ui.inverted.grey.button:focus { background-color: #c7c9cb; } .ui.inverted.grey.buttons .active.button, .ui.inverted.grey.active.button { background-color: #cfd0d2; } .ui.inverted.grey.buttons .button:active, .ui.inverted.grey.button:active { background-color: #c2c4c5; } /* Inverted Basic */ .ui.inverted.grey.basic.buttons .button, .ui.inverted.grey.buttons .basic.button, .ui.inverted.grey.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.grey.basic.buttons .button:hover, .ui.inverted.grey.buttons .basic.button:hover, .ui.inverted.grey.basic.button:hover { box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; color: #ffffff !important; } .ui.inverted.grey.basic.buttons .button:focus, .ui.inverted.grey.basic.buttons .button:focus, .ui.inverted.grey.basic.button:focus { box-shadow: 0px 0px 0px 2px #c7c9cb inset !important; color: #dcddde !important; } .ui.inverted.grey.basic.buttons .active.button, .ui.inverted.grey.buttons .basic.active.button, .ui.inverted.grey.basic.active.button { box-shadow: 0px 0px 0px 2px #cfd0d2 inset !important; color: #ffffff !important; } .ui.inverted.grey.basic.buttons .button:active, .ui.inverted.grey.buttons .basic.button:active, .ui.inverted.grey.basic.button:active { box-shadow: 0px 0px 0px 2px #c2c4c5 inset !important; color: #ffffff !important; } /*--- Brown ---*/ .ui.brown.buttons .button, .ui.brown.button { background-color: #a5673f; color: #ffffff; text-shadow: none; background-image: none; } .ui.brown.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.brown.buttons .button:hover, .ui.brown.button:hover { background-color: #975b33; color: #ffffff; text-shadow: none; } .ui.brown.buttons .button:focus, .ui.brown.button:focus { background-color: #90532b; color: #ffffff; text-shadow: none; } .ui.brown.buttons .button:active, .ui.brown.button:active { background-color: #805031; color: #ffffff; text-shadow: none; } .ui.brown.buttons .active.button, .ui.brown.buttons .active.button:active, .ui.brown.active.button, .ui.brown.button .active.button:active { background-color: #995a31; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.brown.buttons .button, .ui.basic.brown.button { box-shadow: 0px 0px 0px 1px #a5673f inset !important; color: #a5673f !important; } .ui.basic.brown.buttons .button:hover, .ui.basic.brown.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #975b33 inset !important; color: #975b33 !important; } .ui.basic.brown.buttons .button:focus, .ui.basic.brown.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #90532b inset !important; color: #975b33 !important; } .ui.basic.brown.buttons .active.button, .ui.basic.brown.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #995a31 inset !important; color: #805031 !important; } .ui.basic.brown.buttons .button:active, .ui.basic.brown.button:active { box-shadow: 0px 0px 0px 1px #805031 inset !important; color: #805031 !important; } .ui.buttons:not(.vertical) > .basic.brown.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.brown.buttons .button, .ui.inverted.brown.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #d67c1c inset !important; color: #d67c1c; } .ui.inverted.brown.buttons .button:hover, .ui.inverted.brown.button:hover, .ui.inverted.brown.buttons .button:focus, .ui.inverted.brown.button:focus, .ui.inverted.brown.buttons .button.active, .ui.inverted.brown.button.active, .ui.inverted.brown.buttons .button:active, .ui.inverted.brown.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.brown.buttons .button:hover, .ui.inverted.brown.button:hover { background-color: #c86f11; } .ui.inverted.brown.buttons .button:focus, .ui.inverted.brown.button:focus { background-color: #c16808; } .ui.inverted.brown.buttons .active.button, .ui.inverted.brown.active.button { background-color: #cc6f0d; } .ui.inverted.brown.buttons .button:active, .ui.inverted.brown.button:active { background-color: #a96216; } /* Inverted Basic */ .ui.inverted.brown.basic.buttons .button, .ui.inverted.brown.buttons .basic.button, .ui.inverted.brown.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.brown.basic.buttons .button:hover, .ui.inverted.brown.buttons .basic.button:hover, .ui.inverted.brown.basic.button:hover { box-shadow: 0px 0px 0px 2px #c86f11 inset !important; color: #d67c1c !important; } .ui.inverted.brown.basic.buttons .button:focus, .ui.inverted.brown.basic.buttons .button:focus, .ui.inverted.brown.basic.button:focus { box-shadow: 0px 0px 0px 2px #c16808 inset !important; color: #d67c1c !important; } .ui.inverted.brown.basic.buttons .active.button, .ui.inverted.brown.buttons .basic.active.button, .ui.inverted.brown.basic.active.button { box-shadow: 0px 0px 0px 2px #cc6f0d inset !important; color: #d67c1c !important; } .ui.inverted.brown.basic.buttons .button:active, .ui.inverted.brown.buttons .basic.button:active, .ui.inverted.brown.basic.button:active { box-shadow: 0px 0px 0px 2px #a96216 inset !important; color: #d67c1c !important; } /*--- Blue ---*/ .ui.blue.buttons .button, .ui.blue.button { background-color: #2185d0; color: #ffffff; text-shadow: none; background-image: none; } .ui.blue.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.blue.buttons .button:hover, .ui.blue.button:hover { background-color: #1678c2; color: #ffffff; text-shadow: none; } .ui.blue.buttons .button:focus, .ui.blue.button:focus { background-color: #0d71bb; color: #ffffff; text-shadow: none; } .ui.blue.buttons .button:active, .ui.blue.button:active { background-color: #1a69a4; color: #ffffff; text-shadow: none; } .ui.blue.buttons .active.button, .ui.blue.buttons .active.button:active, .ui.blue.active.button, .ui.blue.button .active.button:active { background-color: #1279c6; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.blue.buttons .button, .ui.basic.blue.button { box-shadow: 0px 0px 0px 1px #2185d0 inset !important; color: #2185d0 !important; } .ui.basic.blue.buttons .button:hover, .ui.basic.blue.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #1678c2 inset !important; color: #1678c2 !important; } .ui.basic.blue.buttons .button:focus, .ui.basic.blue.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #0d71bb inset !important; color: #1678c2 !important; } .ui.basic.blue.buttons .active.button, .ui.basic.blue.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #1279c6 inset !important; color: #1a69a4 !important; } .ui.basic.blue.buttons .button:active, .ui.basic.blue.button:active { box-shadow: 0px 0px 0px 1px #1a69a4 inset !important; color: #1a69a4 !important; } .ui.buttons:not(.vertical) > .basic.blue.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.blue.buttons .button, .ui.inverted.blue.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #54c8ff inset !important; color: #54c8ff; } .ui.inverted.blue.buttons .button:hover, .ui.inverted.blue.button:hover, .ui.inverted.blue.buttons .button:focus, .ui.inverted.blue.button:focus, .ui.inverted.blue.buttons .button.active, .ui.inverted.blue.button.active, .ui.inverted.blue.buttons .button:active, .ui.inverted.blue.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.blue.buttons .button:hover, .ui.inverted.blue.button:hover { background-color: #3ac0ff; } .ui.inverted.blue.buttons .button:focus, .ui.inverted.blue.button:focus { background-color: #2bbbff; } .ui.inverted.blue.buttons .active.button, .ui.inverted.blue.active.button { background-color: #3ac0ff; } .ui.inverted.blue.buttons .button:active, .ui.inverted.blue.button:active { background-color: #21b8ff; } /* Inverted Basic */ .ui.inverted.blue.basic.buttons .button, .ui.inverted.blue.buttons .basic.button, .ui.inverted.blue.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.blue.basic.buttons .button:hover, .ui.inverted.blue.buttons .basic.button:hover, .ui.inverted.blue.basic.button:hover { box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; color: #54c8ff !important; } .ui.inverted.blue.basic.buttons .button:focus, .ui.inverted.blue.basic.buttons .button:focus, .ui.inverted.blue.basic.button:focus { box-shadow: 0px 0px 0px 2px #2bbbff inset !important; color: #54c8ff !important; } .ui.inverted.blue.basic.buttons .active.button, .ui.inverted.blue.buttons .basic.active.button, .ui.inverted.blue.basic.active.button { box-shadow: 0px 0px 0px 2px #3ac0ff inset !important; color: #54c8ff !important; } .ui.inverted.blue.basic.buttons .button:active, .ui.inverted.blue.buttons .basic.button:active, .ui.inverted.blue.basic.button:active { box-shadow: 0px 0px 0px 2px #21b8ff inset !important; color: #54c8ff !important; } /*--- Green ---*/ .ui.green.buttons .button, .ui.green.button { background-color: #21ba45; color: #ffffff; text-shadow: none; background-image: none; } .ui.green.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.green.buttons .button:hover, .ui.green.button:hover { background-color: #16ab39; color: #ffffff; text-shadow: none; } .ui.green.buttons .button:focus, .ui.green.button:focus { background-color: #0ea432; color: #ffffff; text-shadow: none; } .ui.green.buttons .button:active, .ui.green.button:active { background-color: #198f35; color: #ffffff; text-shadow: none; } .ui.green.buttons .active.button, .ui.green.buttons .active.button:active, .ui.green.active.button, .ui.green.button .active.button:active { background-color: #13ae38; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.green.buttons .button, .ui.basic.green.button { box-shadow: 0px 0px 0px 1px #21ba45 inset !important; color: #21ba45 !important; } .ui.basic.green.buttons .button:hover, .ui.basic.green.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #16ab39 inset !important; color: #16ab39 !important; } .ui.basic.green.buttons .button:focus, .ui.basic.green.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #0ea432 inset !important; color: #16ab39 !important; } .ui.basic.green.buttons .active.button, .ui.basic.green.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #13ae38 inset !important; color: #198f35 !important; } .ui.basic.green.buttons .button:active, .ui.basic.green.button:active { box-shadow: 0px 0px 0px 1px #198f35 inset !important; color: #198f35 !important; } .ui.buttons:not(.vertical) > .basic.green.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.green.buttons .button, .ui.inverted.green.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #2ecc40 inset !important; color: #2ecc40; } .ui.inverted.green.buttons .button:hover, .ui.inverted.green.button:hover, .ui.inverted.green.buttons .button:focus, .ui.inverted.green.button:focus, .ui.inverted.green.buttons .button.active, .ui.inverted.green.button.active, .ui.inverted.green.buttons .button:active, .ui.inverted.green.button:active { box-shadlightOw: none !important; color: #ffffff; } .ui.inverted.green.buttons .button:hover, .ui.inverted.green.button:hover { background-color: #22be34; } .ui.inverted.green.buttons .button:focus, .ui.inverted.green.button:focus { background-color: #19b82b; } .ui.inverted.green.buttons .active.button, .ui.inverted.green.active.button { background-color: #1fc231; } .ui.inverted.green.buttons .button:active, .ui.inverted.green.button:active { background-color: #25a233; } /* Inverted Basic */ .ui.inverted.green.basic.buttons .button, .ui.inverted.green.buttons .basic.button, .ui.inverted.green.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.green.basic.buttons .button:hover, .ui.inverted.green.buttons .basic.button:hover, .ui.inverted.green.basic.button:hover { box-shadow: 0px 0px 0px 2px #22be34 inset !important; color: #2ecc40 !important; } .ui.inverted.green.basic.buttons .button:focus, .ui.inverted.green.basic.buttons .button:focus, .ui.inverted.green.basic.button:focus { box-shadow: 0px 0px 0px 2px #19b82b inset !important; color: #2ecc40 !important; } .ui.inverted.green.basic.buttons .active.button, .ui.inverted.green.buttons .basic.active.button, .ui.inverted.green.basic.active.button { box-shadow: 0px 0px 0px 2px #1fc231 inset !important; color: #2ecc40 !important; } .ui.inverted.green.basic.buttons .button:active, .ui.inverted.green.buttons .basic.button:active, .ui.inverted.green.basic.button:active { box-shadow: 0px 0px 0px 2px #25a233 inset !important; color: #2ecc40 !important; } /*--- Orange ---*/ .ui.orange.buttons .button, .ui.orange.button { background-color: #f2711c; color: #ffffff; text-shadow: none; background-image: none; } .ui.orange.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.orange.buttons .button:hover, .ui.orange.button:hover { background-color: #f26202; color: #ffffff; text-shadow: none; } .ui.orange.buttons .button:focus, .ui.orange.button:focus { background-color: #e55b00; color: #ffffff; text-shadow: none; } .ui.orange.buttons .button:active, .ui.orange.button:active { background-color: #cf590c; color: #ffffff; text-shadow: none; } .ui.orange.buttons .active.button, .ui.orange.buttons .active.button:active, .ui.orange.active.button, .ui.orange.button .active.button:active { background-color: #f56100; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.orange.buttons .button, .ui.basic.orange.button { box-shadow: 0px 0px 0px 1px #f2711c inset !important; color: #f2711c !important; } .ui.basic.orange.buttons .button:hover, .ui.basic.orange.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #f26202 inset !important; color: #f26202 !important; } .ui.basic.orange.buttons .button:focus, .ui.basic.orange.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #e55b00 inset !important; color: #f26202 !important; } .ui.basic.orange.buttons .active.button, .ui.basic.orange.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #f56100 inset !important; color: #cf590c !important; } .ui.basic.orange.buttons .button:active, .ui.basic.orange.button:active { box-shadow: 0px 0px 0px 1px #cf590c inset !important; color: #cf590c !important; } .ui.buttons:not(.vertical) > .basic.orange.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.orange.buttons .button, .ui.inverted.orange.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #ff851b inset !important; color: #ff851b; } .ui.inverted.orange.buttons .button:hover, .ui.inverted.orange.button:hover, .ui.inverted.orange.buttons .button:focus, .ui.inverted.orange.button:focus, .ui.inverted.orange.buttons .button.active, .ui.inverted.orange.button.active, .ui.inverted.orange.buttons .button:active, .ui.inverted.orange.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.orange.buttons .button:hover, .ui.inverted.orange.button:hover { background-color: #ff7701; } .ui.inverted.orange.buttons .button:focus, .ui.inverted.orange.button:focus { background-color: #f17000; } .ui.inverted.orange.buttons .active.button, .ui.inverted.orange.active.button { background-color: #ff7701; } .ui.inverted.orange.buttons .button:active, .ui.inverted.orange.button:active { background-color: #e76b00; } /* Inverted Basic */ .ui.inverted.orange.basic.buttons .button, .ui.inverted.orange.buttons .basic.button, .ui.inverted.orange.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.orange.basic.buttons .button:hover, .ui.inverted.orange.buttons .basic.button:hover, .ui.inverted.orange.basic.button:hover { box-shadow: 0px 0px 0px 2px #ff7701 inset !important; color: #ff851b !important; } .ui.inverted.orange.basic.buttons .button:focus, .ui.inverted.orange.basic.buttons .button:focus, .ui.inverted.orange.basic.button:focus { box-shadow: 0px 0px 0px 2px #f17000 inset !important; color: #ff851b !important; } .ui.inverted.orange.basic.buttons .active.button, .ui.inverted.orange.buttons .basic.active.button, .ui.inverted.orange.basic.active.button { box-shadow: 0px 0px 0px 2px #ff7701 inset !important; color: #ff851b !important; } .ui.inverted.orange.basic.buttons .button:active, .ui.inverted.orange.buttons .basic.button:active, .ui.inverted.orange.basic.button:active { box-shadow: 0px 0px 0px 2px #e76b00 inset !important; color: #ff851b !important; } /*--- Pink ---*/ .ui.pink.buttons .button, .ui.pink.button { background-color: #e03997; color: #ffffff; text-shadow: none; background-image: none; } .ui.pink.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.pink.buttons .button:hover, .ui.pink.button:hover { background-color: #e61a8d; color: #ffffff; text-shadow: none; } .ui.pink.buttons .button:focus, .ui.pink.button:focus { background-color: #e10f85; color: #ffffff; text-shadow: none; } .ui.pink.buttons .button:active, .ui.pink.button:active { background-color: #c71f7e; color: #ffffff; text-shadow: none; } .ui.pink.buttons .active.button, .ui.pink.buttons .active.button:active, .ui.pink.active.button, .ui.pink.button .active.button:active { background-color: #ea158d; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.pink.buttons .button, .ui.basic.pink.button { box-shadow: 0px 0px 0px 1px #e03997 inset !important; color: #e03997 !important; } .ui.basic.pink.buttons .button:hover, .ui.basic.pink.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #e61a8d inset !important; color: #e61a8d !important; } .ui.basic.pink.buttons .button:focus, .ui.basic.pink.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #e10f85 inset !important; color: #e61a8d !important; } .ui.basic.pink.buttons .active.button, .ui.basic.pink.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #ea158d inset !important; color: #c71f7e !important; } .ui.basic.pink.buttons .button:active, .ui.basic.pink.button:active { box-shadow: 0px 0px 0px 1px #c71f7e inset !important; color: #c71f7e !important; } .ui.buttons:not(.vertical) > .basic.pink.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.pink.buttons .button, .ui.inverted.pink.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #ff8edf inset !important; color: #ff8edf; } .ui.inverted.pink.buttons .button:hover, .ui.inverted.pink.button:hover, .ui.inverted.pink.buttons .button:focus, .ui.inverted.pink.button:focus, .ui.inverted.pink.buttons .button.active, .ui.inverted.pink.button.active, .ui.inverted.pink.buttons .button:active, .ui.inverted.pink.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.pink.buttons .button:hover, .ui.inverted.pink.button:hover { background-color: #ff74d8; } .ui.inverted.pink.buttons .button:focus, .ui.inverted.pink.button:focus { background-color: #ff65d3; } .ui.inverted.pink.buttons .active.button, .ui.inverted.pink.active.button { background-color: #ff74d8; } .ui.inverted.pink.buttons .button:active, .ui.inverted.pink.button:active { background-color: #ff5bd1; } /* Inverted Basic */ .ui.inverted.pink.basic.buttons .button, .ui.inverted.pink.buttons .basic.button, .ui.inverted.pink.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.pink.basic.buttons .button:hover, .ui.inverted.pink.buttons .basic.button:hover, .ui.inverted.pink.basic.button:hover { box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; color: #ff8edf !important; } .ui.inverted.pink.basic.buttons .button:focus, .ui.inverted.pink.basic.buttons .button:focus, .ui.inverted.pink.basic.button:focus { box-shadow: 0px 0px 0px 2px #ff65d3 inset !important; color: #ff8edf !important; } .ui.inverted.pink.basic.buttons .active.button, .ui.inverted.pink.buttons .basic.active.button, .ui.inverted.pink.basic.active.button { box-shadow: 0px 0px 0px 2px #ff74d8 inset !important; color: #ff8edf !important; } .ui.inverted.pink.basic.buttons .button:active, .ui.inverted.pink.buttons .basic.button:active, .ui.inverted.pink.basic.button:active { box-shadow: 0px 0px 0px 2px #ff5bd1 inset !important; color: #ff8edf !important; } /*--- Violet ---*/ .ui.violet.buttons .button, .ui.violet.button { background-color: #6435c9; color: #ffffff; text-shadow: none; background-image: none; } .ui.violet.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.violet.buttons .button:hover, .ui.violet.button:hover { background-color: #5829bb; color: #ffffff; text-shadow: none; } .ui.violet.buttons .button:focus, .ui.violet.button:focus { background-color: #4f20b5; color: #ffffff; text-shadow: none; } .ui.violet.buttons .button:active, .ui.violet.button:active { background-color: #502aa1; color: #ffffff; text-shadow: none; } .ui.violet.buttons .active.button, .ui.violet.buttons .active.button:active, .ui.violet.active.button, .ui.violet.button .active.button:active { background-color: #5626bf; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.violet.buttons .button, .ui.basic.violet.button { box-shadow: 0px 0px 0px 1px #6435c9 inset !important; color: #6435c9 !important; } .ui.basic.violet.buttons .button:hover, .ui.basic.violet.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #5829bb inset !important; color: #5829bb !important; } .ui.basic.violet.buttons .button:focus, .ui.basic.violet.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #4f20b5 inset !important; color: #5829bb !important; } .ui.basic.violet.buttons .active.button, .ui.basic.violet.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #5626bf inset !important; color: #502aa1 !important; } .ui.basic.violet.buttons .button:active, .ui.basic.violet.button:active { box-shadow: 0px 0px 0px 1px #502aa1 inset !important; color: #502aa1 !important; } .ui.buttons:not(.vertical) > .basic.violet.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.violet.buttons .button, .ui.inverted.violet.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #a291fb inset !important; color: #a291fb; } .ui.inverted.violet.buttons .button:hover, .ui.inverted.violet.button:hover, .ui.inverted.violet.buttons .button:focus, .ui.inverted.violet.button:focus, .ui.inverted.violet.buttons .button.active, .ui.inverted.violet.button.active, .ui.inverted.violet.buttons .button:active, .ui.inverted.violet.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.violet.buttons .button:hover, .ui.inverted.violet.button:hover { background-color: #8a73ff; } .ui.inverted.violet.buttons .button:focus, .ui.inverted.violet.button:focus { background-color: #7d64ff; } .ui.inverted.violet.buttons .active.button, .ui.inverted.violet.active.button { background-color: #8a73ff; } .ui.inverted.violet.buttons .button:active, .ui.inverted.violet.button:active { background-color: #7860f9; } /* Inverted Basic */ .ui.inverted.violet.basic.buttons .button, .ui.inverted.violet.buttons .basic.button, .ui.inverted.violet.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.violet.basic.buttons .button:hover, .ui.inverted.violet.buttons .basic.button:hover, .ui.inverted.violet.basic.button:hover { box-shadow: 0px 0px 0px 2px #8a73ff inset !important; color: #a291fb !important; } .ui.inverted.violet.basic.buttons .button:focus, .ui.inverted.violet.basic.buttons .button:focus, .ui.inverted.violet.basic.button:focus { box-shadow: 0px 0px 0px 2px #7d64ff inset !important; color: #a291fb !important; } .ui.inverted.violet.basic.buttons .active.button, .ui.inverted.violet.buttons .basic.active.button, .ui.inverted.violet.basic.active.button { box-shadow: 0px 0px 0px 2px #8a73ff inset !important; color: #a291fb !important; } .ui.inverted.violet.basic.buttons .button:active, .ui.inverted.violet.buttons .basic.button:active, .ui.inverted.violet.basic.button:active { box-shadow: 0px 0px 0px 2px #7860f9 inset !important; color: #a291fb !important; } /*--- Purple ---*/ .ui.purple.buttons .button, .ui.purple.button { background-color: #a333c8; color: #ffffff; text-shadow: none; background-image: none; } .ui.purple.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.purple.buttons .button:hover, .ui.purple.button:hover { background-color: #9627ba; color: #ffffff; text-shadow: none; } .ui.purple.buttons .button:focus, .ui.purple.button:focus { background-color: #8f1eb4; color: #ffffff; text-shadow: none; } .ui.purple.buttons .button:active, .ui.purple.button:active { background-color: #82299f; color: #ffffff; text-shadow: none; } .ui.purple.buttons .active.button, .ui.purple.buttons .active.button:active, .ui.purple.active.button, .ui.purple.button .active.button:active { background-color: #9724be; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.purple.buttons .button, .ui.basic.purple.button { box-shadow: 0px 0px 0px 1px #a333c8 inset !important; color: #a333c8 !important; } .ui.basic.purple.buttons .button:hover, .ui.basic.purple.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #9627ba inset !important; color: #9627ba !important; } .ui.basic.purple.buttons .button:focus, .ui.basic.purple.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #8f1eb4 inset !important; color: #9627ba !important; } .ui.basic.purple.buttons .active.button, .ui.basic.purple.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #9724be inset !important; color: #82299f !important; } .ui.basic.purple.buttons .button:active, .ui.basic.purple.button:active { box-shadow: 0px 0px 0px 1px #82299f inset !important; color: #82299f !important; } .ui.buttons:not(.vertical) > .basic.purple.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.purple.buttons .button, .ui.inverted.purple.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #dc73ff inset !important; color: #dc73ff; } .ui.inverted.purple.buttons .button:hover, .ui.inverted.purple.button:hover, .ui.inverted.purple.buttons .button:focus, .ui.inverted.purple.button:focus, .ui.inverted.purple.buttons .button.active, .ui.inverted.purple.button.active, .ui.inverted.purple.buttons .button:active, .ui.inverted.purple.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.purple.buttons .button:hover, .ui.inverted.purple.button:hover { background-color: #d65aff; } .ui.inverted.purple.buttons .button:focus, .ui.inverted.purple.button:focus { background-color: #d24aff; } .ui.inverted.purple.buttons .active.button, .ui.inverted.purple.active.button { background-color: #d65aff; } .ui.inverted.purple.buttons .button:active, .ui.inverted.purple.button:active { background-color: #cf40ff; } /* Inverted Basic */ .ui.inverted.purple.basic.buttons .button, .ui.inverted.purple.buttons .basic.button, .ui.inverted.purple.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.purple.basic.buttons .button:hover, .ui.inverted.purple.buttons .basic.button:hover, .ui.inverted.purple.basic.button:hover { box-shadow: 0px 0px 0px 2px #d65aff inset !important; color: #dc73ff !important; } .ui.inverted.purple.basic.buttons .button:focus, .ui.inverted.purple.basic.buttons .button:focus, .ui.inverted.purple.basic.button:focus { box-shadow: 0px 0px 0px 2px #d24aff inset !important; color: #dc73ff !important; } .ui.inverted.purple.basic.buttons .active.button, .ui.inverted.purple.buttons .basic.active.button, .ui.inverted.purple.basic.active.button { box-shadow: 0px 0px 0px 2px #d65aff inset !important; color: #dc73ff !important; } .ui.inverted.purple.basic.buttons .button:active, .ui.inverted.purple.buttons .basic.button:active, .ui.inverted.purple.basic.button:active { box-shadow: 0px 0px 0px 2px #cf40ff inset !important; color: #dc73ff !important; } /*--- Red ---*/ .ui.red.buttons .button, .ui.red.button { background-color: #db2828; color: #ffffff; text-shadow: none; background-image: none; } .ui.red.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.red.buttons .button:hover, .ui.red.button:hover { background-color: #d01919; color: #ffffff; text-shadow: none; } .ui.red.buttons .button:focus, .ui.red.button:focus { background-color: #ca1010; color: #ffffff; text-shadow: none; } .ui.red.buttons .button:active, .ui.red.button:active { background-color: #b21e1e; color: #ffffff; text-shadow: none; } .ui.red.buttons .active.button, .ui.red.buttons .active.button:active, .ui.red.active.button, .ui.red.button .active.button:active { background-color: #d41515; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.red.buttons .button, .ui.basic.red.button { box-shadow: 0px 0px 0px 1px #db2828 inset !important; color: #db2828 !important; } .ui.basic.red.buttons .button:hover, .ui.basic.red.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #d01919 inset !important; color: #d01919 !important; } .ui.basic.red.buttons .button:focus, .ui.basic.red.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #ca1010 inset !important; color: #d01919 !important; } .ui.basic.red.buttons .active.button, .ui.basic.red.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #d41515 inset !important; color: #b21e1e !important; } .ui.basic.red.buttons .button:active, .ui.basic.red.button:active { box-shadow: 0px 0px 0px 1px #b21e1e inset !important; color: #b21e1e !important; } .ui.buttons:not(.vertical) > .basic.red.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.red.buttons .button, .ui.inverted.red.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #ff695e inset !important; color: #ff695e; } .ui.inverted.red.buttons .button:hover, .ui.inverted.red.button:hover, .ui.inverted.red.buttons .button:focus, .ui.inverted.red.button:focus, .ui.inverted.red.buttons .button.active, .ui.inverted.red.button.active, .ui.inverted.red.buttons .button:active, .ui.inverted.red.button:active { box-shadow: none !important; color: #ffffff; } .ui.inverted.red.buttons .button:hover, .ui.inverted.red.button:hover { background-color: #ff5144; } .ui.inverted.red.buttons .button:focus, .ui.inverted.red.button:focus { background-color: #ff4335; } .ui.inverted.red.buttons .active.button, .ui.inverted.red.active.button { background-color: #ff5144; } .ui.inverted.red.buttons .button:active, .ui.inverted.red.button:active { background-color: #ff392b; } /* Inverted Basic */ .ui.inverted.red.basic.buttons .button, .ui.inverted.red.buttons .basic.button, .ui.inverted.red.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.red.basic.buttons .button:hover, .ui.inverted.red.buttons .basic.button:hover, .ui.inverted.red.basic.button:hover { box-shadow: 0px 0px 0px 2px #ff5144 inset !important; color: #ff695e !important; } .ui.inverted.red.basic.buttons .button:focus, .ui.inverted.red.basic.buttons .button:focus, .ui.inverted.red.basic.button:focus { box-shadow: 0px 0px 0px 2px #ff4335 inset !important; color: #ff695e !important; } .ui.inverted.red.basic.buttons .active.button, .ui.inverted.red.buttons .basic.active.button, .ui.inverted.red.basic.active.button { box-shadow: 0px 0px 0px 2px #ff5144 inset !important; color: #ff695e !important; } .ui.inverted.red.basic.buttons .button:active, .ui.inverted.red.buttons .basic.button:active, .ui.inverted.red.basic.button:active { box-shadow: 0px 0px 0px 2px #ff392b inset !important; color: #ff695e !important; } /*--- Teal ---*/ .ui.teal.buttons .button, .ui.teal.button { background-color: #00b5ad; color: #ffffff; text-shadow: none; background-image: none; } .ui.teal.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.teal.buttons .button:hover, .ui.teal.button:hover { background-color: #009c95; color: #ffffff; text-shadow: none; } .ui.teal.buttons .button:focus, .ui.teal.button:focus { background-color: #008c86; color: #ffffff; text-shadow: none; } .ui.teal.buttons .button:active, .ui.teal.button:active { background-color: #00827c; color: #ffffff; text-shadow: none; } .ui.teal.buttons .active.button, .ui.teal.buttons .active.button:active, .ui.teal.active.button, .ui.teal.button .active.button:active { background-color: #009c95; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.teal.buttons .button, .ui.basic.teal.button { box-shadow: 0px 0px 0px 1px #00b5ad inset !important; color: #00b5ad !important; } .ui.basic.teal.buttons .button:hover, .ui.basic.teal.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #009c95 inset !important; color: #009c95 !important; } .ui.basic.teal.buttons .button:focus, .ui.basic.teal.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #008c86 inset !important; color: #009c95 !important; } .ui.basic.teal.buttons .active.button, .ui.basic.teal.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #009c95 inset !important; color: #00827c !important; } .ui.basic.teal.buttons .button:active, .ui.basic.teal.button:active { box-shadow: 0px 0px 0px 1px #00827c inset !important; color: #00827c !important; } .ui.buttons:not(.vertical) > .basic.teal.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.teal.buttons .button, .ui.inverted.teal.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #6dffff inset !important; color: #6dffff; } .ui.inverted.teal.buttons .button:hover, .ui.inverted.teal.button:hover, .ui.inverted.teal.buttons .button:focus, .ui.inverted.teal.button:focus, .ui.inverted.teal.buttons .button.active, .ui.inverted.teal.button.active, .ui.inverted.teal.buttons .button:active, .ui.inverted.teal.button:active { box-shadow: none !important; color: rgba(0, 0, 0, 0.6); } .ui.inverted.teal.buttons .button:hover, .ui.inverted.teal.button:hover { background-color: #54ffff; } .ui.inverted.teal.buttons .button:focus, .ui.inverted.teal.button:focus { background-color: #44ffff; } .ui.inverted.teal.buttons .active.button, .ui.inverted.teal.active.button { background-color: #54ffff; } .ui.inverted.teal.buttons .button:active, .ui.inverted.teal.button:active { background-color: #3affff; } /* Inverted Basic */ .ui.inverted.teal.basic.buttons .button, .ui.inverted.teal.buttons .basic.button, .ui.inverted.teal.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.teal.basic.buttons .button:hover, .ui.inverted.teal.buttons .basic.button:hover, .ui.inverted.teal.basic.button:hover { box-shadow: 0px 0px 0px 2px #54ffff inset !important; color: #6dffff !important; } .ui.inverted.teal.basic.buttons .button:focus, .ui.inverted.teal.basic.buttons .button:focus, .ui.inverted.teal.basic.button:focus { box-shadow: 0px 0px 0px 2px #44ffff inset !important; color: #6dffff !important; } .ui.inverted.teal.basic.buttons .active.button, .ui.inverted.teal.buttons .basic.active.button, .ui.inverted.teal.basic.active.button { box-shadow: 0px 0px 0px 2px #54ffff inset !important; color: #6dffff !important; } .ui.inverted.teal.basic.buttons .button:active, .ui.inverted.teal.buttons .basic.button:active, .ui.inverted.teal.basic.button:active { box-shadow: 0px 0px 0px 2px #3affff inset !important; color: #6dffff !important; } /*--- Olive ---*/ .ui.olive.buttons .button, .ui.olive.button { background-color: #b5cc18; color: #ffffff; text-shadow: none; background-image: none; } .ui.olive.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.olive.buttons .button:hover, .ui.olive.button:hover { background-color: #a7bd0d; color: #ffffff; text-shadow: none; } .ui.olive.buttons .button:focus, .ui.olive.button:focus { background-color: #a0b605; color: #ffffff; text-shadow: none; } .ui.olive.buttons .button:active, .ui.olive.button:active { background-color: #8d9e13; color: #ffffff; text-shadow: none; } .ui.olive.buttons .active.button, .ui.olive.buttons .active.button:active, .ui.olive.active.button, .ui.olive.button .active.button:active { background-color: #aac109; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.olive.buttons .button, .ui.basic.olive.button { box-shadow: 0px 0px 0px 1px #b5cc18 inset !important; color: #b5cc18 !important; } .ui.basic.olive.buttons .button:hover, .ui.basic.olive.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #a7bd0d inset !important; color: #a7bd0d !important; } .ui.basic.olive.buttons .button:focus, .ui.basic.olive.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #a0b605 inset !important; color: #a7bd0d !important; } .ui.basic.olive.buttons .active.button, .ui.basic.olive.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #aac109 inset !important; color: #8d9e13 !important; } .ui.basic.olive.buttons .button:active, .ui.basic.olive.button:active { box-shadow: 0px 0px 0px 1px #8d9e13 inset !important; color: #8d9e13 !important; } .ui.buttons:not(.vertical) > .basic.olive.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.olive.buttons .button, .ui.inverted.olive.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #d9e778 inset !important; color: #d9e778; } .ui.inverted.olive.buttons .button:hover, .ui.inverted.olive.button:hover, .ui.inverted.olive.buttons .button:focus, .ui.inverted.olive.button:focus, .ui.inverted.olive.buttons .button.active, .ui.inverted.olive.button.active, .ui.inverted.olive.buttons .button:active, .ui.inverted.olive.button:active { box-shadow: none !important; color: rgba(0, 0, 0, 0.6); } .ui.inverted.olive.buttons .button:hover, .ui.inverted.olive.button:hover { background-color: #d8ea5c; } .ui.inverted.olive.buttons .button:focus, .ui.inverted.olive.button:focus { background-color: #daef47; } .ui.inverted.olive.buttons .active.button, .ui.inverted.olive.active.button { background-color: #daed59; } .ui.inverted.olive.buttons .button:active, .ui.inverted.olive.button:active { background-color: #cddf4d; } /* Inverted Basic */ .ui.inverted.olive.basic.buttons .button, .ui.inverted.olive.buttons .basic.button, .ui.inverted.olive.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.olive.basic.buttons .button:hover, .ui.inverted.olive.buttons .basic.button:hover, .ui.inverted.olive.basic.button:hover { box-shadow: 0px 0px 0px 2px #d8ea5c inset !important; color: #d9e778 !important; } .ui.inverted.olive.basic.buttons .button:focus, .ui.inverted.olive.basic.buttons .button:focus, .ui.inverted.olive.basic.button:focus { box-shadow: 0px 0px 0px 2px #daef47 inset !important; color: #d9e778 !important; } .ui.inverted.olive.basic.buttons .active.button, .ui.inverted.olive.buttons .basic.active.button, .ui.inverted.olive.basic.active.button { box-shadow: 0px 0px 0px 2px #daed59 inset !important; color: #d9e778 !important; } .ui.inverted.olive.basic.buttons .button:active, .ui.inverted.olive.buttons .basic.button:active, .ui.inverted.olive.basic.button:active { box-shadow: 0px 0px 0px 2px #cddf4d inset !important; color: #d9e778 !important; } /*--- Yellow ---*/ .ui.yellow.buttons .button, .ui.yellow.button { background-color: #fbbd08; color: #ffffff; text-shadow: none; background-image: none; } .ui.yellow.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.yellow.buttons .button:hover, .ui.yellow.button:hover { background-color: #eaae00; color: #ffffff; text-shadow: none; } .ui.yellow.buttons .button:focus, .ui.yellow.button:focus { background-color: #daa300; color: #ffffff; text-shadow: none; } .ui.yellow.buttons .button:active, .ui.yellow.button:active { background-color: #cd9903; color: #ffffff; text-shadow: none; } .ui.yellow.buttons .active.button, .ui.yellow.buttons .active.button:active, .ui.yellow.active.button, .ui.yellow.button .active.button:active { background-color: #eaae00; color: #ffffff; text-shadow: none; } /* Basic */ .ui.basic.yellow.buttons .button, .ui.basic.yellow.button { box-shadow: 0px 0px 0px 1px #fbbd08 inset !important; color: #fbbd08 !important; } .ui.basic.yellow.buttons .button:hover, .ui.basic.yellow.button:hover { background: transparent !important; box-shadow: 0px 0px 0px 1px #eaae00 inset !important; color: #eaae00 !important; } .ui.basic.yellow.buttons .button:focus, .ui.basic.yellow.button:focus { background: transparent !important; box-shadow: 0px 0px 0px 1px #daa300 inset !important; color: #eaae00 !important; } .ui.basic.yellow.buttons .active.button, .ui.basic.yellow.active.button { background: transparent !important; box-shadow: 0px 0px 0px 1px #eaae00 inset !important; color: #cd9903 !important; } .ui.basic.yellow.buttons .button:active, .ui.basic.yellow.button:active { box-shadow: 0px 0px 0px 1px #cd9903 inset !important; color: #cd9903 !important; } .ui.buttons:not(.vertical) > .basic.yellow.button:not(:first-child) { margin-left: -1px; } /* Inverted */ .ui.inverted.yellow.buttons .button, .ui.inverted.yellow.button { background-color: transparent; box-shadow: 0px 0px 0px 2px #ffe21f inset !important; color: #ffe21f; } .ui.inverted.yellow.buttons .button:hover, .ui.inverted.yellow.button:hover, .ui.inverted.yellow.buttons .button:focus, .ui.inverted.yellow.button:focus, .ui.inverted.yellow.buttons .button.active, .ui.inverted.yellow.button.active, .ui.inverted.yellow.buttons .button:active, .ui.inverted.yellow.button:active { box-shadow: none !important; color: rgba(0, 0, 0, 0.6); } .ui.inverted.yellow.buttons .button:hover, .ui.inverted.yellow.button:hover { background-color: #ffdf05; } .ui.inverted.yellow.buttons .button:focus, .ui.inverted.yellow.button:focus { background-color: #f5d500; } .ui.inverted.yellow.buttons .active.button, .ui.inverted.yellow.active.button { background-color: #ffdf05; } .ui.inverted.yellow.buttons .button:active, .ui.inverted.yellow.button:active { background-color: #ebcd00; } /* Inverted Basic */ .ui.inverted.yellow.basic.buttons .button, .ui.inverted.yellow.buttons .basic.button, .ui.inverted.yellow.basic.button { background-color: transparent; box-shadow: 0px 0px 0px 2px rgba(255, 255, 255, 0.5) inset !important; color: #ffffff !important; } .ui.inverted.yellow.basic.buttons .button:hover, .ui.inverted.yellow.buttons .basic.button:hover, .ui.inverted.yellow.basic.button:hover { box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; color: #ffe21f !important; } .ui.inverted.yellow.basic.buttons .button:focus, .ui.inverted.yellow.basic.buttons .button:focus, .ui.inverted.yellow.basic.button:focus { box-shadow: 0px 0px 0px 2px #f5d500 inset !important; color: #ffe21f !important; } .ui.inverted.yellow.basic.buttons .active.button, .ui.inverted.yellow.buttons .basic.active.button, .ui.inverted.yellow.basic.active.button { box-shadow: 0px 0px 0px 2px #ffdf05 inset !important; color: #ffe21f !important; } .ui.inverted.yellow.basic.buttons .button:active, .ui.inverted.yellow.buttons .basic.button:active, .ui.inverted.yellow.basic.button:active { box-shadow: 0px 0px 0px 2px #ebcd00 inset !important; color: #ffe21f !important; } /*------------------- Primary --------------------*/ .ui.primary.buttons .button, .ui.primary.button { background-color: #2185d0; color: #ffffff; text-shadow: none; background-image: none; } .ui.primary.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.primary.buttons .button:hover, .ui.primary.button:hover { background-color: #1678c2; color: #ffffff; text-shadow: none; } .ui.primary.buttons .button:focus, .ui.primary.button:focus { background-color: #0d71bb; color: #ffffff; text-shadow: none; } .ui.primary.buttons .button:active, .ui.primary.button:active { background-color: #1a69a4; color: #ffffff; text-shadow: none; } .ui.primary.buttons .active.button, .ui.primary.active.button { background-color: #1279c6; color: #ffffff; text-shadow: none; } /*------------------- Secondary --------------------*/ .ui.secondary.buttons .button, .ui.secondary.button { background-color: #1b1c1d; color: #ffffff; text-shadow: none; background-image: none; } .ui.secondary.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.secondary.buttons .button:hover, .ui.secondary.button:hover { background-color: #27292a; color: #ffffff; text-shadow: none; } .ui.secondary.buttons .button:focus, .ui.secondary.button:focus { background-color: #2e3032; color: #ffffff; text-shadow: none; } .ui.secondary.buttons .button:active, .ui.secondary.button:active { background-color: #343637; color: #ffffff; text-shadow: none; } .ui.secondary.buttons .active.button, .ui.secondary.active.button { background-color: #27292a; color: #ffffff; text-shadow: none; } /*--------------- Positive ----------------*/ .ui.positive.buttons .button, .ui.positive.button { background-color: #21ba45 !important; color: #ffffff; text-shadow: none; background-image: none; } .ui.positive.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.positive.buttons .button:hover, .ui.positive.button:hover { background-color: #16ab39 !important; color: #ffffff; text-shadow: none; } .ui.positive.buttons .button:focus, .ui.positive.button:focus { background-color: #0ea432 !important; color: #ffffff; text-shadow: none; } .ui.positive.buttons .button:active, .ui.positive.button:active { background-color: #198f35 !important; color: #ffffff; text-shadow: none; } .ui.positive.buttons .active.button, .ui.positive.active.button, .ui.positive.buttons .active.button:active { background-color: #13ae38; color: #ffffff; text-shadow: none; } /*--------------- Negative ----------------*/ .ui.negative.buttons .button, .ui.negative.button { background-color: #db2828 !important; color: #ffffff; text-shadow: none; background-image: none; } .ui.negative.button { box-shadow: 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.negative.buttons .button:hover, .ui.negative.button:hover { background-color: #d01919 !important; color: #ffffff; text-shadow: none; } .ui.negative.buttons .button:focus, .ui.negative.button:focus { background-color: #ca1010 !important; color: #ffffff; text-shadow: none; } .ui.negative.buttons .button:active, .ui.negative.button:active { background-color: #b21e1e !important; color: #ffffff; text-shadow: none; } .ui.negative.buttons .active.button, .ui.negative.active.button, .ui.negative.buttons .active.button:active { background-color: #d41515; color: #ffffff; text-shadow: none; } /******************************* Groups *******************************/ .ui.buttons { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; font-size: 0em; vertical-align: baseline; margin: 0em 0.25em 0em 0em; } .ui.buttons:not(.basic):not(.inverted) { box-shadow: none; } /* Clearfix */ .ui.buttons:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } /* Standard Group */ .ui.buttons .button { -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; margin: 0em; border-radius: 0em; margin: 0px 0px 0px 0px; } .ui.buttons > .ui.button:not(.basic):not(.inverted), .ui.buttons:not(.basic):not(.inverted) > .button { box-shadow: 0px 0px 0px 1px transparent inset, 0px 0em 0px 0px rgba(34, 36, 38, 0.15) inset; } .ui.buttons .button:first-child { border-left: none; margin-left: 0em; border-top-left-radius: 0.28571429rem; border-bottom-left-radius: 0.28571429rem; } .ui.buttons .button:last-child { border-top-right-radius: 0.28571429rem; border-bottom-right-radius: 0.28571429rem; } /* Vertical Style */ .ui.vertical.buttons { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .ui.vertical.buttons .button { display: block; float: none; width: 100%; margin: 0px 0px 0px 0px; box-shadow: none; } .ui.vertical.buttons .button:first-child, .ui.vertical.buttons .mini.button:first-child, .ui.vertical.buttons .tiny.button:first-child, .ui.vertical.buttons .small.button:first-child, .ui.vertical.buttons .massive.button:first-child, .ui.vertical.buttons .huge.button:first-child { border-radius: 0.28571429rem 0.28571429rem 0px 0px; } .ui.vertical.buttons .button:last-child, .ui.vertical.buttons .mini.button:last-child, .ui.vertical.buttons .tiny.button:last-child, .ui.vertical.buttons .small.button:last-child, .ui.vertical.buttons .massive.button:last-child, .ui.vertical.buttons .huge.button:last-child, .ui.vertical.buttons .gigantic.button:last-child { margin-bottom: 0px; border-radius: 0px 0px 0.28571429rem 0.28571429rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Container * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Container *******************************/ /* All Sizes */ .ui.container { display: block; max-width: 100% !important; } /* Mobile */ @media only screen and (max-width: 767px) { .ui.container { width: auto !important; margin-left: 1em !important; margin-right: 1em !important; } .ui.grid.container { width: auto !important; } .ui.relaxed.grid.container { width: auto !important; } .ui.very.relaxed.grid.container { width: auto !important; } } /* Tablet */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.container { width: 723px; margin-left: auto !important; margin-right: auto !important; } .ui.grid.container { width: calc( 723px + 2rem ) !important; } .ui.relaxed.grid.container { width: calc( 723px + 3rem ) !important; } .ui.very.relaxed.grid.container { width: calc( 723px + 5rem ) !important; } } /* Small Monitor */ @media only screen and (min-width: 992px) and (max-width: 1199px) { .ui.container { width: 933px; margin-left: auto !important; margin-right: auto !important; } .ui.grid.container { width: calc( 933px + 2rem ) !important; } .ui.relaxed.grid.container { width: calc( 933px + 3rem ) !important; } .ui.very.relaxed.grid.container { width: calc( 933px + 5rem ) !important; } } /* Large Monitor */ @media only screen and (min-width: 1200px) { .ui.container { width: 1127px; margin-left: auto !important; margin-right: auto !important; } .ui.grid.container { width: calc( 1127px + 2rem ) !important; } .ui.relaxed.grid.container { width: calc( 1127px + 3rem ) !important; } .ui.very.relaxed.grid.container { width: calc( 1127px + 5rem ) !important; } } /******************************* Types *******************************/ /* Text Container */ .ui.text.container { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; max-width: 700px !important; line-height: 1.5; } .ui.text.container { font-size: 1.14285714rem; } /* Fluid */ .ui.fluid.container { width: 100%; } /******************************* Variations *******************************/ .ui[class*="left aligned"].container { text-align: left; } .ui[class*="center aligned"].container { text-align: center; } .ui[class*="right aligned"].container { text-align: right; } .ui.justified.container { text-align: justify; -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Divider * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Divider *******************************/ .ui.divider { margin: 1rem 0rem; line-height: 1; height: 0em; font-weight: bold; text-transform: uppercase; letter-spacing: 0.05em; color: rgba(0, 0, 0, 0.85); -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /*-------------- Basic ---------------*/ .ui.divider:not(.vertical):not(.horizontal) { border-top: 1px solid rgba(34, 36, 38, 0.15); border-bottom: 1px solid rgba(255, 255, 255, 0.1); } /*-------------- Coupling ---------------*/ /* Allow divider between each column row */ .ui.grid > .column + .divider, .ui.grid > .row > .column + .divider { left: auto; } /*-------------- Horizontal ---------------*/ .ui.horizontal.divider { display: table; white-space: nowrap; height: auto; margin: ''; overflow: hidden; line-height: 1; text-align: center; } .ui.horizontal.divider:before, .ui.horizontal.divider:after { content: ''; display: table-cell; position: relative; top: 50%; width: 50%; background-repeat: no-repeat; } .ui.horizontal.divider:before { background-position: right 1em top 50%; } .ui.horizontal.divider:after { background-position: left 1em top 50%; } /*-------------- Vertical ---------------*/ .ui.vertical.divider { position: absolute; z-index: 2; top: 50%; left: 50%; margin: 0rem; padding: 0em; width: auto; height: 50%; line-height: 0em; text-align: center; -webkit-transform: translateX(-50%); -ms-transform: translateX(-50%); transform: translateX(-50%); } .ui.vertical.divider:before, .ui.vertical.divider:after { position: absolute; left: 50%; content: ''; z-index: 3; border-left: 1px solid rgba(34, 36, 38, 0.15); border-right: 1px solid rgba(255, 255, 255, 0.1); width: 0%; height: calc(100% - 1rem ); } .ui.vertical.divider:before { top: -100%; } .ui.vertical.divider:after { top: auto; bottom: 0px; } /* Inside grid */ @media only screen and (max-width: 767px) { .ui.stackable.grid .ui.vertical.divider, .ui.grid .stackable.row .ui.vertical.divider { display: table; white-space: nowrap; height: auto; margin: ''; overflow: hidden; line-height: 1; text-align: center; position: static; top: 0; left: 0; -webkit-transform: none; -ms-transform: none; transform: none; } .ui.stackable.grid .ui.vertical.divider:before, .ui.grid .stackable.row .ui.vertical.divider:before, .ui.stackable.grid .ui.vertical.divider:after, .ui.grid .stackable.row .ui.vertical.divider:after { position: static; left: 0; border-left: none; border-right: none; content: ''; display: table-cell; position: relative; top: 50%; width: 50%; background-repeat: no-repeat; } .ui.stackable.grid .ui.vertical.divider:before, .ui.grid .stackable.row .ui.vertical.divider:before { background-position: right 1em top 50%; } .ui.stackable.grid .ui.vertical.divider:after, .ui.grid .stackable.row .ui.vertical.divider:after { background-position: left 1em top 50%; } } /*-------------- Icon ---------------*/ .ui.divider > .icon { margin: 0rem; font-size: 1rem; height: 1em; vertical-align: middle; } /******************************* Variations *******************************/ /*-------------- Hidden ---------------*/ .ui.hidden.divider { border-color: transparent !important; } .ui.hidden.divider:before, .ui.hidden.divider:after { display: none; } /*-------------- Inverted ---------------*/ .ui.divider.inverted, .ui.vertical.inverted.divider, .ui.horizontal.inverted.divider { color: #ffffff; } .ui.divider.inverted, .ui.divider.inverted:after, .ui.divider.inverted:before { border-top-color: rgba(34, 36, 38, 0.15) !important; border-left-color: rgba(34, 36, 38, 0.15) !important; border-bottom-color: rgba(255, 255, 255, 0.15) !important; border-right-color: rgba(255, 255, 255, 0.15) !important; } /*-------------- Fitted ---------------*/ .ui.fitted.divider { margin: 0em; } /*-------------- Clearing ---------------*/ .ui.clearing.divider { clear: both; } /*-------------- Section ---------------*/ .ui.section.divider { margin-top: 2rem; margin-bottom: 2rem; } /*-------------- Sizes ---------------*/ .ui.divider { font-size: 1rem; } /******************************* Theme Overrides *******************************/ .ui.horizontal.divider:before, .ui.horizontal.divider:after { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC"); } @media only screen and (max-width: 767px) { .ui.stackable.grid .ui.vertical.divider:before, .ui.grid .stackable.row .ui.vertical.divider:before, .ui.stackable.grid .ui.vertical.divider:after, .ui.grid .stackable.row .ui.vertical.divider:after { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC"); } } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Flag * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Flag *******************************/ i.flag:not(.icon) { display: inline-block; width: 16px; height: 11px; line-height: 11px; vertical-align: baseline; margin: 0em 0.5em 0em 0em; text-decoration: inherit; speak: none; font-smoothing: antialiased; -webkit-backface-visibility: hidden; backface-visibility: hidden; } /* Sprite */ i.flag:not(.icon):before { display: inline-block; content: ''; background: url("themes/default/assets/images/flags.png") no-repeat -108px -1976px; width: 16px; height: 11px; } /* Flag Sprite Based On http://www.famfamfam.com/lab/icons/flags/ */ /******************************* Theme Overrides *******************************/ i.flag.ad:before, i.flag.andorra:before { background-position: 0px 0px; } i.flag.ae:before, i.flag.united.arab.emirates:before, i.flag.uae:before { background-position: 0px -26px; } i.flag.af:before, i.flag.afghanistan:before { background-position: 0px -52px; } i.flag.ag:before, i.flag.antigua:before { background-position: 0px -78px; } i.flag.ai:before, i.flag.anguilla:before { background-position: 0px -104px; } i.flag.al:before, i.flag.albania:before { background-position: 0px -130px; } i.flag.am:before, i.flag.armenia:before { background-position: 0px -156px; } i.flag.an:before, i.flag.netherlands.antilles:before { background-position: 0px -182px; } i.flag.ao:before, i.flag.angola:before { background-position: 0px -208px; } i.flag.ar:before, i.flag.argentina:before { background-position: 0px -234px; } i.flag.as:before, i.flag.american.samoa:before { background-position: 0px -260px; } i.flag.at:before, i.flag.austria:before { background-position: 0px -286px; } i.flag.au:before, i.flag.australia:before { background-position: 0px -312px; } i.flag.aw:before, i.flag.aruba:before { background-position: 0px -338px; } i.flag.ax:before, i.flag.aland.islands:before { background-position: 0px -364px; } i.flag.az:before, i.flag.azerbaijan:before { background-position: 0px -390px; } i.flag.ba:before, i.flag.bosnia:before { background-position: 0px -416px; } i.flag.bb:before, i.flag.barbados:before { background-position: 0px -442px; } i.flag.bd:before, i.flag.bangladesh:before { background-position: 0px -468px; } i.flag.be:before, i.flag.belgium:before { background-position: 0px -494px; } i.flag.bf:before, i.flag.burkina.faso:before { background-position: 0px -520px; } i.flag.bg:before, i.flag.bulgaria:before { background-position: 0px -546px; } i.flag.bh:before, i.flag.bahrain:before { background-position: 0px -572px; } i.flag.bi:before, i.flag.burundi:before { background-position: 0px -598px; } i.flag.bj:before, i.flag.benin:before { background-position: 0px -624px; } i.flag.bm:before, i.flag.bermuda:before { background-position: 0px -650px; } i.flag.bn:before, i.flag.brunei:before { background-position: 0px -676px; } i.flag.bo:before, i.flag.bolivia:before { background-position: 0px -702px; } i.flag.br:before, i.flag.brazil:before { background-position: 0px -728px; } i.flag.bs:before, i.flag.bahamas:before { background-position: 0px -754px; } i.flag.bt:before, i.flag.bhutan:before { background-position: 0px -780px; } i.flag.bv:before, i.flag.bouvet.island:before { background-position: 0px -806px; } i.flag.bw:before, i.flag.botswana:before { background-position: 0px -832px; } i.flag.by:before, i.flag.belarus:before { background-position: 0px -858px; } i.flag.bz:before, i.flag.belize:before { background-position: 0px -884px; } i.flag.ca:before, i.flag.canada:before { background-position: 0px -910px; } i.flag.cc:before, i.flag.cocos.islands:before { background-position: 0px -962px; } i.flag.cd:before, i.flag.congo:before { background-position: 0px -988px; } i.flag.cf:before, i.flag.central.african.republic:before { background-position: 0px -1014px; } i.flag.cg:before, i.flag.congo.brazzaville:before { background-position: 0px -1040px; } i.flag.ch:before, i.flag.switzerland:before { background-position: 0px -1066px; } i.flag.ci:before, i.flag.cote.divoire:before { background-position: 0px -1092px; } i.flag.ck:before, i.flag.cook.islands:before { background-position: 0px -1118px; } i.flag.cl:before, i.flag.chile:before { background-position: 0px -1144px; } i.flag.cm:before, i.flag.cameroon:before { background-position: 0px -1170px; } i.flag.cn:before, i.flag.china:before { background-position: 0px -1196px; } i.flag.co:before, i.flag.colombia:before { background-position: 0px -1222px; } i.flag.cr:before, i.flag.costa.rica:before { background-position: 0px -1248px; } i.flag.cs:before, i.flag.serbia:before { background-position: 0px -1274px; } i.flag.cu:before, i.flag.cuba:before { background-position: 0px -1300px; } i.flag.cv:before, i.flag.cape.verde:before { background-position: 0px -1326px; } i.flag.cx:before, i.flag.christmas.island:before { background-position: 0px -1352px; } i.flag.cy:before, i.flag.cyprus:before { background-position: 0px -1378px; } i.flag.cz:before, i.flag.czech.republic:before { background-position: 0px -1404px; } i.flag.de:before, i.flag.germany:before { background-position: 0px -1430px; } i.flag.dj:before, i.flag.djibouti:before { background-position: 0px -1456px; } i.flag.dk:before, i.flag.denmark:before { background-position: 0px -1482px; } i.flag.dm:before, i.flag.dominica:before { background-position: 0px -1508px; } i.flag.do:before, i.flag.dominican.republic:before { background-position: 0px -1534px; } i.flag.dz:before, i.flag.algeria:before { background-position: 0px -1560px; } i.flag.ec:before, i.flag.ecuador:before { background-position: 0px -1586px; } i.flag.ee:before, i.flag.estonia:before { background-position: 0px -1612px; } i.flag.eg:before, i.flag.egypt:before { background-position: 0px -1638px; } i.flag.eh:before, i.flag.western.sahara:before { background-position: 0px -1664px; } i.flag.er:before, i.flag.eritrea:before { background-position: 0px -1716px; } i.flag.es:before, i.flag.spain:before { background-position: 0px -1742px; } i.flag.et:before, i.flag.ethiopia:before { background-position: 0px -1768px; } i.flag.eu:before, i.flag.european.union:before { background-position: 0px -1794px; } i.flag.fi:before, i.flag.finland:before { background-position: 0px -1846px; } i.flag.fj:before, i.flag.fiji:before { background-position: 0px -1872px; } i.flag.fk:before, i.flag.falkland.islands:before { background-position: 0px -1898px; } i.flag.fm:before, i.flag.micronesia:before { background-position: 0px -1924px; } i.flag.fo:before, i.flag.faroe.islands:before { background-position: 0px -1950px; } i.flag.fr:before, i.flag.france:before { background-position: 0px -1976px; } i.flag.ga:before, i.flag.gabon:before { background-position: -36px 0px; } i.flag.gb:before, i.flag.united.kingdom:before { background-position: -36px -26px; } i.flag.gd:before, i.flag.grenada:before { background-position: -36px -52px; } i.flag.ge:before, i.flag.georgia:before { background-position: -36px -78px; } i.flag.gf:before, i.flag.french.guiana:before { background-position: -36px -104px; } i.flag.gh:before, i.flag.ghana:before { background-position: -36px -130px; } i.flag.gi:before, i.flag.gibraltar:before { background-position: -36px -156px; } i.flag.gl:before, i.flag.greenland:before { background-position: -36px -182px; } i.flag.gm:before, i.flag.gambia:before { background-position: -36px -208px; } i.flag.gn:before, i.flag.guinea:before { background-position: -36px -234px; } i.flag.gp:before, i.flag.guadeloupe:before { background-position: -36px -260px; } i.flag.gq:before, i.flag.equatorial.guinea:before { background-position: -36px -286px; } i.flag.gr:before, i.flag.greece:before { background-position: -36px -312px; } i.flag.gs:before, i.flag.sandwich.islands:before { background-position: -36px -338px; } i.flag.gt:before, i.flag.guatemala:before { background-position: -36px -364px; } i.flag.gu:before, i.flag.guam:before { background-position: -36px -390px; } i.flag.gw:before, i.flag.guinea-bissau:before { background-position: -36px -416px; } i.flag.gy:before, i.flag.guyana:before { background-position: -36px -442px; } i.flag.hk:before, i.flag.hong.kong:before { background-position: -36px -468px; } i.flag.hm:before, i.flag.heard.island:before { background-position: -36px -494px; } i.flag.hn:before, i.flag.honduras:before { background-position: -36px -520px; } i.flag.hr:before, i.flag.croatia:before { background-position: -36px -546px; } i.flag.ht:before, i.flag.haiti:before { background-position: -36px -572px; } i.flag.hu:before, i.flag.hungary:before { background-position: -36px -598px; } i.flag.id:before, i.flag.indonesia:before { background-position: -36px -624px; } i.flag.ie:before, i.flag.ireland:before { background-position: -36px -650px; } i.flag.il:before, i.flag.israel:before { background-position: -36px -676px; } i.flag.in:before, i.flag.india:before { background-position: -36px -702px; } i.flag.io:before, i.flag.indian.ocean.territory:before { background-position: -36px -728px; } i.flag.iq:before, i.flag.iraq:before { background-position: -36px -754px; } i.flag.ir:before, i.flag.iran:before { background-position: -36px -780px; } i.flag.is:before, i.flag.iceland:before { background-position: -36px -806px; } i.flag.it:before, i.flag.italy:before { background-position: -36px -832px; } i.flag.jm:before, i.flag.jamaica:before { background-position: -36px -858px; } i.flag.jo:before, i.flag.jordan:before { background-position: -36px -884px; } i.flag.jp:before, i.flag.japan:before { background-position: -36px -910px; } i.flag.ke:before, i.flag.kenya:before { background-position: -36px -936px; } i.flag.kg:before, i.flag.kyrgyzstan:before { background-position: -36px -962px; } i.flag.kh:before, i.flag.cambodia:before { background-position: -36px -988px; } i.flag.ki:before, i.flag.kiribati:before { background-position: -36px -1014px; } i.flag.km:before, i.flag.comoros:before { background-position: -36px -1040px; } i.flag.kn:before, i.flag.saint.kitts.and.nevis:before { background-position: -36px -1066px; } i.flag.kp:before, i.flag.north.korea:before { background-position: -36px -1092px; } i.flag.kr:before, i.flag.south.korea:before { background-position: -36px -1118px; } i.flag.kw:before, i.flag.kuwait:before { background-position: -36px -1144px; } i.flag.ky:before, i.flag.cayman.islands:before { background-position: -36px -1170px; } i.flag.kz:before, i.flag.kazakhstan:before { background-position: -36px -1196px; } i.flag.la:before, i.flag.laos:before { background-position: -36px -1222px; } i.flag.lb:before, i.flag.lebanon:before { background-position: -36px -1248px; } i.flag.lc:before, i.flag.saint.lucia:before { background-position: -36px -1274px; } i.flag.li:before, i.flag.liechtenstein:before { background-position: -36px -1300px; } i.flag.lk:before, i.flag.sri.lanka:before { background-position: -36px -1326px; } i.flag.lr:before, i.flag.liberia:before { background-position: -36px -1352px; } i.flag.ls:before, i.flag.lesotho:before { background-position: -36px -1378px; } i.flag.lt:before, i.flag.lithuania:before { background-position: -36px -1404px; } i.flag.lu:before, i.flag.luxembourg:before { background-position: -36px -1430px; } i.flag.lv:before, i.flag.latvia:before { background-position: -36px -1456px; } i.flag.ly:before, i.flag.libya:before { background-position: -36px -1482px; } i.flag.ma:before, i.flag.morocco:before { background-position: -36px -1508px; } i.flag.mc:before, i.flag.monaco:before { background-position: -36px -1534px; } i.flag.md:before, i.flag.moldova:before { background-position: -36px -1560px; } i.flag.me:before, i.flag.montenegro:before { background-position: -36px -1586px; } i.flag.mg:before, i.flag.madagascar:before { background-position: -36px -1613px; } i.flag.mh:before, i.flag.marshall.islands:before { background-position: -36px -1639px; } i.flag.mk:before, i.flag.macedonia:before { background-position: -36px -1665px; } i.flag.ml:before, i.flag.mali:before { background-position: -36px -1691px; } i.flag.mm:before, i.flag.myanmar:before, i.flag.burma:before { background-position: -36px -1717px; } i.flag.mn:before, i.flag.mongolia:before { background-position: -36px -1743px; } i.flag.mo:before, i.flag.macau:before { background-position: -36px -1769px; } i.flag.mp:before, i.flag.northern.mariana.islands:before { background-position: -36px -1795px; } i.flag.mq:before, i.flag.martinique:before { background-position: -36px -1821px; } i.flag.mr:before, i.flag.mauritania:before { background-position: -36px -1847px; } i.flag.ms:before, i.flag.montserrat:before { background-position: -36px -1873px; } i.flag.mt:before, i.flag.malta:before { background-position: -36px -1899px; } i.flag.mu:before, i.flag.mauritius:before { background-position: -36px -1925px; } i.flag.mv:before, i.flag.maldives:before { background-position: -36px -1951px; } i.flag.mw:before, i.flag.malawi:before { background-position: -36px -1977px; } i.flag.mx:before, i.flag.mexico:before { background-position: -72px 0px; } i.flag.my:before, i.flag.malaysia:before { background-position: -72px -26px; } i.flag.mz:before, i.flag.mozambique:before { background-position: -72px -52px; } i.flag.na:before, i.flag.namibia:before { background-position: -72px -78px; } i.flag.nc:before, i.flag.new.caledonia:before { background-position: -72px -104px; } i.flag.ne:before, i.flag.niger:before { background-position: -72px -130px; } i.flag.nf:before, i.flag.norfolk.island:before { background-position: -72px -156px; } i.flag.ng:before, i.flag.nigeria:before { background-position: -72px -182px; } i.flag.ni:before, i.flag.nicaragua:before { background-position: -72px -208px; } i.flag.nl:before, i.flag.netherlands:before { background-position: -72px -234px; } i.flag.no:before, i.flag.norway:before { background-position: -72px -260px; } i.flag.np:before, i.flag.nepal:before { background-position: -72px -286px; } i.flag.nr:before, i.flag.nauru:before { background-position: -72px -312px; } i.flag.nu:before, i.flag.niue:before { background-position: -72px -338px; } i.flag.nz:before, i.flag.new.zealand:before { background-position: -72px -364px; } i.flag.om:before, i.flag.oman:before { background-position: -72px -390px; } i.flag.pa:before, i.flag.panama:before { background-position: -72px -416px; } i.flag.pe:before, i.flag.peru:before { background-position: -72px -442px; } i.flag.pf:before, i.flag.french.polynesia:before { background-position: -72px -468px; } i.flag.pg:before, i.flag.new.guinea:before { background-position: -72px -494px; } i.flag.ph:before, i.flag.philippines:before { background-position: -72px -520px; } i.flag.pk:before, i.flag.pakistan:before { background-position: -72px -546px; } i.flag.pl:before, i.flag.poland:before { background-position: -72px -572px; } i.flag.pm:before, i.flag.saint.pierre:before { background-position: -72px -598px; } i.flag.pn:before, i.flag.pitcairn.islands:before { background-position: -72px -624px; } i.flag.pr:before, i.flag.puerto.rico:before { background-position: -72px -650px; } i.flag.ps:before, i.flag.palestine:before { background-position: -72px -676px; } i.flag.pt:before, i.flag.portugal:before { background-position: -72px -702px; } i.flag.pw:before, i.flag.palau:before { background-position: -72px -728px; } i.flag.py:before, i.flag.paraguay:before { background-position: -72px -754px; } i.flag.qa:before, i.flag.qatar:before { background-position: -72px -780px; } i.flag.re:before, i.flag.reunion:before { background-position: -72px -806px; } i.flag.ro:before, i.flag.romania:before { background-position: -72px -832px; } i.flag.rs:before, i.flag.serbia:before { background-position: -72px -858px; } i.flag.ru:before, i.flag.russia:before { background-position: -72px -884px; } i.flag.rw:before, i.flag.rwanda:before { background-position: -72px -910px; } i.flag.sa:before, i.flag.saudi.arabia:before { background-position: -72px -936px; } i.flag.sb:before, i.flag.solomon.islands:before { background-position: -72px -962px; } i.flag.sc:before, i.flag.seychelles:before { background-position: -72px -988px; } i.flag.gb.sct:before, i.flag.scotland:before { background-position: -72px -1014px; } i.flag.sd:before, i.flag.sudan:before { background-position: -72px -1040px; } i.flag.se:before, i.flag.sweden:before { background-position: -72px -1066px; } i.flag.sg:before, i.flag.singapore:before { background-position: -72px -1092px; } i.flag.sh:before, i.flag.saint.helena:before { background-position: -72px -1118px; } i.flag.si:before, i.flag.slovenia:before { background-position: -72px -1144px; } i.flag.sj:before, i.flag.svalbard:before, i.flag.jan.mayen:before { background-position: -72px -1170px; } i.flag.sk:before, i.flag.slovakia:before { background-position: -72px -1196px; } i.flag.sl:before, i.flag.sierra.leone:before { background-position: -72px -1222px; } i.flag.sm:before, i.flag.san.marino:before { background-position: -72px -1248px; } i.flag.sn:before, i.flag.senegal:before { background-position: -72px -1274px; } i.flag.so:before, i.flag.somalia:before { background-position: -72px -1300px; } i.flag.sr:before, i.flag.suriname:before { background-position: -72px -1326px; } i.flag.st:before, i.flag.sao.tome:before { background-position: -72px -1352px; } i.flag.sv:before, i.flag.el.salvador:before { background-position: -72px -1378px; } i.flag.sy:before, i.flag.syria:before { background-position: -72px -1404px; } i.flag.sz:before, i.flag.swaziland:before { background-position: -72px -1430px; } i.flag.tc:before, i.flag.caicos.islands:before { background-position: -72px -1456px; } i.flag.td:before, i.flag.chad:before { background-position: -72px -1482px; } i.flag.tf:before, i.flag.french.territories:before { background-position: -72px -1508px; } i.flag.tg:before, i.flag.togo:before { background-position: -72px -1534px; } i.flag.th:before, i.flag.thailand:before { background-position: -72px -1560px; } i.flag.tj:before, i.flag.tajikistan:before { background-position: -72px -1586px; } i.flag.tk:before, i.flag.tokelau:before { background-position: -72px -1612px; } i.flag.tl:before, i.flag.timorleste:before { background-position: -72px -1638px; } i.flag.tm:before, i.flag.turkmenistan:before { background-position: -72px -1664px; } i.flag.tn:before, i.flag.tunisia:before { background-position: -72px -1690px; } i.flag.to:before, i.flag.tonga:before { background-position: -72px -1716px; } i.flag.tr:before, i.flag.turkey:before { background-position: -72px -1742px; } i.flag.tt:before, i.flag.trinidad:before { background-position: -72px -1768px; } i.flag.tv:before, i.flag.tuvalu:before { background-position: -72px -1794px; } i.flag.tw:before, i.flag.taiwan:before { background-position: -72px -1820px; } i.flag.tz:before, i.flag.tanzania:before { background-position: -72px -1846px; } i.flag.ua:before, i.flag.ukraine:before { background-position: -72px -1872px; } i.flag.ug:before, i.flag.uganda:before { background-position: -72px -1898px; } i.flag.um:before, i.flag.us.minor.islands:before { background-position: -72px -1924px; } i.flag.us:before, i.flag.america:before, i.flag.united.states:before { background-position: -72px -1950px; } i.flag.uy:before, i.flag.uruguay:before { background-position: -72px -1976px; } i.flag.uz:before, i.flag.uzbekistan:before { background-position: -108px 0px; } i.flag.va:before, i.flag.vatican.city:before { background-position: -108px -26px; } i.flag.vc:before, i.flag.saint.vincent:before { background-position: -108px -52px; } i.flag.ve:before, i.flag.venezuela:before { background-position: -108px -78px; } i.flag.vg:before, i.flag.british.virgin.islands:before { background-position: -108px -104px; } i.flag.vi:before, i.flag.us.virgin.islands:before { background-position: -108px -130px; } i.flag.vn:before, i.flag.vietnam:before { background-position: -108px -156px; } i.flag.vu:before, i.flag.vanuatu:before { background-position: -108px -182px; } i.flag.gb.wls:before, i.flag.wales:before { background-position: -108px -208px; } i.flag.wf:before, i.flag.wallis.and.futuna:before { background-position: -108px -234px; } i.flag.ws:before, i.flag.samoa:before { background-position: -108px -260px; } i.flag.ye:before, i.flag.yemen:before { background-position: -108px -286px; } i.flag.yt:before, i.flag.mayotte:before { background-position: -108px -312px; } i.flag.za:before, i.flag.south.africa:before { background-position: -108px -338px; } i.flag.zm:before, i.flag.zambia:before { background-position: -108px -364px; } i.flag.zw:before, i.flag.zimbabwe:before { background-position: -108px -390px; } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Header * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Header *******************************/ /* Standard */ .ui.header { border: none; margin: calc(2rem - 0.14285em ) 0em 1rem; padding: 0em 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold; line-height: 1.2857em; text-transform: none; color: rgba(0, 0, 0, 0.87); } .ui.header:first-child { margin-top: -0.14285em; } .ui.header:last-child { margin-bottom: 0em; } /*-------------- Sub Header ---------------*/ .ui.header .sub.header { display: block; font-weight: normal; padding: 0em; margin: 0em; font-size: 1rem; line-height: 1.2em; color: rgba(0, 0, 0, 0.6); } /*-------------- Icon ---------------*/ .ui.header > .icon { display: table-cell; opacity: 1; font-size: 1.5em; padding-top: 0.14285em; vertical-align: middle; } /* With Text Node */ .ui.header .icon:only-child { display: inline-block; padding: 0em; margin-right: 0.75rem; } /*------------------- Image --------------------*/ .ui.header > .image, .ui.header > img { display: inline-block; margin-top: 0.14285em; width: 2.5em; height: auto; vertical-align: middle; } .ui.header > .image:only-child, .ui.header > img:only-child { margin-right: 0.75rem; } /*-------------- Content ---------------*/ .ui.header .content { display: inline-block; vertical-align: top; } /* After Image */ .ui.header > img + .content, .ui.header > .image + .content { padding-left: 0.75rem; vertical-align: middle; } /* After Icon */ .ui.header > .icon + .content { padding-left: 0.75rem; display: table-cell; vertical-align: middle; } /*-------------- Loose Coupling ---------------*/ .ui.header .ui.label { font-size: ''; margin-left: 0.5rem; vertical-align: middle; } /* Positioning */ .ui.header + p { margin-top: 0em; } /******************************* Types *******************************/ /*-------------- Page ---------------*/ h1.ui.header { font-size: 2rem; } h2.ui.header { font-size: 1.714rem; } h3.ui.header { font-size: 1.28rem; } h4.ui.header { font-size: 1.071rem; } h5.ui.header { font-size: 1rem; } /* Sub Header */ h1.ui.header .sub.header { font-size: 1.14285714rem; } h2.ui.header .sub.header { font-size: 1.14285714rem; } h3.ui.header .sub.header { font-size: 1rem; } h4.ui.header .sub.header { font-size: 1rem; } h5.ui.header .sub.header { font-size: 0.92857143rem; } /*-------------- Content Heading ---------------*/ .ui.huge.header { min-height: 1em; font-size: 2em; } .ui.large.header { font-size: 1.714em; } .ui.medium.header { font-size: 1.28em; } .ui.small.header { font-size: 1.071em; } .ui.tiny.header { font-size: 1em; } /* Sub Header */ .ui.huge.header .sub.header { font-size: 1.14285714rem; } .ui.large.header .sub.header { font-size: 1.14285714rem; } .ui.header .sub.header { font-size: 1rem; } .ui.small.header .sub.header { font-size: 1rem; } .ui.tiny.header .sub.header { font-size: 0.92857143rem; } /*-------------- Sub Heading ---------------*/ .ui.sub.header { padding: 0em; margin-bottom: 0.14285714rem; font-weight: bold; font-size: 0.85714286em; text-transform: uppercase; color: ''; } .ui.small.sub.header { font-size: 0.71428571em; } .ui.sub.header { font-size: 0.85714286em; } .ui.large.sub.header { font-size: 0.92857143em; } .ui.huge.sub.header { font-size: 1em; } /*------------------- Icon --------------------*/ .ui.icon.header { display: inline-block; text-align: center; margin: 2rem 0em 1rem; } .ui.icon.header:after { content: ''; display: block; height: 0px; clear: both; visibility: hidden; } .ui.icon.header:first-child { margin-top: 0em; } .ui.icon.header .icon { float: none; display: block; width: auto; height: auto; line-height: 1; padding: 0em; font-size: 3em; margin: 0em auto 0.5rem; opacity: 1; } .ui.icon.header .content { display: block; } .ui.icon.header .circular.icon { font-size: 2em; } .ui.icon.header .square.icon { font-size: 2em; } .ui.block.icon.header .icon { margin-bottom: 0em; } .ui.icon.header.aligned { margin-left: auto; margin-right: auto; display: block; } /******************************* States *******************************/ .ui.disabled.header { opacity: 0.45; } /******************************* Variations *******************************/ /*------------------- Inverted --------------------*/ .ui.inverted.header { color: #ffffff; } .ui.inverted.header .sub.header { color: rgba(255, 255, 255, 0.8); } .ui.inverted.attached.header { background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05)); box-shadow: none; border-color: transparent; } .ui.inverted.block.header { background: #545454 -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: #545454 linear-gradient(transparent, rgba(0, 0, 0, 0.05)); box-shadow: none; } .ui.inverted.block.header { border-bottom: none; } /*------------------- Colors --------------------*/ /*--- Red ---*/ .ui.red.header { color: #db2828 !important; } a.ui.red.header:hover { color: #d01919 !important; } .ui.red.dividing.header { border-bottom: 2px solid #db2828; } /* Inverted */ .ui.inverted.red.header { color: #ff695e !important; } a.ui.inverted.red.header:hover { color: #ff5144 !important; } /*--- Orange ---*/ .ui.orange.header { color: #f2711c !important; } a.ui.orange.header:hover { color: #f26202 !important; } .ui.orange.dividing.header { border-bottom: 2px solid #f2711c; } /* Inverted */ .ui.inverted.orange.header { color: #ff851b !important; } a.ui.inverted.orange.header:hover { color: #ff7701 !important; } /*--- Olive ---*/ .ui.olive.header { color: #b5cc18 !important; } a.ui.olive.header:hover { color: #a7bd0d !important; } .ui.olive.dividing.header { border-bottom: 2px solid #b5cc18; } /* Inverted */ .ui.inverted.olive.header { color: #d9e778 !important; } a.ui.inverted.olive.header:hover { color: #d8ea5c !important; } /*--- Yellow ---*/ .ui.yellow.header { color: #fbbd08 !important; } a.ui.yellow.header:hover { color: #eaae00 !important; } .ui.yellow.dividing.header { border-bottom: 2px solid #fbbd08; } /* Inverted */ .ui.inverted.yellow.header { color: #ffe21f !important; } a.ui.inverted.yellow.header:hover { color: #ffdf05 !important; } /*--- Green ---*/ .ui.green.header { color: #21ba45 !important; } a.ui.green.header:hover { color: #16ab39 !important; } .ui.green.dividing.header { border-bottom: 2px solid #21ba45; } /* Inverted */ .ui.inverted.green.header { color: #2ecc40 !important; } a.ui.inverted.green.header:hover { color: #22be34 !important; } /*--- Teal ---*/ .ui.teal.header { color: #00b5ad !important; } a.ui.teal.header:hover { color: #009c95 !important; } .ui.teal.dividing.header { border-bottom: 2px solid #00b5ad; } /* Inverted */ .ui.inverted.teal.header { color: #6dffff !important; } a.ui.inverted.teal.header:hover { color: #54ffff !important; } /*--- Blue ---*/ .ui.blue.header { color: #2185d0 !important; } a.ui.blue.header:hover { color: #1678c2 !important; } .ui.blue.dividing.header { border-bottom: 2px solid #2185d0; } /* Inverted */ .ui.inverted.blue.header { color: #54c8ff !important; } a.ui.inverted.blue.header:hover { color: #3ac0ff !important; } /*--- Violet ---*/ .ui.violet.header { color: #6435c9 !important; } a.ui.violet.header:hover { color: #5829bb !important; } .ui.violet.dividing.header { border-bottom: 2px solid #6435c9; } /* Inverted */ .ui.inverted.violet.header { color: #a291fb !important; } a.ui.inverted.violet.header:hover { color: #8a73ff !important; } /*--- Purple ---*/ .ui.purple.header { color: #a333c8 !important; } a.ui.purple.header:hover { color: #9627ba !important; } .ui.purple.dividing.header { border-bottom: 2px solid #a333c8; } /* Inverted */ .ui.inverted.purple.header { color: #dc73ff !important; } a.ui.inverted.purple.header:hover { color: #d65aff !important; } /*--- Pink ---*/ .ui.pink.header { color: #e03997 !important; } a.ui.pink.header:hover { color: #e61a8d !important; } .ui.pink.dividing.header { border-bottom: 2px solid #e03997; } /* Inverted */ .ui.inverted.pink.header { color: #ff8edf !important; } a.ui.inverted.pink.header:hover { color: #ff74d8 !important; } /*--- Brown ---*/ .ui.brown.header { color: #a5673f !important; } a.ui.brown.header:hover { color: #975b33 !important; } .ui.brown.dividing.header { border-bottom: 2px solid #a5673f; } /* Inverted */ .ui.inverted.brown.header { color: #d67c1c !important; } a.ui.inverted.brown.header:hover { color: #c86f11 !important; } /*--- Grey ---*/ .ui.grey.header { color: #767676 !important; } a.ui.grey.header:hover { color: #838383 !important; } .ui.grey.dividing.header { border-bottom: 2px solid #767676; } /* Inverted */ .ui.inverted.grey.header { color: #dcddde !important; } a.ui.inverted.grey.header:hover { color: #cfd0d2 !important; } /*------------------- Aligned --------------------*/ .ui.left.aligned.header { text-align: left; } .ui.right.aligned.header { text-align: right; } .ui.centered.header, .ui.center.aligned.header { text-align: center; } .ui.justified.header { text-align: justify; } .ui.justified.header:after { display: inline-block; content: ''; width: 100%; } /*------------------- Floated --------------------*/ .ui.floated.header, .ui[class*="left floated"].header { float: left; margin-top: 0em; margin-right: 0.5em; } .ui[class*="right floated"].header { float: right; margin-top: 0em; margin-left: 0.5em; } /*------------------- Fittted --------------------*/ .ui.fitted.header { padding: 0em; } /*------------------- Dividing --------------------*/ .ui.dividing.header { padding-bottom: 0.21428571rem; border-bottom: 1px solid rgba(34, 36, 38, 0.15); } .ui.dividing.header .sub.header { padding-bottom: 0.21428571rem; } .ui.dividing.header .icon { margin-bottom: 0em; } .ui.inverted.dividing.header { border-bottom-color: rgba(255, 255, 255, 0.1); } /*------------------- Block --------------------*/ .ui.block.header { background: #f3f4f5; padding: 0.71428571rem 1rem; box-shadow: none; border: 1px solid #d4d4d5; border-radius: 0.28571429rem; } .ui.tiny.block.header { font-size: 0.85714286rem; } .ui.small.block.header { font-size: 0.92857143rem; } .ui.block.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { font-size: 1rem; } .ui.large.block.header { font-size: 1.14285714rem; } .ui.huge.block.header { font-size: 1.42857143rem; } /*------------------- Attached --------------------*/ .ui.attached.header { background: #ffffff; padding: 0.71428571rem 1rem; margin-left: -1px; margin-right: -1px; box-shadow: none; border: 1px solid #d4d4d5; } .ui.attached.block.header { background: #f3f4f5; } .ui.attached:not(.top):not(.bottom).header { margin-top: 0em; margin-bottom: 0em; border-top: none; border-radius: 0em; } .ui.top.attached.header { margin-bottom: 0em; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.bottom.attached.header { margin-top: 0em; border-top: none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Attached Sizes */ .ui.tiny.attached.header { font-size: 0.85714286em; } .ui.small.attached.header { font-size: 0.92857143em; } .ui.attached.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { font-size: 1em; } .ui.large.attached.header { font-size: 1.14285714em; } .ui.huge.attached.header { font-size: 1.42857143em; } /*------------------- Sizing --------------------*/ .ui.header:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6) { font-size: 1.28em; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Icon * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Icon *******************************/ @font-face { font-family: 'Icons'; src: url("themes/default/assets/fonts/icons.eot"); src: url("themes/default/assets/fonts/icons.eot?#iefix") format('embedded-opentype'), url("themes/default/assets/fonts/icons.woff2") format('woff2'), url("themes/default/assets/fonts/icons.woff") format('woff'), url("themes/default/assets/fonts/icons.ttf") format('truetype'), url("themes/default/assets/fonts/icons.svg#icons") format('svg'); font-style: normal; font-weight: normal; font-variant: normal; text-decoration: inherit; text-transform: none; } i.icon { display: inline-block; opacity: 1; margin: 0em 0.25rem 0em 0em; width: 1.18em; height: 1em; font-family: 'Icons'; font-style: normal; font-weight: normal; text-decoration: inherit; text-align: center; speak: none; font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; -webkit-backface-visibility: hidden; backface-visibility: hidden; } i.icon:before { background: none !important; } /******************************* Types *******************************/ /*-------------- Loading ---------------*/ i.icon.loading { height: 1em; line-height: 1; -webkit-animation: icon-loading 2s linear infinite; animation: icon-loading 2s linear infinite; } @-webkit-keyframes icon-loading { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes icon-loading { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /******************************* States *******************************/ i.icon.hover { opacity: 1 !important; } i.icon.active { opacity: 1 !important; } i.emphasized.icon { opacity: 1 !important; } i.disabled.icon { opacity: 0.45 !important; } /******************************* Variations *******************************/ /*------------------- Fitted --------------------*/ i.fitted.icon { width: auto; margin: 0em; } /*------------------- Link --------------------*/ i.link.icon { cursor: pointer; opacity: 0.8; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } i.link.icon:hover { opacity: 1 !important; } /*------------------- Circular --------------------*/ i.circular.icon { border-radius: 500em !important; line-height: 1 !important; padding: 0.5em 0.5em !important; box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; width: 2em !important; height: 2em !important; } i.circular.inverted.icon { border: none; box-shadow: none; } /*------------------- Flipped --------------------*/ i.flipped.icon, i.horizontally.flipped.icon { -webkit-transform: scale(-1, 1); -ms-transform: scale(-1, 1); transform: scale(-1, 1); } i.vertically.flipped.icon { -webkit-transform: scale(1, -1); -ms-transform: scale(1, -1); transform: scale(1, -1); } /*------------------- Rotated --------------------*/ i.rotated.icon, i.right.rotated.icon, i.clockwise.rotated.icon { -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } i.left.rotated.icon, i.counterclockwise.rotated.icon { -webkit-transform: rotate(-90deg); -ms-transform: rotate(-90deg); transform: rotate(-90deg); } /*------------------- Bordered --------------------*/ i.bordered.icon { line-height: 1; vertical-align: baseline; width: 2em; height: 2em; padding: 0.5em 0.41em !important; box-shadow: 0em 0em 0em 0.1em rgba(0, 0, 0, 0.1) inset; } i.bordered.inverted.icon { border: none; box-shadow: none; } /*------------------- Inverted --------------------*/ /* Inverted Shapes */ i.inverted.bordered.icon, i.inverted.circular.icon { background-color: #1b1c1d !important; color: #ffffff !important; } i.inverted.icon { color: #ffffff; } /*------------------- Colors --------------------*/ /* Red */ i.red.icon { color: #db2828 !important; } i.inverted.red.icon { color: #ff695e !important; } i.inverted.bordered.red.icon, i.inverted.circular.red.icon { background-color: #db2828 !important; color: #ffffff !important; } /* Orange */ i.orange.icon { color: #f2711c !important; } i.inverted.orange.icon { color: #ff851b !important; } i.inverted.bordered.orange.icon, i.inverted.circular.orange.icon { background-color: #f2711c !important; color: #ffffff !important; } /* Yellow */ i.yellow.icon { color: #fbbd08 !important; } i.inverted.yellow.icon { color: #ffe21f !important; } i.inverted.bordered.yellow.icon, i.inverted.circular.yellow.icon { background-color: #fbbd08 !important; color: #ffffff !important; } /* Olive */ i.olive.icon { color: #b5cc18 !important; } i.inverted.olive.icon { color: #d9e778 !important; } i.inverted.bordered.olive.icon, i.inverted.circular.olive.icon { background-color: #b5cc18 !important; color: #ffffff !important; } /* Green */ i.green.icon { color: #21ba45 !important; } i.inverted.green.icon { color: #2ecc40 !important; } i.inverted.bordered.green.icon, i.inverted.circular.green.icon { background-color: #21ba45 !important; color: #ffffff !important; } /* Teal */ i.teal.icon { color: #00b5ad !important; } i.inverted.teal.icon { color: #6dffff !important; } i.inverted.bordered.teal.icon, i.inverted.circular.teal.icon { background-color: #00b5ad !important; color: #ffffff !important; } /* Blue */ i.blue.icon { color: #2185d0 !important; } i.inverted.blue.icon { color: #54c8ff !important; } i.inverted.bordered.blue.icon, i.inverted.circular.blue.icon { background-color: #2185d0 !important; color: #ffffff !important; } /* Violet */ i.violet.icon { color: #6435c9 !important; } i.inverted.violet.icon { color: #a291fb !important; } i.inverted.bordered.violet.icon, i.inverted.circular.violet.icon { background-color: #6435c9 !important; color: #ffffff !important; } /* Purple */ i.purple.icon { color: #a333c8 !important; } i.inverted.purple.icon { color: #dc73ff !important; } i.inverted.bordered.purple.icon, i.inverted.circular.purple.icon { background-color: #a333c8 !important; color: #ffffff !important; } /* Pink */ i.pink.icon { color: #e03997 !important; } i.inverted.pink.icon { color: #ff8edf !important; } i.inverted.bordered.pink.icon, i.inverted.circular.pink.icon { background-color: #e03997 !important; color: #ffffff !important; } /* Brown */ i.brown.icon { color: #a5673f !important; } i.inverted.brown.icon { color: #d67c1c !important; } i.inverted.bordered.brown.icon, i.inverted.circular.brown.icon { background-color: #a5673f !important; color: #ffffff !important; } /* Grey */ i.grey.icon { color: #767676 !important; } i.inverted.grey.icon { color: #dcddde !important; } i.inverted.bordered.grey.icon, i.inverted.circular.grey.icon { background-color: #767676 !important; color: #ffffff !important; } /* Black */ i.black.icon { color: #1b1c1d !important; } i.inverted.black.icon { color: #545454 !important; } i.inverted.bordeblack.black.icon, i.inverted.circular.black.icon { background-color: #1b1c1d !important; color: #ffffff !important; } /*------------------- Sizes --------------------*/ i.mini.icon, i.mini.icons { line-height: 1; font-size: 0.71428571rem; } i.tiny.icon, i.tiny.icons { line-height: 1; font-size: 0.85714286rem; } i.small.icon, i.small.icons { line-height: 1; font-size: 0.92857143em; } i.icon, i.icons { font-size: 1em; } i.large.icon, i.large.icons { line-height: 1; vertical-align: middle; font-size: 1.5em; } i.big.icon, i.big.icons { line-height: 1; vertical-align: middle; font-size: 2em; } i.huge.icon, i.huge.icons { line-height: 1; vertical-align: middle; font-size: 4em; } i.massive.icon, i.massive.icons { line-height: 1; vertical-align: middle; font-size: 8em; } /******************************* Groups *******************************/ i.icons { display: inline-block; position: relative; line-height: 1; } i.icons .icon { position: absolute; top: 50%; left: 50%; -webkit-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); margin: 0em; margin: 0; } i.icons .icon:first-child { position: static; width: auto; height: auto; vertical-align: top; -webkit-transform: none; -ms-transform: none; transform: none; margin-right: 0.25rem; } /* Corner Icon */ i.icons .corner.icon { top: auto; left: auto; right: 0; bottom: 0; -webkit-transform: none; -ms-transform: none; transform: none; font-size: 0.45em; text-shadow: -1px -1px 0 #ffffff, 1px -1px 0 #ffffff, -1px 1px 0 #ffffff, 1px 1px 0 #ffffff; } i.icons .inverted.corner.icon { text-shadow: -1px -1px 0 #1b1c1d, 1px -1px 0 #1b1c1d, -1px 1px 0 #1b1c1d, 1px 1px 0 #1b1c1d; } /* * Font Awesome 4.3.0 by @davegandy - http://fontawesome.io - @fontawesome * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) */ /******************************* Semantic-UI integration of font-awesome : ///class names are separated i.icon.circle => i.icon.circle i.icon.circle-o => i.icon.circle.outline //abbreviation are replaced by full letters: i.icon.ellipsis-h => i.icon.ellipsis.horizontal i.icon.ellipsis-v => i.icon.ellipsis.vertical .alpha => .i.icon.alphabet .asc => .i.icon.ascending .desc => .i.icon.descending .alt =>.alternate ASCII order is conserved for easier maintenance. Icons that only have one style 'outline', 'square' etc do not require this class for instance `lemon icon` not `lemon outline icon` since there is only one lemon *******************************/ /******************************* Icons *******************************/ /* Web Content */ i.icon.search:before { content: "\f002"; } i.icon.mail.outline:before { content: "\f003"; } i.icon.external:before { content: "\f08e"; } i.icon.signal:before { content: "\f012"; } i.icon.setting:before { content: "\f013"; } i.icon.home:before { content: "\f015"; } i.icon.inbox:before { content: "\f01c"; } i.icon.browser:before { content: "\f022"; } i.icon.tag:before { content: "\f02b"; } i.icon.tags:before { content: "\f02c"; } i.icon.calendar:before { content: "\f073"; } i.icon.comment:before { content: "\f075"; } i.icon.comments:before { content: "\f086"; } i.icon.shop:before { content: "\f07a"; } i.icon.privacy:before { content: "\f084"; } i.icon.settings:before { content: "\f085"; } i.icon.trophy:before { content: "\f091"; } i.icon.payment:before { content: "\f09d"; } i.icon.feed:before { content: "\f09e"; } i.icon.alarm.outline:before { content: "\f0a2"; } i.icon.tasks:before { content: "\f0ae"; } i.icon.cloud:before { content: "\f0c2"; } i.icon.lab:before { content: "\f0c3"; } i.icon.mail:before { content: "\f0e0"; } i.icon.idea:before { content: "\f0eb"; } i.icon.dashboard:before { content: "\f0e4"; } i.icon.sitemap:before { content: "\f0e8"; } i.icon.alarm:before { content: "\f0f3"; } i.icon.terminal:before { content: "\f120"; } i.icon.code:before { content: "\f121"; } i.icon.protect:before { content: "\f132"; } i.icon.calendar.outline:before { content: "\f133"; } i.icon.ticket:before { content: "\f145"; } i.icon.external.square:before { content: "\f14c"; } i.icon.map:before { content: "\f14e"; } i.icon.bug:before { content: "\f188"; } i.icon.mail.square:before { content: "\f199"; } i.icon.history:before { content: "\f1da"; } i.icon.options:before { content: "\f1de"; } i.icon.comment.outline:before { content: "\f0e5"; } i.icon.comments.outline:before { content: "\f0e6"; } i.icon.text.telephone:before { content: "\f1e4"; } i.icon.find:before { content: "\f1e5"; } i.icon.wifi:before { content: "\f1eb"; } i.icon.alarm.slash:before { content: "\f1f6"; } i.icon.alarm.slash.outline:before { content: "\f1f7"; } i.icon.copyright:before { content: "\f1f9"; } i.icon.at:before { content: "\f1fa"; } i.icon.eyedropper:before { content: "\f1fb"; } i.icon.paint.brush:before { content: "\f1fc"; } i.icon.heartbeat:before { content: "\f21e"; } /* User Actions */ i.icon.download:before { content: "\f019"; } i.icon.repeat:before { content: "\f01e"; } i.icon.refresh:before { content: "\f021"; } i.icon.lock:before { content: "\f023"; } i.icon.bookmark:before { content: "\f02e"; } i.icon.print:before { content: "\f02f"; } i.icon.write:before { content: "\f040"; } i.icon.theme:before { content: "\f043"; } i.icon.adjust:before { content: "\f042"; } i.icon.edit:before { content: "\f044"; } i.icon.external.share:before { content: "\f045"; } i.icon.ban:before { content: "\f05e"; } i.icon.mail.forward:before { content: "\f064"; } i.icon.share:before { content: "\f064"; } i.icon.expand:before { content: "\f065"; } i.icon.compress:before { content: "\f066"; } i.icon.unhide:before { content: "\f06e"; } i.icon.hide:before { content: "\f070"; } i.icon.random:before { content: "\f074"; } i.icon.retweet:before { content: "\f079"; } i.icon.sign.out:before { content: "\f08b"; } i.icon.pin:before { content: "\f08d"; } i.icon.sign.in:before { content: "\f090"; } i.icon.upload:before { content: "\f093"; } i.icon.call:before { content: "\f095"; } i.icon.call.square:before { content: "\f098"; } i.icon.remove.bookmark:before { content: "\f097"; } i.icon.unlock:before { content: "\f09c"; } i.icon.configure:before { content: "\f0ad"; } i.icon.filter:before { content: "\f0b0"; } i.icon.wizard:before { content: "\f0d0"; } i.icon.undo:before { content: "\f0e2"; } i.icon.exchange:before { content: "\f0ec"; } i.icon.cloud.download:before { content: "\f0ed"; } i.icon.cloud.upload:before { content: "\f0ee"; } i.icon.reply:before { content: "\f112"; } i.icon.reply.all:before { content: "\f122"; } i.icon.erase:before { content: "\f12d"; } i.icon.unlock.alternate:before { content: "\f13e"; } i.icon.archive:before { content: "\f187"; } i.icon.translate:before { content: "\f1ab"; } i.icon.recycle:before { content: "\f1b8"; } i.icon.send:before { content: "\f1d8"; } i.icon.send.outline:before { content: "\f1d9"; } i.icon.share.alternate:before { content: "\f1e0"; } i.icon.share.alternate.square:before { content: "\f1e1"; } i.icon.wait:before { content: "\f017"; } i.icon.write.square:before { content: "\f14b"; } i.icon.share.square:before { content: "\f14d"; } i.icon.add.to.cart:before { content: "\f217"; } i.icon.in.cart:before { content: "\f218"; } i.icon.add.user:before { content: "\f234"; } i.icon.remove.user:before { content: "\f235"; } /* Messages */ i.icon.help.circle:before { content: "\f059"; } i.icon.info.circle:before { content: "\f05a"; } i.icon.warning:before { content: "\f12a"; } i.icon.warning.circle:before { content: "\f06a"; } i.icon.warning.sign:before { content: "\f071"; } i.icon.help:before { content: "\f128"; } i.icon.info:before { content: "\f129"; } i.icon.announcement:before { content: "\f0a1"; } i.icon.birthday:before { content: "\f1fd"; } /* Users */ i.icon.users:before { content: "\f0c0"; } i.icon.doctor:before { content: "\f0f0"; } i.icon.child:before { content: "\f1ae"; } i.icon.user:before { content: "\f007"; } i.icon.handicap:before { content: "\f193"; } i.icon.student:before { content: "\f19d"; } i.icon.spy:before { content: "\f21b"; } /* Gender & Sexuality */ i.icon.female:before { content: "\f182"; } i.icon.male:before { content: "\f183"; } i.icon.woman:before { content: "\f221"; } i.icon.man:before { content: "\f222"; } i.icon.non.binary.transgender:before { content: "\f223"; } i.icon.intergender:before { content: "\f224"; } i.icon.transgender:before { content: "\f225"; } i.icon.lesbian:before { content: "\f226"; } i.icon.gay:before { content: "\f227"; } i.icon.heterosexual:before { content: "\f228"; } i.icon.other.gender:before { content: "\f229"; } i.icon.other.gender.vertical:before { content: "\f22a"; } i.icon.other.gender.horizontal:before { content: "\f22b"; } i.icon.neuter:before { content: "\f22c"; } /* View Adjustment */ i.icon.grid.layout:before { content: "\f00a"; } i.icon.list.layout:before { content: "\f00b"; } i.icon.block.layout:before { content: "\f009"; } i.icon.zoom:before { content: "\f00e"; } i.icon.zoom.out:before { content: "\f010"; } i.icon.resize.vertical:before { content: "\f07d"; } i.icon.resize.horizontal:before { content: "\f07e"; } i.icon.maximize:before { content: "\f0b2"; } i.icon.crop:before { content: "\f125"; } /* Literal Objects */ i.icon.cocktail:before { content: "\f000"; } i.icon.road:before { content: "\f018"; } i.icon.flag:before { content: "\f024"; } i.icon.book:before { content: "\f02d"; } i.icon.gift:before { content: "\f06b"; } i.icon.leaf:before { content: "\f06c"; } i.icon.fire:before { content: "\f06d"; } i.icon.plane:before { content: "\f072"; } i.icon.magnet:before { content: "\f076"; } i.icon.legal:before { content: "\f0e3"; } i.icon.lemon:before { content: "\f094"; } i.icon.world:before { content: "\f0ac"; } i.icon.travel:before { content: "\f0b1"; } i.icon.shipping:before { content: "\f0d1"; } i.icon.money:before { content: "\f0d6"; } i.icon.lightning:before { content: "\f0e7"; } i.icon.rain:before { content: "\f0e9"; } i.icon.treatment:before { content: "\f0f1"; } i.icon.suitcase:before { content: "\f0f2"; } i.icon.bar:before { content: "\f0fc"; } i.icon.flag.outline:before { content: "\f11d"; } i.icon.flag.checkered:before { content: "\f11e"; } i.icon.puzzle:before { content: "\f12e"; } i.icon.fire.extinguisher:before { content: "\f134"; } i.icon.rocket:before { content: "\f135"; } i.icon.anchor:before { content: "\f13d"; } i.icon.bullseye:before { content: "\f140"; } i.icon.sun:before { content: "\f185"; } i.icon.moon:before { content: "\f186"; } i.icon.fax:before { content: "\f1ac"; } i.icon.life.ring:before { content: "\f1cd"; } i.icon.bomb:before { content: "\f1e2"; } i.icon.soccer:before { content: "\f1e3"; } i.icon.calculator:before { content: "\f1ec"; } i.icon.diamond:before { content: "\f219"; } /* Shapes */ i.icon.crosshairs:before { content: "\f05b"; } i.icon.asterisk:before { content: "\f069"; } i.icon.certificate:before { content: "\f0a3"; } i.icon.circle:before { content: "\f111"; } i.icon.quote.left:before { content: "\f10d"; } i.icon.quote.right:before { content: "\f10e"; } i.icon.ellipsis.horizontal:before { content: "\f141"; } i.icon.ellipsis.vertical:before { content: "\f142"; } i.icon.cube:before { content: "\f1b2"; } i.icon.cubes:before { content: "\f1b3"; } i.icon.circle.notched:before { content: "\f1ce"; } i.icon.circle.thin:before { content: "\f1db"; } i.icon.square.outline:before { content: "\f096"; } i.icon.square:before { content: "\f0c8"; } /* Item Selection */ i.icon.checkmark:before { content: "\f00c"; } i.icon.remove:before { content: "\f00d"; } i.icon.checkmark.box:before { content: "\f046"; } i.icon.move:before { content: "\f047"; } i.icon.add.circle:before { content: "\f055"; } i.icon.minus.circle:before { content: "\f056"; } i.icon.remove.circle:before { content: "\f057"; } i.icon.check.circle:before { content: "\f058"; } i.icon.remove.circle.outline:before { content: "\f05c"; } i.icon.check.circle.outline:before { content: "\f05d"; } i.icon.plus:before { content: "\f067"; } i.icon.minus:before { content: "\f068"; } i.icon.add.square:before { content: "\f0fe"; } i.icon.radio:before { content: "\f10c"; } i.icon.selected.radio:before { content: "\f192"; } i.icon.minus.square:before { content: "\f146"; } i.icon.minus.square.outline:before { content: "\f147"; } i.icon.check.square:before { content: "\f14a"; } i.icon.plus.square.outline:before { content: "\f196"; } i.icon.toggle.off:before { content: "\f204"; } i.icon.toggle.on:before { content: "\f205"; } /* Media */ i.icon.film:before { content: "\f008"; } i.icon.sound:before { content: "\f025"; } i.icon.photo:before { content: "\f030"; } i.icon.bar.chart:before { content: "\f080"; } i.icon.camera.retro:before { content: "\f083"; } i.icon.newspaper:before { content: "\f1ea"; } i.icon.area.chart:before { content: "\f1fe"; } i.icon.pie.chart:before { content: "\f200"; } i.icon.line.chart:before { content: "\f201"; } /* Pointers */ i.icon.arrow.circle.outline.down:before { content: "\f01a"; } i.icon.arrow.circle.outline.up:before { content: "\f01b"; } i.icon.chevron.left:before { content: "\f053"; } i.icon.chevron.right:before { content: "\f054"; } i.icon.arrow.left:before { content: "\f060"; } i.icon.arrow.right:before { content: "\f061"; } i.icon.arrow.up:before { content: "\f062"; } i.icon.arrow.down:before { content: "\f063"; } i.icon.chevron.up:before { content: "\f077"; } i.icon.chevron.down:before { content: "\f078"; } i.icon.pointing.right:before { content: "\f0a4"; } i.icon.pointing.left:before { content: "\f0a5"; } i.icon.pointing.up:before { content: "\f0a6"; } i.icon.pointing.down:before { content: "\f0a7"; } i.icon.arrow.circle.left:before { content: "\f0a8"; } i.icon.arrow.circle.right:before { content: "\f0a9"; } i.icon.arrow.circle.up:before { content: "\f0aa"; } i.icon.arrow.circle.down:before { content: "\f0ab"; } i.icon.caret.down:before { content: "\f0d7"; } i.icon.caret.up:before { content: "\f0d8"; } i.icon.caret.left:before { content: "\f0d9"; } i.icon.caret.right:before { content: "\f0da"; } i.icon.angle.double.left:before { content: "\f100"; } i.icon.angle.double.right:before { content: "\f101"; } i.icon.angle.double.up:before { content: "\f102"; } i.icon.angle.double.down:before { content: "\f103"; } i.icon.angle.left:before { content: "\f104"; } i.icon.angle.right:before { content: "\f105"; } i.icon.angle.up:before { content: "\f106"; } i.icon.angle.down:before { content: "\f107"; } i.icon.chevron.circle.left:before { content: "\f137"; } i.icon.chevron.circle.right:before { content: "\f138"; } i.icon.chevron.circle.up:before { content: "\f139"; } i.icon.chevron.circle.down:before { content: "\f13a"; } i.icon.toggle.down:before { content: "\f150"; } i.icon.toggle.up:before { content: "\f151"; } i.icon.toggle.right:before { content: "\f152"; } i.icon.long.arrow.down:before { content: "\f175"; } i.icon.long.arrow.up:before { content: "\f176"; } i.icon.long.arrow.left:before { content: "\f177"; } i.icon.long.arrow.right:before { content: "\f178"; } i.icon.arrow.circle.outline.right:before { content: "\f18e"; } i.icon.arrow.circle.outline.left:before { content: "\f190"; } i.icon.toggle.left:before { content: "\f191"; } /* Computer */ i.icon.power:before { content: "\f011"; } i.icon.trash:before { content: "\f1f8"; } i.icon.trash.outline:before { content: "\f014"; } i.icon.disk.outline:before { content: "\f0a0"; } i.icon.desktop:before { content: "\f108"; } i.icon.laptop:before { content: "\f109"; } i.icon.tablet:before { content: "\f10a"; } i.icon.mobile:before { content: "\f10b"; } i.icon.game:before { content: "\f11b"; } i.icon.keyboard:before { content: "\f11c"; } i.icon.plug:before { content: "\f1e6"; } /* File System */ i.icon.folder:before { content: "\f07b"; } i.icon.folder.open:before { content: "\f07c"; } i.icon.level.up:before { content: "\f148"; } i.icon.level.down:before { content: "\f149"; } i.icon.file:before { content: "\f15b"; } i.icon.file.outline:before { content: "\f016"; } i.icon.file.text:before { content: "\f15c"; } i.icon.file.text.outline:before { content: "\f0f6"; } i.icon.folder.outline:before { content: "\f114"; } i.icon.folder.open.outline:before { content: "\f115"; } i.icon.file.pdf.outline:before { content: "\f1c1"; } i.icon.file.word.outline:before { content: "\f1c2"; } i.icon.file.excel.outline:before { content: "\f1c3"; } i.icon.file.powerpoint.outline:before { content: "\f1c4"; } i.icon.file.image.outline:before { content: "\f1c5"; } i.icon.file.archive.outline:before { content: "\f1c6"; } i.icon.file.audio.outline:before { content: "\f1c7"; } i.icon.file.video.outline:before { content: "\f1c8"; } i.icon.file.code.outline:before { content: "\f1c9"; } /* Technologies */ i.icon.barcode:before { content: "\f02a"; } i.icon.qrcode:before { content: "\f029"; } i.icon.fork:before { content: "\f126"; } i.icon.html5:before { content: "\f13b"; } i.icon.css3:before { content: "\f13c"; } i.icon.rss:before { content: "\f09e"; } i.icon.rss.square:before { content: "\f143"; } i.icon.openid:before { content: "\f19b"; } i.icon.database:before { content: "\f1c0"; } i.icon.server:before { content: "\f233"; } /* Rating */ i.icon.heart:before { content: "\f004"; } i.icon.star:before { content: "\f005"; } i.icon.empty.star:before { content: "\f006"; } i.icon.thumbs.outline.up:before { content: "\f087"; } i.icon.thumbs.outline.down:before { content: "\f088"; } i.icon.star.half:before { content: "\f089"; } i.icon.empty.heart:before { content: "\f08a"; } i.icon.smile:before { content: "\f118"; } i.icon.frown:before { content: "\f119"; } i.icon.meh:before { content: "\f11a"; } i.icon.star.half.empty:before { content: "\f123"; } i.icon.thumbs.up:before { content: "\f164"; } i.icon.thumbs.down:before { content: "\f165"; } /* Audio */ i.icon.music:before { content: "\f001"; } i.icon.video.play.outline:before { content: "\f01d"; } i.icon.volume.off:before { content: "\f026"; } i.icon.volume.down:before { content: "\f027"; } i.icon.volume.up:before { content: "\f028"; } i.icon.record:before { content: "\f03d"; } i.icon.step.backward:before { content: "\f048"; } i.icon.fast.backward:before { content: "\f049"; } i.icon.backward:before { content: "\f04a"; } i.icon.play:before { content: "\f04b"; } i.icon.pause:before { content: "\f04c"; } i.icon.stop:before { content: "\f04d"; } i.icon.forward:before { content: "\f04e"; } i.icon.fast.forward:before { content: "\f050"; } i.icon.step.forward:before { content: "\f051"; } i.icon.eject:before { content: "\f052"; } i.icon.unmute:before { content: "\f130"; } i.icon.mute:before { content: "\f131"; } i.icon.video.play:before { content: "\f144"; } i.icon.closed.captioning:before { content: "\f20a"; } /* Map, Locations, & Transportation */ i.icon.marker:before { content: "\f041"; } i.icon.coffee:before { content: "\f0f4"; } i.icon.food:before { content: "\f0f5"; } i.icon.building.outline:before { content: "\f0f7"; } i.icon.hospital:before { content: "\f0f8"; } i.icon.emergency:before { content: "\f0f9"; } i.icon.first.aid:before { content: "\f0fa"; } i.icon.military:before { content: "\f0fb"; } i.icon.h:before { content: "\f0fd"; } i.icon.location.arrow:before { content: "\f124"; } i.icon.space.shuttle:before { content: "\f197"; } i.icon.university:before { content: "\f19c"; } i.icon.building:before { content: "\f1ad"; } i.icon.paw:before { content: "\f1b0"; } i.icon.spoon:before { content: "\f1b1"; } i.icon.car:before { content: "\f1b9"; } i.icon.taxi:before { content: "\f1ba"; } i.icon.tree:before { content: "\f1bb"; } i.icon.bicycle:before { content: "\f206"; } i.icon.bus:before { content: "\f207"; } i.icon.ship:before { content: "\f21a"; } i.icon.motorcycle:before { content: "\f21c"; } i.icon.street.view:before { content: "\f21d"; } i.icon.hotel:before { content: "\f236"; } i.icon.train:before { content: "\f238"; } i.icon.subway:before { content: "\f239"; } /* Tables */ i.icon.table:before { content: "\f0ce"; } i.icon.columns:before { content: "\f0db"; } i.icon.sort:before { content: "\f0dc"; } i.icon.sort.ascending:before { content: "\f0de"; } i.icon.sort.descending:before { content: "\f0dd"; } i.icon.sort.alphabet.ascending:before { content: "\f15d"; } i.icon.sort.alphabet.descending:before { content: "\f15e"; } i.icon.sort.content.ascending:before { content: "\f160"; } i.icon.sort.content.descending:before { content: "\f161"; } i.icon.sort.numeric.ascending:before { content: "\f162"; } i.icon.sort.numeric.descending:before { content: "\f163"; } /* Text Editor */ i.icon.font:before { content: "\f031"; } i.icon.bold:before { content: "\f032"; } i.icon.italic:before { content: "\f033"; } i.icon.text.height:before { content: "\f034"; } i.icon.text.width:before { content: "\f035"; } i.icon.align.left:before { content: "\f036"; } i.icon.align.center:before { content: "\f037"; } i.icon.align.right:before { content: "\f038"; } i.icon.align.justify:before { content: "\f039"; } i.icon.list:before { content: "\f03a"; } i.icon.outdent:before { content: "\f03b"; } i.icon.indent:before { content: "\f03c"; } i.icon.linkify:before { content: "\f0c1"; } i.icon.cut:before { content: "\f0c4"; } i.icon.copy:before { content: "\f0c5"; } i.icon.attach:before { content: "\f0c6"; } i.icon.save:before { content: "\f0c7"; } i.icon.content:before { content: "\f0c9"; } i.icon.unordered.list:before { content: "\f0ca"; } i.icon.ordered.list:before { content: "\f0cb"; } i.icon.strikethrough:before { content: "\f0cc"; } i.icon.underline:before { content: "\f0cd"; } i.icon.paste:before { content: "\f0ea"; } i.icon.unlink:before { content: "\f127"; } i.icon.superscript:before { content: "\f12b"; } i.icon.subscript:before { content: "\f12c"; } i.icon.header:before { content: "\f1dc"; } i.icon.paragraph:before { content: "\f1dd"; } /* Currency */ i.icon.euro:before { content: "\f153"; } i.icon.pound:before { content: "\f154"; } i.icon.dollar:before { content: "\f155"; } i.icon.rupee:before { content: "\f156"; } i.icon.yen:before { content: "\f157"; } i.icon.ruble:before { content: "\f158"; } i.icon.won:before { content: "\f159"; } i.icon.lira:before { content: "\f195"; } i.icon.shekel:before { content: "\f20b"; } /* Payment Options */ i.icon.paypal:before { content: "\f1ed"; } i.icon.paypal.card:before { content: "\f1f4"; } i.icon.google.wallet:before { content: "\f1ee"; } i.icon.visa:before { content: "\f1f0"; } i.icon.mastercard:before { content: "\f1f1"; } i.icon.discover:before { content: "\f1f2"; } i.icon.american.express:before { content: "\f1f3"; } i.icon.stripe:before { content: "\f1f5"; } /* Networks and Websites*/ i.icon.twitter.square:before { content: "\f081"; } i.icon.facebook.square:before { content: "\f082"; } i.icon.linkedin.square:before { content: "\f08c"; } i.icon.github.square:before { content: "\f092"; } i.icon.twitter:before { content: "\f099"; } i.icon.facebook:before { content: "\f09a"; } i.icon.github:before { content: "\f09b"; } i.icon.pinterest:before { content: "\f0d2"; } i.icon.pinterest.square:before { content: "\f0d3"; } i.icon.google.plus.square:before { content: "\f0d4"; } i.icon.google.plus:before { content: "\f0d5"; } i.icon.linkedin:before { content: "\f0e1"; } i.icon.github.alternate:before { content: "\f113"; } i.icon.maxcdn:before { content: "\f136"; } i.icon.bitcoin:before { content: "\f15a"; } i.icon.youtube.square:before { content: "\f166"; } i.icon.youtube:before { content: "\f167"; } i.icon.xing:before { content: "\f168"; } i.icon.xing.square:before { content: "\f169"; } i.icon.youtube.play:before { content: "\f16a"; } i.icon.dropbox:before { content: "\f16b"; } i.icon.stack.overflow:before { content: "\f16c"; } i.icon.instagram:before { content: "\f16d"; } i.icon.flickr:before { content: "\f16e"; } i.icon.adn:before { content: "\f170"; } i.icon.bitbucket:before { content: "\f171"; } i.icon.bitbucket.square:before { content: "\f172"; } i.icon.tumblr:before { content: "\f173"; } i.icon.tumblr.square:before { content: "\f174"; } i.icon.apple:before { content: "\f179"; } i.icon.windows:before { content: "\f17a"; } i.icon.android:before { content: "\f17b"; } i.icon.linux:before { content: "\f17c"; } i.icon.dribbble:before { content: "\f17d"; } i.icon.skype:before { content: "\f17e"; } i.icon.foursquare:before { content: "\f180"; } i.icon.trello:before { content: "\f181"; } i.icon.gittip:before { content: "\f184"; } i.icon.vk:before { content: "\f189"; } i.icon.weibo:before { content: "\f18a"; } i.icon.renren:before { content: "\f18b"; } i.icon.pagelines:before { content: "\f18c"; } i.icon.stack.exchange:before { content: "\f18d"; } i.icon.vimeo:before { content: "\f194"; } i.icon.slack:before { content: "\f198"; } i.icon.wordpress:before { content: "\f19a"; } i.icon.yahoo:before { content: "\f19e"; } i.icon.google:before { content: "\f1a0"; } i.icon.reddit:before { content: "\f1a1"; } i.icon.reddit.square:before { content: "\f1a2"; } i.icon.stumbleupon.circle:before { content: "\f1a3"; } i.icon.stumbleupon:before { content: "\f1a4"; } i.icon.delicious:before { content: "\f1a5"; } i.icon.digg:before { content: "\f1a6"; } i.icon.pied.piper:before { content: "\f1a7"; } i.icon.pied.piper.alternate:before { content: "\f1a8"; } i.icon.drupal:before { content: "\f1a9"; } i.icon.joomla:before { content: "\f1aa"; } i.icon.behance:before { content: "\f1b4"; } i.icon.behance.square:before { content: "\f1b5"; } i.icon.steam:before { content: "\f1b6"; } i.icon.steam.square:before { content: "\f1b7"; } i.icon.spotify:before { content: "\f1bc"; } i.icon.deviantart:before { content: "\f1bd"; } i.icon.soundcloud:before { content: "\f1be"; } i.icon.vine:before { content: "\f1ca"; } i.icon.codepen:before { content: "\f1cb"; } i.icon.jsfiddle:before { content: "\f1cc"; } i.icon.rebel:before { content: "\f1d0"; } i.icon.empire:before { content: "\f1d1"; } i.icon.git.square:before { content: "\f1d2"; } i.icon.git:before { content: "\f1d3"; } i.icon.hacker.news:before { content: "\f1d4"; } i.icon.tencent.weibo:before { content: "\f1d5"; } i.icon.qq:before { content: "\f1d6"; } i.icon.wechat:before { content: "\f1d7"; } i.icon.slideshare:before { content: "\f1e7"; } i.icon.twitch:before { content: "\f1e8"; } i.icon.yelp:before { content: "\f1e9"; } i.icon.lastfm:before { content: "\f202"; } i.icon.lastfm.square:before { content: "\f203"; } i.icon.ioxhost:before { content: "\f208"; } i.icon.angellist:before { content: "\f209"; } i.icon.meanpath:before { content: "\f20c"; } i.icon.buysellads:before { content: "\f20d"; } i.icon.connectdevelop:before { content: "\f20e"; } i.icon.dashcube:before { content: "\f210"; } i.icon.forumbee:before { content: "\f211"; } i.icon.leanpub:before { content: "\f212"; } i.icon.sellsy:before { content: "\f213"; } i.icon.shirtsinbulk:before { content: "\f214"; } i.icon.simplybuilt:before { content: "\f215"; } i.icon.skyatlas:before { content: "\f216"; } i.icon.whatsapp:before { content: "\f232"; } i.icon.viacoin:before { content: "\f237"; } i.icon.medium:before { content: "\f23a"; } /******************************* Aliases *******************************/ i.icon.like:before { content: "\f004"; } i.icon.favorite:before { content: "\f005"; } i.icon.video:before { content: "\f008"; } i.icon.check:before { content: "\f00c"; } i.icon.close:before { content: "\f00d"; } i.icon.cancel:before { content: "\f00d"; } i.icon.delete:before { content: "\f00d"; } i.icon.x:before { content: "\f00d"; } i.icon.user.times:before { content: "\f235"; } i.icon.user.close:before { content: "\f235"; } i.icon.user.cancel:before { content: "\f235"; } i.icon.user.delete:before { content: "\f235"; } i.icon.user.x:before { content: "\f235"; } i.icon.zoom.in:before { content: "\f00e"; } i.icon.magnify:before { content: "\f00e"; } i.icon.shutdown:before { content: "\f011"; } i.icon.clock:before { content: "\f017"; } i.icon.time:before { content: "\f017"; } i.icon.play.circle.outline:before { content: "\f01d"; } i.icon.headphone:before { content: "\f025"; } i.icon.camera:before { content: "\f030"; } i.icon.video.camera:before { content: "\f03d"; } i.icon.picture:before { content: "\f03e"; } i.icon.pencil:before { content: "\f040"; } i.icon.compose:before { content: "\f040"; } i.icon.point:before { content: "\f041"; } i.icon.tint:before { content: "\f043"; } i.icon.signup:before { content: "\f044"; } i.icon.plus.circle:before { content: "\f055"; } i.icon.dont:before { content: "\f05e"; } i.icon.minimize:before { content: "\f066"; } i.icon.add:before { content: "\f067"; } i.icon.eye:before { content: "\f06e"; } i.icon.attention:before { content: "\f06a"; } i.icon.cart:before { content: "\f07a"; } i.icon.shuffle:before { content: "\f074"; } i.icon.talk:before { content: "\f075"; } i.icon.chat:before { content: "\f075"; } i.icon.shopping.cart:before { content: "\f07a"; } i.icon.bar.graph:before { content: "\f080"; } i.icon.area.graph:before { content: "\f1fe"; } i.icon.pie.graph:before { content: "\f200"; } i.icon.line.graph:before { content: "\f201"; } i.icon.key:before { content: "\f084"; } i.icon.cogs:before { content: "\f085"; } i.icon.discussions:before { content: "\f086"; } i.icon.like.outline:before { content: "\f087"; } i.icon.dislike.outline:before { content: "\f088"; } i.icon.heart.outline:before { content: "\f08a"; } i.icon.log.out:before { content: "\f08b"; } i.icon.thumb.tack:before { content: "\f08d"; } i.icon.winner:before { content: "\f091"; } i.icon.bookmark.outline:before { content: "\f097"; } i.icon.phone:before { content: "\f095"; } i.icon.phone.square:before { content: "\f098"; } i.icon.credit.card:before { content: "\f09d"; } i.icon.hdd.outline:before { content: "\f0a0"; } i.icon.bullhorn:before { content: "\f0a1"; } i.icon.bell:before { content: "\f0f3"; } i.icon.bell.outline:before { content: "\f0a2"; } i.icon.bell.slash:before { content: "\f1f6"; } i.icon.bell.slash.outline:before { content: "\f1f7"; } i.icon.hand.outline.right:before { content: "\f0a4"; } i.icon.hand.outline.left:before { content: "\f0a5"; } i.icon.hand.outline.up:before { content: "\f0a6"; } i.icon.hand.outline.down:before { content: "\f0a7"; } i.icon.globe:before { content: "\f0ac"; } i.icon.wrench:before { content: "\f0ad"; } i.icon.briefcase:before { content: "\f0b1"; } i.icon.group:before { content: "\f0c0"; } i.icon.flask:before { content: "\f0c3"; } i.icon.sidebar:before { content: "\f0c9"; } i.icon.bars:before { content: "\f0c9"; } i.icon.list.ul:before { content: "\f0ca"; } i.icon.list.ol:before { content: "\f0cb"; } i.icon.numbered.list:before { content: "\f0cb"; } i.icon.magic:before { content: "\f0d0"; } i.icon.truck:before { content: "\f0d1"; } i.icon.currency:before { content: "\f0d6"; } i.icon.triangle.down:before { content: "\f0d7"; } i.icon.dropdown:before { content: "\f0d7"; } i.icon.triangle.up:before { content: "\f0d8"; } i.icon.triangle.left:before { content: "\f0d9"; } i.icon.triangle.right:before { content: "\f0da"; } i.icon.envelope:before { content: "\f0e0"; } i.icon.conversation:before { content: "\f0e6"; } i.icon.umbrella:before { content: "\f0e9"; } i.icon.clipboard:before { content: "\f0ea"; } i.icon.lightbulb:before { content: "\f0eb"; } i.icon.ambulance:before { content: "\f0f9"; } i.icon.medkit:before { content: "\f0fa"; } i.icon.fighter.jet:before { content: "\f0fb"; } i.icon.beer:before { content: "\f0fc"; } i.icon.plus.square:before { content: "\f0fe"; } i.icon.computer:before { content: "\f108"; } i.icon.circle.outline:before { content: "\f10c"; } i.icon.intersex:before { content: "\f10c"; } i.icon.asexual:before { content: "\f10c"; } i.icon.spinner:before { content: "\f110"; } i.icon.gamepad:before { content: "\f11b"; } i.icon.star.half.full:before { content: "\f123"; } i.icon.question:before { content: "\f128"; } i.icon.eraser:before { content: "\f12d"; } i.icon.microphone:before { content: "\f130"; } i.icon.microphone.slash:before { content: "\f131"; } i.icon.shield:before { content: "\f132"; } i.icon.target:before { content: "\f140"; } i.icon.play.circle:before { content: "\f144"; } i.icon.pencil.square:before { content: "\f14b"; } i.icon.compass:before { content: "\f14e"; } i.icon.amex:before { content: "\f1f3"; } i.icon.eur:before { content: "\f153"; } i.icon.gbp:before { content: "\f154"; } i.icon.usd:before { content: "\f155"; } i.icon.inr:before { content: "\f156"; } i.icon.cny:before, i.icon.rmb:before, i.icon.jpy:before { content: "\f157"; } i.icon.rouble:before, i.icon.rub:before { content: "\f158"; } i.icon.krw:before { content: "\f159"; } i.icon.btc:before { content: "\f15a"; } i.icon.sheqel:before, i.icon.ils:before { content: "\f20b"; } i.icon.try:before { content: "\f195"; } i.icon.zip:before { content: "\f187"; } i.icon.dot.circle.outline:before { content: "\f192"; } i.icon.sliders:before { content: "\f1de"; } i.icon.wi-fi:before { content: "\f1eb"; } i.icon.graduation:before { content: "\f19d"; } i.icon.weixin:before { content: "\f1d7"; } i.icon.binoculars:before { content: "\f1e5"; } i.icon.gratipay:before { content: "\f184"; } i.icon.genderless:before { content: "\f1db"; } i.icon.teletype:before { content: "\f1e4"; } i.icon.power.cord:before { content: "\f1e6"; } i.icon.tty:before { content: "\f1e4"; } i.icon.cc:before { content: "\f20a"; } i.icon.plus.cart:before { content: "\f217"; } i.icon.arrow.down.cart:before { content: "\f218"; } i.icon.detective:before { content: "\f21b"; } i.icon.venus:before { content: "\f221"; } i.icon.mars:before { content: "\f222"; } i.icon.mercury:before { content: "\f223"; } i.icon.venus.double:before { content: "\f226"; } i.icon.female.homosexual:before { content: "\f226"; } i.icon.mars.double:before { content: "\f227"; } i.icon.male.homosexual:before { content: "\f227"; } i.icon.venus.mars:before { content: "\f228"; } i.icon.mars.stroke:before { content: "\f229"; } i.icon.mars.alternate:before { content: "\f229"; } i.icon.mars.vertical:before { content: "\f22a"; } i.icon.mars.horizontal:before { content: "\f22b"; } i.icon.mars.stroke.vertical:before { content: "\f22a"; } i.icon.mars.stroke.horizontal:before { content: "\f22b"; } i.icon.facebook.official { content: "\f230"; } i.icon.pinterest.official { content: "\f231"; } i.icon.bed:before { content: "\f236"; } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Image * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Image *******************************/ .ui.image { position: relative; display: inline-block; vertical-align: middle; max-width: 100%; background-color: transparent; } img.ui.image { display: block; } .ui.image svg, .ui.image img { display: block; max-width: 100%; height: auto; } /******************************* States *******************************/ .ui.hidden.images, .ui.hidden.image { display: none; } .ui.disabled.images, .ui.disabled.image { cursor: default; opacity: 0.45; } /******************************* Variations *******************************/ /*-------------- Inline ---------------*/ .ui.inline.image, .ui.inline.image svg, .ui.inline.image img { display: inline-block; } /*------------------ Vertical Aligned -------------------*/ .ui.top.aligned.images .image, .ui.top.aligned.image, .ui.top.aligned.image svg, .ui.top.aligned.image img { display: inline-block; vertical-align: top; } .ui.middle.aligned.images .image, .ui.middle.aligned.image, .ui.middle.aligned.image svg, .ui.middle.aligned.image img { display: inline-block; vertical-align: middle; } .ui.bottom.aligned.images .image, .ui.bottom.aligned.image, .ui.bottom.aligned.image svg, .ui.bottom.aligned.image img { display: inline-block; vertical-align: bottom; } /*-------------- Rounded ---------------*/ .ui.rounded.images .image, .ui.rounded.image, .ui.rounded.images .image > *, .ui.rounded.image > * { border-radius: 0.3125em; } /*-------------- Bordered ---------------*/ .ui.bordered.images .image, .ui.bordered.images img, .ui.bordered.images svg, .ui.bordered.image img, .ui.bordered.image svg, img.ui.bordered.image { border: 1px solid rgba(0, 0, 0, 0.1); } /*-------------- Circular ---------------*/ .ui.circular.images, .ui.circular.image { overflow: hidden; } .ui.circular.images .image, .ui.circular.image, .ui.circular.images .image > *, .ui.circular.image > * { border-radius: 500rem; } /*-------------- Fluid ---------------*/ .ui.fluid.images, .ui.fluid.image, .ui.fluid.images img, .ui.fluid.images svg, .ui.fluid.image svg, .ui.fluid.image img { display: block; width: 100%; height: auto; } /*-------------- Avatar ---------------*/ .ui.avatar.images .image, .ui.avatar.images img, .ui.avatar.images svg, .ui.avatar.image img, .ui.avatar.image svg, .ui.avatar.image { margin-right: 0.25em; display: inline-block; width: 2em; height: 2em; border-radius: 500rem; } /*------------------- Spaced --------------------*/ .ui.spaced.image { display: inline-block !important; margin-left: 0.5em; margin-right: 0.5em; } .ui[class*="left spaced"].image { margin-left: 0.5em; margin-right: 0em; } .ui[class*="right spaced"].image { margin-left: 0em; margin-right: 0.5em; } /*------------------- Floated --------------------*/ .ui.floated.image, .ui.floated.images { float: left; margin-right: 1em; margin-bottom: 1em; } .ui.right.floated.images, .ui.right.floated.image { float: right; margin-right: 0em; margin-bottom: 1em; margin-left: 1em; } .ui.floated.images:last-child, .ui.floated.image:last-child { margin-bottom: 0em; } .ui.centered.images, .ui.centered.image { margin-left: auto; margin-right: auto; } /*-------------- Sizes ---------------*/ .ui.mini.images .image, .ui.mini.images img, .ui.mini.images svg, .ui.mini.image { width: 35px; height: auto; font-size: 0.71428571rem; } .ui.tiny.images .image, .ui.tiny.images img, .ui.tiny.images svg, .ui.tiny.image { width: 80px; height: auto; font-size: 0.85714286rem; } .ui.small.images .image, .ui.small.images img, .ui.small.images svg, .ui.small.image { width: 150px; height: auto; font-size: 0.92857143rem; } .ui.medium.images .image, .ui.medium.images img, .ui.medium.images svg, .ui.medium.image { width: 300px; height: auto; font-size: 1rem; } .ui.large.images .image, .ui.large.images img, .ui.large.images svg, .ui.large.image { width: 450px; height: auto; font-size: 1.14285714rem; } .ui.big.images .image, .ui.big.images img, .ui.big.images svg, .ui.big.image { width: 600px; height: auto; font-size: 1.28571429rem; } .ui.huge.images .image, .ui.huge.images img, .ui.huge.images svg, .ui.huge.image { width: 800px; height: auto; font-size: 1.42857143rem; } .ui.massive.images .image, .ui.massive.images img, .ui.massive.images svg, .ui.massive.image { width: 960px; height: auto; font-size: 1.71428571rem; } /******************************* Groups *******************************/ .ui.images { font-size: 0em; margin: 0em -0.25rem 0rem; } .ui.images .image, .ui.images img, .ui.images svg { display: inline-block; margin: 0em 0.25rem 0.5rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Input * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ /*-------------------- Inputs ---------------------*/ .ui.input { position: relative; font-weight: normal; font-style: normal; display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; color: rgba(0, 0, 0, 0.87); } .ui.input input { margin: 0em; max-width: 100%; -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; outline: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); text-align: left; line-height: 1.2142em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; padding: 0.67861429em 1em; background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); color: rgba(0, 0, 0, 0.87); border-radius: 0.28571429rem; -webkit-transition: box-shadow 0.1s ease, border-color 0.1s ease; transition: box-shadow 0.1s ease, border-color 0.1s ease; box-shadow: none; } /*-------------------- Placeholder ---------------------*/ /* browsers require these rules separate */ .ui.input input::-webkit-input-placeholder { color: rgba(0, 0, 0, 0.4); } .ui.input input::-moz-placeholder { color: rgba(0, 0, 0, 0.4); } .ui.input input::-ms-input-placeholder { color: rgba(0, 0, 0, 0.4); } /******************************* States *******************************/ /*-------------------- Disabled ---------------------*/ .ui.disabled.input, .ui.input input[disabled] { opacity: 0.45; } .ui.disabled.input input { pointer-events: none; } /*-------------------- Active ---------------------*/ .ui.input input:active, .ui.input.down input { border-color: rgba(0, 0, 0, 0.3); background: #fafafa; color: rgba(0, 0, 0, 0.87); box-shadow: none; } /*-------------------- Loading ---------------------*/ .ui.loading.loading.input > i.icon:before { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.1); } .ui.loading.loading.input > i.icon:after { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; -webkit-animation: button-spin 0.6s linear; animation: button-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 transparent transparent; border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; } /*-------------------- Focus ---------------------*/ .ui.input.focus input, .ui.input input:focus { border-color: #85b7d9; background: #ffffff; color: rgba(0, 0, 0, 0.8); box-shadow: none; } .ui.input.focus input::-webkit-input-placeholder, .ui.input input:focus::-webkit-input-placeholder { color: rgba(0, 0, 0, 0.87); } .ui.input.focus input::-moz-placeholder, .ui.input input:focus::-moz-placeholder { color: rgba(0, 0, 0, 0.87); } .ui.input.focus input::-ms-input-placeholder, .ui.input input:focus::-ms-input-placeholder { color: rgba(0, 0, 0, 0.87); } /*-------------------- Error ---------------------*/ .ui.input.error input { background-color: #fff6f6; border-color: #e0b4b4; color: #9f3a38; box-shadow: none; } /* Error Placeholder */ .ui.input.error input::-webkit-input-placeholder { color: #e7bdbc; } .ui.input.error input::-moz-placeholder { color: #e7bdbc; } .ui.input.error input::-ms-input-placeholder { color: #e7bdbc; } /* Focused Error Placeholder */ .ui.input.error input:focus::-webkit-input-placeholder { color: #da9796; } .ui.input.error input:focus::-moz-placeholder { color: #da9796; } .ui.input.error input:focus::-ms-input-placeholder { color: #da9796; } /******************************* Variations *******************************/ /*-------------------- Transparent ---------------------*/ .ui.transparent.input input { border-color: transparent !important; background-color: transparent !important; padding: 0em !important; box-shadow: none !important; } /* Transparent Icon */ .ui.transparent.icon.input > i.icon { width: 1.1em; } .ui.transparent.icon.input > input { padding-left: 0em !important; padding-right: 2em !important; } .ui.transparent[class*="left icon"].input > input { padding-left: 2em !important; padding-right: 0em !important; } /* Transparent Inverted */ .ui.transparent.inverted.input { color: #ffffff; } .ui.transparent.inverted.input input { color: inherit; } .ui.transparent.inverted.input input::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.5); } .ui.transparent.inverted.input input::-moz-placeholder { color: rgba(255, 255, 255, 0.5); } .ui.transparent.inverted.input input::-ms-input-placeholder { color: rgba(255, 255, 255, 0.5); } /*-------------------- Icon ---------------------*/ .ui.icon.input > i.icon { cursor: default; position: absolute; line-height: 1; text-align: center; top: 0px; right: 0px; margin: 0em; height: 100%; width: 2.67142857em; opacity: 0.5; border-radius: 0em 0.28571429rem 0.28571429rem 0em; -webkit-transition: opacity 0.3s ease; transition: opacity 0.3s ease; } .ui.icon.input > i.icon:not(.link) { pointer-events: none; } .ui.icon.input input { padding-right: 2.67142857em !important; } .ui.icon.input > i.icon:before, .ui.icon.input > i.icon:after { left: 0; position: absolute; text-align: center; top: 50%; width: 100%; margin-top: -0.5em; } .ui.icon.input > i.link.icon { cursor: pointer; } .ui.icon.input > i.circular.icon { top: 0.35em; right: 0.5em; } /* Left Icon Input */ .ui[class*="left icon"].input > i.icon { right: auto; left: 1px; border-radius: 0.28571429rem 0em 0em 0.28571429rem; } .ui[class*="left icon"].input > i.circular.icon { right: auto; left: 0.5em; } .ui[class*="left icon"].input > input { padding-left: 2.67142857em !important; padding-right: 1em !important; } /* Focus */ .ui.icon.input > input:focus ~ i.icon { opacity: 1; } /*-------------------- Labeled ---------------------*/ /* Adjacent Label */ .ui.labeled.input > .label { -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; margin: 0; font-size: 1em; } .ui.labeled.input > .label:not(.corner) { padding-top: 0.78571429em; padding-bottom: 0.78571429em; } /* Regular Label on Left */ .ui.labeled.input:not([class*="corner labeled"]) .label:first-child { border-top-right-radius: 0px; border-bottom-right-radius: 0px; } .ui.labeled.input:not([class*="corner labeled"]) .label:first-child + input { border-top-left-radius: 0px; border-bottom-left-radius: 0px; border-left-color: transparent; } .ui.labeled.input:not([class*="corner labeled"]) .label:first-child + input:focus { border-left-color: #85b7d9; } /* Regular Label on Right */ .ui[class*="right labeled"].input input { border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: transparent !important; } .ui[class*="right labeled"].input input + .label { border-top-left-radius: 0px; border-bottom-left-radius: 0px; } .ui[class*="right labeled"].input input:focus { border-right-color: #85b7d9 !important; } /* Corner Label */ .ui.labeled.input .corner.label { top: 1px; right: 1px; font-size: 0.64285714em; border-radius: 0em 0.28571429rem 0em 0em; } /* Spacing with corner label */ .ui[class*="corner labeled"]:not([class*="left corner labeled"]).labeled.input input { padding-right: 2.5em !important; } .ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"]) > input { padding-right: 3.25em !important; } .ui[class*="corner labeled"].icon.input:not([class*="left corner labeled"]) > .icon { margin-right: 1.25em; } /* Left Labeled */ .ui[class*="left corner labeled"].labeled.input input { padding-left: 2.5em !important; } .ui[class*="left corner labeled"].icon.input > input { padding-left: 3.25em !important; } .ui[class*="left corner labeled"].icon.input > .icon { margin-left: 1.25em; } /* Corner Label Position */ .ui.input > .ui.corner.label { top: 1px; right: 1px; } .ui.input > .ui.left.corner.label { right: auto; left: 1px; } /*-------------------- Action ---------------------*/ .ui.action.input > .button, .ui.action.input > .buttons { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; } .ui.action.input > .button, .ui.action.input > .buttons > .button { padding-top: 0.78571429em; padding-bottom: 0.78571429em; margin: 0; } /* Button on Right */ .ui.action.input:not([class*="left action"]) > input { border-top-right-radius: 0px !important; border-bottom-right-radius: 0px !important; border-right-color: transparent !important; } .ui.action.input:not([class*="left action"]) > .dropdown, .ui.action.input:not([class*="left action"]) > .button, .ui.action.input:not([class*="left action"]) > .buttons > .button { border-radius: 0px; } .ui.action.input:not([class*="left action"]) > .dropdown:last-child, .ui.action.input:not([class*="left action"]) > .button:last-child, .ui.action.input:not([class*="left action"]) > .buttons:last-child > .button { border-radius: 0px 0.28571429rem 0.28571429rem 0px; } /* Input Focus */ .ui.action.input:not([class*="left action"]) input:focus { border-right-color: #85b7d9 !important; } /* Button on Left */ .ui[class*="left action"].input > input { border-top-left-radius: 0px !important; border-bottom-left-radius: 0px !important; border-left-color: transparent !important; } .ui[class*="left action"].input > .dropdown, .ui[class*="left action"].input > .button, .ui[class*="left action"].input > .buttons > .button { border-radius: 0px; } .ui[class*="left action"].input > .dropdown:first-child, .ui[class*="left action"].input > .button:first-child, .ui[class*="left action"].input > .buttons:first-child > .button { border-radius: 0.28571429rem 0px 0px 0.28571429rem; } /* Input Focus */ .ui[class*="left action"].input > input:focus { border-left-color: #85b7d9 !important; } /*-------------------- Inverted ---------------------*/ /* Standard */ .ui.inverted.input input { border: none; } /*-------------------- Fluid ---------------------*/ .ui.fluid.input { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } .ui.fluid.input > input { width: 0px !important; } /*-------------------- Size ---------------------*/ .ui.mini.input { font-size: 0.71428571em; } .ui.small.input { font-size: 0.92857143em; } .ui.input { font-size: 1em; } .ui.large.input { font-size: 1.14285714em; } .ui.big.input { font-size: 1.28571429em; } .ui.huge.input { font-size: 1.42857143em; } .ui.massive.input { font-size: 1.71428571em; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Label * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Label *******************************/ .ui.label { display: inline-block; line-height: 1; vertical-align: baseline; margin: 0em 0.14285714em; background-color: #e8e8e8; background-image: none; padding: 0.5833em 0.833em; color: rgba(0, 0, 0, 0.6); text-transform: none; font-weight: bold; border: 0px solid transparent; border-radius: 0.28571429rem; -webkit-transition: background 0.1s ease; transition: background 0.1s ease; } .ui.label:first-child { margin-left: 0em; } .ui.label:last-child { margin-right: 0em; } /* Link */ a.ui.label { cursor: pointer; } /* Inside Link */ .ui.label > a { cursor: pointer; color: inherit; opacity: 0.5; -webkit-transition: 0.1s opacity ease; transition: 0.1s opacity ease; } .ui.label > a:hover { opacity: 1; } /* Image */ .ui.label > img { width: auto !important; vertical-align: middle; height: 2.1666em !important; } /* Icon */ .ui.label > .icon { width: auto; margin: 0em 0.75em 0em 0em; } /* Detail */ .ui.label > .detail { display: inline-block; vertical-align: top; font-weight: bold; margin-left: 1em; opacity: 0.8; } .ui.label > .detail .icon { margin: 0em 0.25em 0em 0em; } /* Removable label */ .ui.label > .close.icon, .ui.label > .delete.icon { cursor: pointer; margin-right: 0em; margin-left: 0.5em; font-size: 0.92857143em; opacity: 0.5; -webkit-transition: background 0.1s ease; transition: background 0.1s ease; } .ui.label > .delete.icon:hover { opacity: 1; } /*------------------- Group --------------------*/ .ui.labels > .label { margin: 0em 0.5em 0.5em 0em; } /*------------------- Coupling --------------------*/ .ui.header > .ui.label { margin-top: -0.29165em; } /* Remove border radius on attached segment */ .ui.attached.segment > .ui.top.left.attached.label, .ui.bottom.attached.segment > .ui.top.left.attached.label { border-top-left-radius: 0; } .ui.attached.segment > .ui.top.right.attached.label, .ui.bottom.attached.segment > .ui.top.right.attached.label { border-top-right-radius: 0; } .ui.top.attached.segment > .ui.bottom.left.attached.label { border-bottom-left-radius: 0; } .ui.top.attached.segment > .ui.bottom.right.attached.label { border-bottom-right-radius: 0; } /* Padding on next content after a label */ .ui.top.attached.label:first-child + :not(.attached) { margin-top: 2rem !important; } .ui.bottom.attached.label:first-child ~ :last-child:not(.attached) { margin-top: 0em; margin-bottom: 2rem !important; } /******************************* Types *******************************/ .ui.image.label { width: auto !important; margin-top: 0em; margin-bottom: 0em; max-width: 9999px; vertical-align: baseline; text-transform: none; background: #e8e8e8; padding: 0.5833em 0.833em 0.5833em 0.5em; border-radius: 0.28571429rem; box-shadow: none; } .ui.image.label img { display: inline-block; vertical-align: top; height: 2.1666em; margin: -0.5833em 0.5em -0.5833em -0.5em; border-radius: 0.28571429rem 0em 0em 0.28571429rem; } .ui.image.label .detail { background: rgba(0, 0, 0, 0.1); margin: -0.5833em -0.833em -0.5833em 0.5em; padding: 0.5833em 0.833em; border-radius: 0em 0.28571429rem 0.28571429rem 0em; } /*------------------- Tag --------------------*/ .ui.tag.labels .label, .ui.tag.label { margin-left: 1em; position: relative; padding-left: 1.5em; padding-right: 1.5em; border-radius: 0em 0.28571429rem 0.28571429rem 0em; -webkit-transition: none; transition: none; } .ui.tag.labels .label:before, .ui.tag.label:before { position: absolute; -webkit-transform: translateY(-50%) translateX(50%) rotate(-45deg); -ms-transform: translateY(-50%) translateX(50%) rotate(-45deg); transform: translateY(-50%) translateX(50%) rotate(-45deg); top: 50%; right: 100%; content: ''; background-color: inherit; background-image: none; width: 1.56em; height: 1.56em; -webkit-transition: none; transition: none; } .ui.tag.labels .label:after, .ui.tag.label:after { position: absolute; content: ''; top: 50%; left: -0.25em; margin-top: -0.25em; background-color: #ffffff !important; width: 0.5em; height: 0.5em; box-shadow: 0 -1px 1px 0 rgba(0, 0, 0, 0.3); border-radius: 500rem; } /*------------------- Corner Label --------------------*/ .ui.corner.label { position: absolute; top: 0em; right: 0em; margin: 0em; padding: 0em; text-align: center; border-color: #e8e8e8; width: 4em; height: 4em; z-index: 1; -webkit-transition: border-color 0.1s ease; transition: border-color 0.1s ease; } /* Icon Label */ .ui.corner.label { background-color: transparent !important; } .ui.corner.label:after { position: absolute; content: ""; right: 0em; top: 0em; z-index: -1; width: 0em; height: 0em; background-color: transparent !important; border-top: 0em solid transparent; border-right: 4em solid transparent; border-bottom: 4em solid transparent; border-left: 0em solid transparent; border-right-color: inherit; -webkit-transition: border-color 0.1s ease; transition: border-color 0.1s ease; } .ui.corner.label .icon { cursor: default; position: relative; top: 0.64285714em; left: 0.78571429em; font-size: 1.14285714em; margin: 0em; } /* Left Corner */ .ui.left.corner.label, .ui.left.corner.label:after { right: auto; left: 0em; } .ui.left.corner.label:after { border-top: 4em solid transparent; border-right: 4em solid transparent; border-bottom: 0em solid transparent; border-left: 0em solid transparent; border-top-color: inherit; } .ui.left.corner.label .icon { left: -0.78571429em; } /* Segment */ .ui.segment > .ui.corner.label { top: -1px; right: -1px; } .ui.segment > .ui.left.corner.label { right: auto; left: -1px; } /*------------------- Ribbon --------------------*/ .ui.ribbon.label { position: relative; margin: 0em; min-width: -webkit-max-content; min-width: -moz-max-content; min-width: max-content; border-radius: 0em 0.28571429rem 0.28571429rem 0em; border-color: rgba(0, 0, 0, 0.15); } .ui.ribbon.label:after { position: absolute; content: ''; top: 100%; left: 0%; background-color: transparent !important; border-style: solid; border-width: 0em 1.2em 1.2em 0em; border-color: transparent; border-right-color: inherit; width: 0em; height: 0em; } /* Positioning */ .ui.ribbon.label { left: calc( -1rem - 1.2em ); margin-right: -1.2em; padding-left: calc( 1rem + 1.2em ); padding-right: 1.2em; } .ui[class*="right ribbon"].label { left: calc(100% + 1rem + 1.2em ); padding-left: 1.2em; padding-right: calc( 1rem + 1.2em ); } /* Right Ribbon */ .ui[class*="right ribbon"].label { text-align: left; -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); border-radius: 0.28571429rem 0em 0em 0.28571429rem; } .ui[class*="right ribbon"].label:after { left: auto; right: 0%; border-style: solid; border-width: 1.2em 1.2em 0em 0em; border-color: transparent; border-top-color: inherit; } /* Inside Table */ .ui.image > .ribbon.label, .ui.card .image > .ribbon.label { position: absolute; top: 1rem; } .ui.card .image > .ui.ribbon.label, .ui.image > .ui.ribbon.label { left: calc( 0.05rem - 1.2em ); } .ui.card .image > .ui[class*="right ribbon"].label, .ui.image > .ui[class*="right ribbon"].label { left: calc(100% + -0.05rem + 1.2em ); padding-left: 0.833em; } /* Inside Table */ .ui.table td > .ui.ribbon.label { left: calc( -0.71428571em - 1.2em ); } .ui.table td > .ui[class*="right ribbon"].label { left: calc(100% + 0.71428571em + 1.2em ); padding-left: 0.833em; } /*------------------- Attached --------------------*/ .ui[class*="top attached"].label, .ui.attached.label { width: 100%; position: absolute; margin: 0em; top: 0em; left: 0em; padding: 0.75em 1em; border-radius: 0.21428571rem 0.21428571rem 0em 0em; } .ui[class*="bottom attached"].label { top: auto; bottom: 0em; border-radius: 0em 0em 0.21428571rem 0.21428571rem; } .ui[class*="top left attached"].label { width: auto; margin-top: 0em !important; border-radius: 0.21428571rem 0em 0.28571429rem 0em; } .ui[class*="top right attached"].label { width: auto; left: auto; right: 0em; border-radius: 0em 0.21428571rem 0em 0.28571429rem; } .ui[class*="bottom left attached"].label { width: auto; top: auto; bottom: 0em; border-radius: 0em 0.28571429rem 0em 0.21428571rem; } .ui[class*="bottom right attached"].label { top: auto; bottom: 0em; left: auto; right: 0em; width: auto; border-radius: 0.28571429rem 0em 0.21428571rem 0em; } /******************************* States *******************************/ /*------------------- Disabled --------------------*/ .ui.label.disabled { opacity: 0.5; } /*------------------- Hover --------------------*/ a.ui.labels .label:hover, a.ui.label:hover { background-color: #e0e0e0; border-color: #e0e0e0; background-image: none; color: rgba(0, 0, 0, 0.8); } .ui.labels a.label:hover:before, a.ui.label:hover:before { color: rgba(0, 0, 0, 0.8); } /*------------------- Active --------------------*/ .ui.active.label { background-color: #d0d0d0; border-color: #d0d0d0; background-image: none; color: rgba(0, 0, 0, 0.95); } .ui.active.label:before { background-color: #d0d0d0; background-image: none; color: rgba(0, 0, 0, 0.95); } /*------------------- Active Hover --------------------*/ a.ui.labels .active.label:hover, a.ui.active.label:hover { background-color: #c8c8c8; border-color: #c8c8c8; background-image: none; color: rgba(0, 0, 0, 0.95); } .ui.labels a.active.label:ActiveHover:before, a.ui.active.label:ActiveHover:before { background-color: #c8c8c8; background-image: none; color: rgba(0, 0, 0, 0.95); } /*------------------- Visible --------------------*/ .ui.labels.visible .label, .ui.label.visible { display: inline-block !important; } /*------------------- Hidden --------------------*/ .ui.labels.hidden .label, .ui.label.hidden { display: none !important; } /******************************* Variations *******************************/ /*------------------- Colors --------------------*/ /*--- Red ---*/ .ui.red.labels .label, .ui.red.label { background-color: #db2828 !important; border-color: #db2828 !important; color: #ffffff !important; } /* Link */ .ui.red.labels .label:hover, a.ui.red.label:hover { background-color: #d01919 !important; border-color: #d01919 !important; color: #ffffff !important; } /* Corner */ .ui.red.corner.label, .ui.red.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.red.ribbon.label { border-color: #b21e1e !important; } /* Basic */ .ui.basic.red.label { background-color: #ffffff !important; color: #db2828 !important; border-color: #db2828 !important; } .ui.basic.red.labels a.label:hover, a.ui.basic.red.label:hover { background-color: #ffffff !important; color: #d01919 !important; border-color: #d01919 !important; } /*--- Orange ---*/ .ui.orange.labels .label, .ui.orange.label { background-color: #f2711c !important; border-color: #f2711c !important; color: #ffffff !important; } /* Link */ .ui.orange.labels .label:hover, a.ui.orange.label:hover { background-color: #f26202 !important; border-color: #f26202 !important; color: #ffffff !important; } /* Corner */ .ui.orange.corner.label, .ui.orange.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.orange.ribbon.label { border-color: #cf590c !important; } /* Basic */ .ui.basic.orange.label { background-color: #ffffff !important; color: #f2711c !important; border-color: #f2711c !important; } .ui.basic.orange.labels a.label:hover, a.ui.basic.orange.label:hover { background-color: #ffffff !important; color: #f26202 !important; border-color: #f26202 !important; } /*--- Yellow ---*/ .ui.yellow.labels .label, .ui.yellow.label { background-color: #fbbd08 !important; border-color: #fbbd08 !important; color: #ffffff !important; } /* Link */ .ui.yellow.labels .label:hover, a.ui.yellow.label:hover { background-color: #eaae00 !important; border-color: #eaae00 !important; color: #ffffff !important; } /* Corner */ .ui.yellow.corner.label, .ui.yellow.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.yellow.ribbon.label { border-color: #cd9903 !important; } /* Basic */ .ui.basic.yellow.label { background-color: #ffffff !important; color: #fbbd08 !important; border-color: #fbbd08 !important; } .ui.basic.yellow.labels a.label:hover, a.ui.basic.yellow.label:hover { background-color: #ffffff !important; color: #eaae00 !important; border-color: #eaae00 !important; } /*--- Olive ---*/ .ui.olive.labels .label, .ui.olive.label { background-color: #b5cc18 !important; border-color: #b5cc18 !important; color: #ffffff !important; } /* Link */ .ui.olive.labels .label:hover, a.ui.olive.label:hover { background-color: #a7bd0d !important; border-color: #a7bd0d !important; color: #ffffff !important; } /* Corner */ .ui.olive.corner.label, .ui.olive.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.olive.ribbon.label { border-color: #198f35 !important; } /* Basic */ .ui.basic.olive.label { background-color: #ffffff !important; color: #b5cc18 !important; border-color: #b5cc18 !important; } .ui.basic.olive.labels a.label:hover, a.ui.basic.olive.label:hover { background-color: #ffffff !important; color: #a7bd0d !important; border-color: #a7bd0d !important; } /*--- Green ---*/ .ui.green.labels .label, .ui.green.label { background-color: #21ba45 !important; border-color: #21ba45 !important; color: #ffffff !important; } /* Link */ .ui.green.labels .label:hover, a.ui.green.label:hover { background-color: #16ab39 !important; border-color: #16ab39 !important; color: #ffffff !important; } /* Corner */ .ui.green.corner.label, .ui.green.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.green.ribbon.label { border-color: #198f35 !important; } /* Basic */ .ui.basic.green.label { background-color: #ffffff !important; color: #21ba45 !important; border-color: #21ba45 !important; } .ui.basic.green.labels a.label:hover, a.ui.basic.green.label:hover { background-color: #ffffff !important; color: #16ab39 !important; border-color: #16ab39 !important; } /*--- Teal ---*/ .ui.teal.labels .label, .ui.teal.label { background-color: #00b5ad !important; border-color: #00b5ad !important; color: #ffffff !important; } /* Link */ .ui.teal.labels .label:hover, a.ui.teal.label:hover { background-color: #009c95 !important; border-color: #009c95 !important; color: #ffffff !important; } /* Corner */ .ui.teal.corner.label, .ui.teal.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.teal.ribbon.label { border-color: #00827c !important; } /* Basic */ .ui.basic.teal.label { background-color: #ffffff !important; color: #00b5ad !important; border-color: #00b5ad !important; } .ui.basic.teal.labels a.label:hover, a.ui.basic.teal.label:hover { background-color: #ffffff !important; color: #009c95 !important; border-color: #009c95 !important; } /*--- Blue ---*/ .ui.blue.labels .label, .ui.blue.label { background-color: #2185d0 !important; border-color: #2185d0 !important; color: #ffffff !important; } /* Link */ .ui.blue.labels .label:hover, a.ui.blue.label:hover { background-color: #1678c2 !important; border-color: #1678c2 !important; color: #ffffff !important; } /* Corner */ .ui.blue.corner.label, .ui.blue.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.blue.ribbon.label { border-color: #1a69a4 !important; } /* Basic */ .ui.basic.blue.label { background-color: #ffffff !important; color: #2185d0 !important; border-color: #2185d0 !important; } .ui.basic.blue.labels a.label:hover, a.ui.basic.blue.label:hover { background-color: #ffffff !important; color: #1678c2 !important; border-color: #1678c2 !important; } /*--- Violet ---*/ .ui.violet.labels .label, .ui.violet.label { background-color: #6435c9 !important; border-color: #6435c9 !important; color: #ffffff !important; } /* Link */ .ui.violet.labels .label:hover, a.ui.violet.label:hover { background-color: #5829bb !important; border-color: #5829bb !important; color: #ffffff !important; } /* Corner */ .ui.violet.corner.label, .ui.violet.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.violet.ribbon.label { border-color: #502aa1 !important; } /* Basic */ .ui.basic.violet.label { background-color: #ffffff !important; color: #6435c9 !important; border-color: #6435c9 !important; } .ui.basic.violet.labels a.label:hover, a.ui.basic.violet.label:hover { background-color: #ffffff !important; color: #5829bb !important; border-color: #5829bb !important; } /*--- Purple ---*/ .ui.purple.labels .label, .ui.purple.label { background-color: #a333c8 !important; border-color: #a333c8 !important; color: #ffffff !important; } /* Link */ .ui.purple.labels .label:hover, a.ui.purple.label:hover { background-color: #9627ba !important; border-color: #9627ba !important; color: #ffffff !important; } /* Corner */ .ui.purple.corner.label, .ui.purple.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.purple.ribbon.label { border-color: #82299f !important; } /* Basic */ .ui.basic.purple.label { background-color: #ffffff !important; color: #a333c8 !important; border-color: #a333c8 !important; } .ui.basic.purple.labels a.label:hover, a.ui.basic.purple.label:hover { background-color: #ffffff !important; color: #9627ba !important; border-color: #9627ba !important; } /*--- Pink ---*/ .ui.pink.labels .label, .ui.pink.label { background-color: #e03997 !important; border-color: #e03997 !important; color: #ffffff !important; } /* Link */ .ui.pink.labels .label:hover, a.ui.pink.label:hover { background-color: #e61a8d !important; border-color: #e61a8d !important; color: #ffffff !important; } /* Corner */ .ui.pink.corner.label, .ui.pink.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.pink.ribbon.label { border-color: #c71f7e !important; } /* Basic */ .ui.basic.pink.label { background-color: #ffffff !important; color: #e03997 !important; border-color: #e03997 !important; } .ui.basic.pink.labels a.label:hover, a.ui.basic.pink.label:hover { background-color: #ffffff !important; color: #e61a8d !important; border-color: #e61a8d !important; } /*--- Brown ---*/ .ui.brown.labels .label, .ui.brown.label { background-color: #a5673f !important; border-color: #a5673f !important; color: #ffffff !important; } /* Link */ .ui.brown.labels .label:hover, a.ui.brown.label:hover { background-color: #975b33 !important; border-color: #975b33 !important; color: #ffffff !important; } /* Corner */ .ui.brown.corner.label, .ui.brown.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.brown.ribbon.label { border-color: #805031 !important; } /* Basic */ .ui.basic.brown.label { background-color: #ffffff !important; color: #a5673f !important; border-color: #a5673f !important; } .ui.basic.brown.labels a.label:hover, a.ui.basic.brown.label:hover { background-color: #ffffff !important; color: #975b33 !important; border-color: #975b33 !important; } /*--- Grey ---*/ .ui.grey.labels .label, .ui.grey.label { background-color: #767676 !important; border-color: #767676 !important; color: #ffffff !important; } /* Link */ .ui.grey.labels .label:hover, a.ui.grey.label:hover { background-color: #838383 !important; border-color: #838383 !important; color: #ffffff !important; } /* Corner */ .ui.grey.corner.label, .ui.grey.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.grey.ribbon.label { border-color: #805031 !important; } /* Basic */ .ui.basic.grey.label { background-color: #ffffff !important; color: #767676 !important; border-color: #767676 !important; } .ui.basic.grey.labels a.label:hover, a.ui.basic.grey.label:hover { background-color: #ffffff !important; color: #838383 !important; border-color: #838383 !important; } /*--- Black ---*/ .ui.black.labels .label, .ui.black.label { background-color: #1b1c1d !important; border-color: #1b1c1d !important; color: #ffffff !important; } /* Link */ .ui.black.labels .label:hover, a.ui.black.label:hover { background-color: #27292a !important; border-color: #27292a !important; color: #ffffff !important; } /* Corner */ .ui.black.corner.label, .ui.black.corner.label:hover { background-color: transparent !important; } /* Ribbon */ .ui.black.ribbon.label { border-color: #805031 !important; } /* Basic */ .ui.basic.black.label { background-color: #ffffff !important; color: #1b1c1d !important; border-color: #1b1c1d !important; } .ui.basic.black.labels a.label:hover, a.ui.basic.black.label:hover { background-color: #ffffff !important; color: #27292a !important; border-color: #27292a !important; } /*------------------- Basic --------------------*/ .ui.basic.label { background: none #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); color: rgba(0, 0, 0, 0.87); box-shadow: none; } /* Link */ a.ui.basic.label:hover { text-decoration: none; background: none #ffffff; color: #1e70bf; box-shadow: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none; } /* Pointing */ .ui.basic.pointing.label:before { border-color: inherit; } /*------------------- Fluid --------------------*/ .ui.label.fluid, .ui.fluid.labels > .label { width: 100%; box-sizing: border-box; } /*------------------- Inverted --------------------*/ .ui.inverted.labels .label, .ui.inverted.label { color: rgba(255, 255, 255, 0.9) !important; } /*------------------- Horizontal --------------------*/ .ui.horizontal.labels .label, .ui.horizontal.label { margin: 0em 0.5em 0em 0em; padding: 0.4em 0.833em; min-width: 3em; text-align: center; } /*------------------- Circular --------------------*/ .ui.circular.labels .label, .ui.circular.label { min-width: 2em; min-height: 2em; padding: 0.5em !important; line-height: 1em; text-align: center; border-radius: 500rem; } .ui.empty.circular.labels .label, .ui.empty.circular.label { min-width: 0em; min-height: 0em; overflow: hidden; width: 0.5em; height: 0.5em; vertical-align: baseline; } /*------------------- Pointing --------------------*/ .ui.pointing.label { position: relative; } .ui.attached.pointing.label { position: absolute; } .ui.pointing.label:before { background-color: inherit; background-image: inherit; border-width: none; border-style: solid; border-color: inherit; } /* Arrow */ .ui.pointing.label:before { position: absolute; content: ''; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); background-image: none; z-index: 2; width: 0.6666em; height: 0.6666em; -webkit-transition: background 0.1s ease; transition: background 0.1s ease; } /*--- Above ---*/ .ui.pointing.label, .ui[class*="pointing above"].label { margin-top: 1em; } .ui.pointing.label:before, .ui[class*="pointing above"].label:before { border-width: 1px 0px 0px 1px; -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); transform: translateX(-50%) translateY(-50%) rotate(45deg); top: 0%; left: 50%; } /*--- Below ---*/ .ui[class*="bottom pointing"].label, .ui[class*="pointing below"].label { margin-top: 0em; margin-bottom: 1em; } .ui[class*="bottom pointing"].label:before, .ui[class*="pointing below"].label:before { border-width: 0px 1px 1px 0px; top: auto; right: auto; -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); transform: translateX(-50%) translateY(-50%) rotate(45deg); top: 100%; left: 50%; } /*--- Left ---*/ .ui[class*="left pointing"].label { margin-top: 0em; margin-left: 0.6666em; } .ui[class*="left pointing"].label:before { border-width: 0px 0px 1px 1px; -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); transform: translateX(-50%) translateY(-50%) rotate(45deg); bottom: auto; right: auto; top: 50%; left: 0em; } /*--- Right ---*/ .ui[class*="right pointing"].label { margin-top: 0em; margin-right: 0.6666em; } .ui[class*="right pointing"].label:before { border-width: 1px 1px 0px 0px; -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(50%) translateY(-50%) rotate(45deg); transform: translateX(50%) translateY(-50%) rotate(45deg); top: 50%; right: 0%; bottom: auto; left: auto; } /* Basic Pointing */ /*--- Above ---*/ .ui.basic.pointing.label:before, .ui.basic[class*="pointing above"].label:before { margin-top: -1px; } /*--- Below ---*/ .ui.basic[class*="bottom pointing"].label:before, .ui.basic[class*="pointing below"].label:before { bottom: auto; top: 100%; margin-top: 1px; } /*--- Left ---*/ .ui.basic[class*="left pointing"].label:before { top: 50%; left: -1px; } /*--- Right ---*/ .ui.basic[class*="right pointing"].label:before { top: 50%; right: -1px; } /*------------------ Floating Label -------------------*/ .ui.floating.label { position: absolute; z-index: 100; top: -1em; left: 100%; margin: 0em 0em 0em -1.5em !important; } /*------------------- Sizes --------------------*/ .ui.mini.labels .label, .ui.mini.label { font-size: 0.64285714rem; } .ui.tiny.labels .label, .ui.tiny.label { font-size: 0.71428571rem; } .ui.small.labels .label, .ui.small.label { font-size: 0.78571429rem; } .ui.labels .label, .ui.label { font-size: 0.85714286rem; } .ui.large.labels .label, .ui.large.label { font-size: 1rem; } .ui.big.labels .label, .ui.big.label { font-size: 1.28571429rem; } .ui.huge.labels .label, .ui.huge.label { font-size: 1.42857143rem; } .ui.massive.labels .label, .ui.massive.label { font-size: 1.71428571rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - List * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* List *******************************/ ul.ui.list, ol.ui.list, .ui.list { list-style-type: none; margin: 1em 0em; padding: 0em 0em; } ul.ui.list:first-child, ol.ui.list:first-child, .ui.list:first-child { margin-top: 0em; padding-top: 0em; } ul.ui.list:last-child, ol.ui.list:last-child, .ui.list:last-child { margin-bottom: 0em; padding-bottom: 0em; } /******************************* Content *******************************/ /* List Item */ ul.ui.list li, ol.ui.list li, .ui.list > .item, .ui.list .list > .item { display: list-item; table-layout: fixed; list-style-type: none; list-style-position: outside; padding: 0.21428571em 0em; line-height: 1.14285714em; } ul.ui.list > li:first-child:after, ol.ui.list > li:first-child:after, .ui.list > .list > .item, .ui.list > .item:after { content: ''; display: block; height: 0; clear: both; visibility: hidden; } ul.ui.list li:first-child, ol.ui.list li:first-child, .ui.list .list > .item:first-child, .ui.list > .item:first-child { padding-top: 0em; } ul.ui.list li:last-child, ol.ui.list li:last-child, .ui.list .list > .item:last-child, .ui.list > .item:last-child { padding-bottom: 0em; } /* Child List */ ul.ui.list ul, ol.ui.list ol, .ui.list .list { clear: both; margin: 0em; padding: 0.75em 0em 0.25em 0.5em; } /* Child Item */ ul.ui.list ul li, ol.ui.list ol li, .ui.list .list > .item { padding: 0.14285714em 0em; line-height: inherit; } /* Icon */ .ui.list .list > .item > i.icon, .ui.list > .item > i.icon { display: table-cell; margin: 0em; padding-top: 0.07142857em; padding-right: 0.28571429em; vertical-align: top; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.list .list > .item > i.icon:only-child, .ui.list > .item > i.icon:only-child { display: inline-block; vertical-align: top; } /* Image */ .ui.list .list > .item > .image, .ui.list > .item > .image { display: table-cell; background-color: transparent; margin: 0em; vertical-align: top; } .ui.list .list > .item > .image:not(:only-child):not(img), .ui.list > .item > .image:not(:only-child):not(img) { padding-right: 0.5em; } .ui.list .list > .item > .image img, .ui.list > .item > .image img { vertical-align: top; } .ui.list .list > .item > img.image, .ui.list .list > .item > .image:only-child, .ui.list > .item > img.image, .ui.list > .item > .image:only-child { display: inline-block; } /* Content */ .ui.list .list > .item > .content, .ui.list > .item > .content { line-height: 1.14285714em; } .ui.list .list > .item > .image + .content, .ui.list .list > .item > .icon + .content, .ui.list > .item > .image + .content, .ui.list > .item > .icon + .content { display: table-cell; padding: 0em 0em 0em 0.5em; vertical-align: top; } .ui.list .list > .item > img.image + .content, .ui.list > .item > img.image + .content { display: inline-block; } .ui.list .list > .item > .content > .list, .ui.list > .item > .content > .list { margin-left: 0em; padding-left: 0em; } /* Header */ .ui.list .list > .item .header, .ui.list > .item .header { display: block; margin: 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold; color: rgba(0, 0, 0, 0.87); } /* Description */ .ui.list .list > .item .description, .ui.list > .item .description { display: block; color: rgba(0, 0, 0, 0.7); } /* Child Link */ .ui.list > .item a, .ui.list .list > .item a { cursor: pointer; } /* Linking Item */ .ui.list .list > a.item, .ui.list > a.item { cursor: pointer; color: #4183c4; } .ui.list .list > a.item:hover, .ui.list > a.item:hover { color: #1e70bf; } /* Linked Item Icons */ .ui.list .list > a.item i.icon, .ui.list > a.item i.icon { color: rgba(0, 0, 0, 0.4); } /* Header Link */ .ui.list .list > .item a.header, .ui.list > .item a.header { cursor: pointer; color: #4183c4 !important; } .ui.list .list > .item a.header:hover, .ui.list > .item a.header:hover { color: #1e70bf !important; } /* Floated Content */ .ui[class*="left floated"].list { float: left; } .ui[class*="right floated"].list { float: right; } .ui.list .list > .item [class*="left floated"], .ui.list > .item [class*="left floated"] { float: left; margin: 0em 1em 0em 0em; } .ui.list .list > .item [class*="right floated"], .ui.list > .item [class*="right floated"] { float: right; margin: 0em 0em 0em 1em; } /******************************* Coupling *******************************/ .ui.menu .ui.list > .item, .ui.menu .ui.list .list > .item { display: list-item; table-layout: fixed; background-color: transparent; list-style-type: none; list-style-position: outside; padding: 0.21428571em 0em; line-height: 1.14285714em; } .ui.menu .ui.list .list > .item:before, .ui.menu .ui.list > .item:before { border: none; background: none; } .ui.menu .ui.list .list > .item:first-child, .ui.menu .ui.list > .item:first-child { padding-top: 0em; } .ui.menu .ui.list .list > .item:last-child, .ui.menu .ui.list > .item:last-child { padding-bottom: 0em; } /******************************* Types *******************************/ /*------------------- Horizontal --------------------*/ .ui.horizontal.list { display: inline-block; font-size: 0em; } .ui.horizontal.list > .item { display: inline-block; margin-left: 1em; font-size: 1rem; } .ui.horizontal.list:not(.celled) > .item:first-child { margin-left: 0em !important; padding-left: 0em !important; } .ui.horizontal.list .list { padding-left: 0em; padding-bottom: 0em; } .ui.horizontal.list > .item > .image, .ui.horizontal.list .list > .item > .image, .ui.horizontal.list > .item > .icon, .ui.horizontal.list .list > .item > .icon, .ui.horizontal.list > .item > .content, .ui.horizontal.list .list > .item > .content { vertical-align: middle; } /* Padding on all elements */ .ui.horizontal.list > .item:first-child, .ui.horizontal.list > .item:last-child { padding-top: 0.21428571em; padding-bottom: 0.21428571em; } /* Horizontal List */ .ui.horizontal.list > .item > i.icon { margin: 0em; padding: 0em 0.25em 0em 0em; } .ui.horizontal.list > .item > .icon, .ui.horizontal.list > .item > .icon + .content { float: none; display: inline-block; } /******************************* States *******************************/ /*------------------- Disabled --------------------*/ .ui.list .list > .disabled.item, .ui.list > .disabled.item { pointer-events: none; color: rgba(40, 40, 40, 0.3) !important; } .ui.inverted.list .list > .disabled.item, .ui.inverted.list > .disabled.item { color: rgba(225, 225, 225, 0.3) !important; } /*------------------- Hover --------------------*/ .ui.list .list > a.item:hover .icon, .ui.list > a.item:hover .icon { color: rgba(0, 0, 0, 0.87); } /******************************* Variations *******************************/ /*------------------- Inverted --------------------*/ .ui.inverted.list .list > a.item > .icon, .ui.inverted.list > a.item > .icon { color: rgba(255, 255, 255, 0.7); } .ui.inverted.list .list > .item .header, .ui.inverted.list > .item .header { color: rgba(255, 255, 255, 0.9); } .ui.inverted.list .list > .item .description, .ui.inverted.list > .item .description { color: rgba(255, 255, 255, 0.7); } /* Item Link */ .ui.inverted.list .list > a.item, .ui.inverted.list > a.item { cursor: pointer; color: rgba(255, 255, 255, 0.9); } .ui.inverted.list .list > a.item:hover, .ui.inverted.list > a.item:hover { color: #1e70bf; } /* Linking Content */ .ui.inverted.list .item a:not(.ui) { color: rgba(255, 255, 255, 0.9) !important; } .ui.inverted.list .item a:not(.ui):hover { color: #1e70bf !important; } /*------------------- Aligned --------------------*/ .ui.list[class*="top aligned"] .image, .ui.list[class*="top aligned"] .content, .ui.list [class*="top aligned"] { vertical-align: top !important; } .ui.list[class*="middle aligned"] .image, .ui.list[class*="middle aligned"] .content, .ui.list [class*="middle aligned"] { vertical-align: middle !important; } .ui.list[class*="bottom aligned"] .image, .ui.list[class*="bottom aligned"] .content, .ui.list [class*="bottom aligned"] { vertical-align: bottom !important; } /*------------------- Link --------------------*/ .ui.link.list .item, .ui.link.list a.item, .ui.link.list .item a:not(.ui) { color: rgba(0, 0, 0, 0.4); -webkit-transition: 0.1s color ease; transition: 0.1s color ease; } .ui.link.list a.item:hover, .ui.link.list .item a:not(.ui):hover { color: rgba(0, 0, 0, 0.8); } .ui.link.list a.item:active, .ui.link.list .item a:not(.ui):active { color: rgba(0, 0, 0, 0.9); } .ui.link.list .active.item, .ui.link.list .active.item a:not(.ui) { color: rgba(0, 0, 0, 0.95); } /* Inverted */ .ui.inverted.link.list .item, .ui.inverted.link.list a.item, .ui.inverted.link.list .item a:not(.ui) { color: rgba(255, 255, 255, 0.5); } .ui.inverted.link.list a.item:hover, .ui.inverted.link.list .item a:not(.ui):hover { color: #ffffff; } .ui.inverted.link.list a.item:active, .ui.inverted.link.list .item a:not(.ui):active { color: #ffffff; } .ui.inverted.link.list a.active.item, .ui.inverted.link.list .active.item a:not(.ui) { color: #ffffff; } /*------------------- Selection --------------------*/ .ui.selection.list .list > .item, .ui.selection.list > .item { cursor: pointer; background: transparent; padding: 0.5em 0.5em; margin: 0em; color: rgba(0, 0, 0, 0.4); border-radius: 0.5em; -webkit-transition: 0.1s color ease, 0.1s padding-left ease, 0.1s background-color ease; transition: 0.1s color ease, 0.1s padding-left ease, 0.1s background-color ease; } .ui.selection.list .list > .item:last-child, .ui.selection.list > .item:last-child { margin-bottom: 0em; } .ui.selection.list.list > .item:hover, .ui.selection.list > .item:hover { background: rgba(0, 0, 0, 0.03); color: rgba(0, 0, 0, 0.8); } .ui.selection.list .list > .item:active, .ui.selection.list > .item:active { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.9); } .ui.selection.list .list > .item.active, .ui.selection.list > .item.active { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } /* Inverted */ .ui.inverted.selection.list > .item, .ui.inverted.selection.list > .item { background: transparent; color: rgba(255, 255, 255, 0.5); } .ui.inverted.selection.list > .item:hover, .ui.inverted.selection.list > .item:hover { background: rgba(255, 255, 255, 0.02); color: #ffffff; } .ui.inverted.selection.list > .item:active, .ui.inverted.selection.list > .item:active { background: rgba(255, 255, 255, 0.08); color: #ffffff; } .ui.inverted.selection.list > .item.active, .ui.inverted.selection.list > .item.active { background: rgba(255, 255, 255, 0.08); color: #ffffff; } /* Celled / Divided Selection List */ .ui.celled.selection.list .list > .item, .ui.divided.selection.list .list > .item, .ui.celled.selection.list > .item, .ui.divided.selection.list > .item { border-radius: 0em; } /*------------------- Animated --------------------*/ .ui.animated.list > .item { -webkit-transition: 0.25s color ease 0.1s, 0.25s padding-left ease 0.1s, 0.25s background-color ease 0.1s; transition: 0.25s color ease 0.1s, 0.25s padding-left ease 0.1s, 0.25s background-color ease 0.1s; } .ui.animated.list:not(.horizontal) > .item:hover { padding-left: 1em; } /*------------------- Fitted --------------------*/ .ui.fitted.list:not(.selection) .list > .item, .ui.fitted.list:not(.selection) > .item { padding-left: 0em; padding-right: 0em; } .ui.fitted.selection.list .list > .item, .ui.fitted.selection.list > .item { margin-left: -0.5em; margin-right: -0.5em; } /*------------------- Bulleted --------------------*/ ul.ui.list, .ui.bulleted.list { margin-left: 1.25rem; } ul.ui.list li, .ui.bulleted.list .list > .item, .ui.bulleted.list > .item { position: relative; } ul.ui.list li:before, .ui.bulleted.list .list > .item:before, .ui.bulleted.list > .item:before { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; pointer-events: none; position: absolute; top: auto; left: auto; margin-left: -1.25rem; content: '•'; opacity: 1; color: inherit; vertical-align: top; } ul.ui.list ul, .ui.bulleted.list .list { padding-left: 1.25rem; } /* Horizontal Bulleted */ ul.ui.horizontal.bulleted.list, .ui.horizontal.bulleted.list { margin-left: 0em; } ul.ui.horizontal.bulleted.list li, .ui.horizontal.bulleted.list > .item { margin-left: 1.75rem; } ul.ui.horizontal.bulleted.list li:first-child, .ui.horizontal.bulleted.list > .item:first-child { margin-left: 0em; } ul.ui.horizontal.bulleted.list li::before, .ui.horizontal.bulleted.list > .item::before { color: rgba(0, 0, 0, 0.87); } ul.ui.horizontal.bulleted.list li:first-child::before, .ui.horizontal.bulleted.list > .item:first-child::before { display: none; } /*------------------- Ordered --------------------*/ ol.ui.list, .ui.ordered.list, .ui.ordered.list .list, ol.ui.list ol { counter-reset: ordered; margin-left: 1.25rem; list-style-type: none; } ol.ui.list li, .ui.ordered.list .list > .item, .ui.ordered.list > .item { list-style-type: none; position: relative; } ol.ui.list li:before, .ui.ordered.list .list > .item:before, .ui.ordered.list > .item:before { position: absolute; top: auto; left: auto; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; pointer-events: none; margin-left: -1.25rem; counter-increment: ordered; content: counters(ordered, ".") " "; text-align: right; color: rgba(0, 0, 0, 0.87); vertical-align: middle; opacity: 0.8; } ol.ui.inverted.list li:before, .ui.ordered.inverted.list .list > .item:before, .ui.ordered.inverted.list > .item:before { color: rgba(255, 255, 255, 0.7); } /* Value */ .ui.ordered.list > .list > .item[data-value], .ui.ordered.list > .item[data-value] { content: attr(data-value); } ol.ui.list li[value]:before { content: attr(value); } /* Child Lists */ ol.ui.list ol, .ui.ordered.list .list { margin-left: 1em; } ol.ui.list ol li:before, .ui.ordered.list .list > .item:before { margin-left: -2em; } /* Horizontal Ordered */ ol.ui.horizontal.list, .ui.ordered.horizontal.list { margin-left: 0em; } ol.ui.horizontal.list li:before, .ui.ordered.horizontal.list .list > .item:before, .ui.ordered.horizontal.list > .item:before { position: static; margin: 0em 0.5em 0em 0em; } /*------------------- Divided --------------------*/ .ui.divided.list > .item { border-top: 1px solid rgba(34, 36, 38, 0.15); } .ui.divided.list .list > .item { border-top: none; } .ui.divided.list .item .list > .item { border-top: none; } .ui.divided.list .list > .item:first-child, .ui.divided.list > .item:first-child { border-top: none; } /* Sub Menu */ .ui.divided.list:not(.horizontal) .list > .item:first-child { border-top-width: 1px; } /* Divided bulleted */ .ui.divided.bulleted.list:not(.horizontal), .ui.divided.bulleted.list .list { margin-left: 0em; padding-left: 0em; } .ui.divided.bulleted.list > .item:not(.horizontal) { padding-left: 1.25rem; } /* Divided Ordered */ .ui.divided.ordered.list { margin-left: 0em; } .ui.divided.ordered.list .list > .item, .ui.divided.ordered.list > .item { padding-left: 1.25rem; } .ui.divided.ordered.list .item .list { margin-left: 0em; margin-right: 0em; padding-bottom: 0.21428571em; } .ui.divided.ordered.list .item .list > .item { padding-left: 1em; } /* Divided Selection */ .ui.divided.selection.list .list > .item, .ui.divided.selection.list > .item { margin: 0em; border-radius: 0em; } /* Divided horizontal */ .ui.divided.horizontal.list { margin-left: 0em; } .ui.divided.horizontal.list > .item { border-top: none; border-left: 1px solid rgba(34, 36, 38, 0.15); margin: 0em; padding-left: 0.5em; padding-right: 0.5em; line-height: 0.6; } .ui.horizontal.divided.list > .item:first-child { border-left: none; } /* Inverted */ .ui.divided.inverted.list > .item, .ui.divided.inverted.list > .list, .ui.divided.inverted.horizontal.list > .item { border-color: rgba(255, 255, 255, 0.1); } /*------------------- Celled --------------------*/ .ui.celled.list > .item, .ui.celled.list > .list { border-top: 1px solid rgba(34, 36, 38, 0.15); padding-left: 0.5em; padding-right: 0.5em; } .ui.celled.list > .item:last-child { border-bottom: 1px solid rgba(34, 36, 38, 0.15); } /* Padding on all elements */ .ui.celled.list > .item:first-child, .ui.celled.list > .item:last-child { padding-top: 0.21428571em; padding-bottom: 0.21428571em; } /* Sub Menu */ .ui.celled.list .item .list > .item { border-width: 0px; } .ui.celled.list .list > .item:first-child { border-top-width: 0px; } /* Celled Bulleted */ .ui.celled.bulleted.list { margin-left: 0em; } .ui.celled.bulleted.list .list > .item, .ui.celled.bulleted.list > .item { padding-left: 1.25rem; } .ui.celled.bulleted.list .item .list { margin-left: -1.25rem; margin-right: -1.25rem; padding-bottom: 0.21428571em; } /* Celled Ordered */ .ui.celled.ordered.list { margin-left: 0em; } .ui.celled.ordered.list .list > .item, .ui.celled.ordered.list > .item { padding-left: 1.25rem; } .ui.celled.ordered.list .item .list { margin-left: 0em; margin-right: 0em; padding-bottom: 0.21428571em; } .ui.celled.ordered.list .list > .item { padding-left: 1em; } /* Celled Horizontal */ .ui.horizontal.celled.list { margin-left: 0em; } .ui.horizontal.celled.list .list > .item, .ui.horizontal.celled.list > .item { border-top: none; border-left: 1px solid rgba(34, 36, 38, 0.15); margin: 0em; padding-left: 0.5em; padding-right: 0.5em; line-height: 0.6; } .ui.horizontal.celled.list .list > .item:last-child, .ui.horizontal.celled.list > .item:last-child { border-bottom: none; border-right: 1px solid rgba(34, 36, 38, 0.15); } /* Inverted */ .ui.celled.inverted.list > .item, .ui.celled.inverted.list > .list { border-color: 1px solid rgba(255, 255, 255, 0.1); } .ui.celled.inverted.horizontal.list .list > .item, .ui.celled.inverted.horizontal.list > .item { border-color: 1px solid rgba(255, 255, 255, 0.1); } /*------------------- Relaxed --------------------*/ .ui.relaxed.list:not(.horizontal) > .item { padding-top: 0.42857143em; padding-bottom: 0.42857143em; } .ui.relaxed.list:not(.horizontal) .list > .item { padding-top: 0.21428571em; padding-bottom: 0.21428571em; } .ui.horizontal.relaxed.list > .item { padding-left: 1rem; padding-right: 1rem; } /* Very Relaxed */ .ui[class*="very relaxed"].list:not(.horizontal) > .item { padding-top: 0.85714286em; padding-bottom: 0.85714286em; } .ui[class*="very relaxed"].list:not(.horizontal) .list > .item { padding-top: 0.28571429em; padding-bottom: 0.28571429em; } .ui.horizontal[class*="very relaxed"].list .list > .item, .ui.horizontal[class*="very relaxed"].list > .item { padding-left: 1.5rem; padding-right: 1.5rem; } /*------------------- Sizes --------------------*/ .ui.mini.list { font-size: 0.71428571em; } .ui.tiny.list { font-size: 0.85714286em; } .ui.small.list { font-size: 0.92857143em; } .ui.list { font-size: 1em; } .ui.large.list { font-size: 1.14285714em; } .ui.big.list { font-size: 1.28571429em; } .ui.huge.list { font-size: 1.42857143em; } .ui.massive.list { font-size: 1.71428571em; } .ui.mini.horizontal.list .list > .item, .ui.mini.horizontal.list > .item { font-size: 0.71428571rem; } .ui.tiny.horizontal.list .list > .item, .ui.tiny.horizontal.list > .item { font-size: 0.85714286rem; } .ui.small.horizontal.list .list > .item, .ui.small.horizontal.list > .item { font-size: 0.92857143rem; } .ui.horizontal.list .list > .item, .ui.horizontal.list > .item { font-size: 1rem; } .ui.large.horizontal.list .list > .item, .ui.large.horizontal.list > .item { font-size: 1.14285714rem; } .ui.big.horizontal.list .list > .item, .ui.big.horizontal.list > .item { font-size: 1.28571429rem; } .ui.huge.horizontal.list .list > .item, .ui.huge.horizontal.list > .item { font-size: 1.42857143rem; } .ui.massive.horizontal.list .list > .item, .ui.massive.horizontal.list > .item { font-size: 1.71428571rem; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Loader * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Loader *******************************/ /* Standard Size */ .ui.loader { display: none; position: absolute; top: 50%; left: 50%; margin: 0px; text-align: center; z-index: 1000; -webkit-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); } /* Static Shape */ .ui.loader:before { position: absolute; content: ''; top: 0%; left: 50%; width: 100%; height: 100%; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.1); } /* Active Shape */ .ui.loader:after { position: absolute; content: ''; top: 0%; left: 50%; width: 100%; height: 100%; -webkit-animation: loader 0.6s linear; animation: loader 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 transparent transparent; border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; } /* Active Animation */ @-webkit-keyframes loader { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes loader { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /* Sizes */ .ui.loader:before, .ui.loader:after { width: 2.2585em; height: 2.2585em; margin: 0em 0em 0em -1.12925em; } .ui.mini.loader:before, .ui.mini.loader:after { width: 1.2857em; height: 1.2857em; margin: 0em 0em 0em -0.64285em; } .ui.small.loader:before, .ui.small.loader:after { width: 1.7142em; height: 1.7142em; margin: 0em 0em 0em -0.8571em; } .ui.large.loader:before, .ui.large.loader:after { width: 4.5714em; height: 4.5714em; margin: 0em 0em 0em -2.2857em; } /*------------------- Coupling --------------------*/ /* Show inside active dimmer */ .ui.dimmer .loader { display: block; } /* Black Dimmer */ .ui.dimmer .ui.loader { color: rgba(255, 255, 255, 0.9); } .ui.dimmer .ui.loader:before { border-color: rgba(255, 255, 255, 0.15); } .ui.dimmer .ui.loader:after { border-color: #ffffff transparent transparent; } /* White Dimmer (Inverted) */ .ui.inverted.dimmer .ui.loader { color: rgba(0, 0, 0, 0.87); } .ui.inverted.dimmer .ui.loader:before { border-color: rgba(0, 0, 0, 0.1); } .ui.inverted.dimmer .ui.loader:after { border-color: #767676 transparent transparent; } /******************************* Types *******************************/ /*------------------- Text --------------------*/ .ui.text.loader { width: auto !important; height: auto !important; text-align: center; font-style: normal; } /******************************* States *******************************/ .ui.indeterminate.loader:after { -webkit-animation-direction: reverse; animation-direction: reverse; -webkit-animation-duration: 1.2s; animation-duration: 1.2s; } .ui.loader.active, .ui.loader.visible { display: block; } .ui.loader.disabled, .ui.loader.hidden { display: none; } /******************************* Variations *******************************/ /*------------------- Sizes --------------------*/ /* Loader */ .ui.inverted.dimmer .ui.mini.loader, .ui.mini.loader { width: 1.2857em; height: 1.2857em; font-size: 0.71428571em; } .ui.inverted.dimmer .ui.small.loader, .ui.small.loader { width: 1.7142em; height: 1.7142em; font-size: 0.92857143em; } .ui.inverted.dimmer .ui.loader, .ui.loader { width: 2.2585em; height: 2.2585em; font-size: 1em; } .ui.inverted.dimmer .ui.loader.large, .ui.loader.large { width: 4.5714em; height: 4.5714em; font-size: 1.14285714em; } /* Text Loader */ .ui.mini.text.loader { min-width: 1.2857em; padding-top: 1.99998571em; } .ui.small.text.loader { min-width: 1.7142em; padding-top: 2.42848571em; } .ui.text.loader { min-width: 2.2585em; padding-top: 2.97278571em; } .ui.large.text.loader { min-width: 4.5714em; padding-top: 5.28568571em; } /*------------------- Inverted --------------------*/ .ui.inverted.loader { color: rgba(255, 255, 255, 0.9); } .ui.inverted.loader:before { border-color: rgba(255, 255, 255, 0.15); } .ui.inverted.loader:after { border-top-color: #ffffff; } /*------------------- Inline --------------------*/ .ui.inline.loader { position: relative; vertical-align: middle; margin: 0em; left: 0em; top: 0em; -webkit-transform: none; -ms-transform: none; transform: none; } .ui.inline.loader.active, .ui.inline.loader.visible { display: inline-block; } /* Centered Inline */ .ui.centered.inline.loader.active, .ui.centered.inline.loader.visible { display: block; margin-left: auto; margin-right: auto; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Rail * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Rails *******************************/ .ui.rail { position: absolute; top: 0%; width: 300px; height: 100%; } .ui.left.rail { left: auto; right: 100%; padding: 0em 2rem 0em 0em; margin: 0em 2rem 0em 0em; } .ui.right.rail { left: 100%; right: auto; padding: 0em 0em 0em 2rem; margin: 0em 0em 0em 2rem; } /******************************* Variations *******************************/ /*-------------- Internal ---------------*/ .ui.left.internal.rail { left: 0%; right: auto; padding: 0em 0em 0em 2rem; margin: 0em 0em 0em 2rem; } .ui.right.internal.rail { left: auto; right: 0%; padding: 0em 2rem 0em 0em; margin: 0em 2rem 0em 0em; } /*-------------- Dividing ---------------*/ .ui.dividing.rail { width: 302.5px; } .ui.left.dividing.rail { padding: 0em 2.5rem 0em 0em; margin: 0em 2.5rem 0em 0em; border-right: 1px solid rgba(34, 36, 38, 0.15); } .ui.right.dividing.rail { border-left: 1px solid rgba(34, 36, 38, 0.15); padding: 0em 0em 0em 2.5rem; margin: 0em 0em 0em 2.5rem; } /*-------------- Distance ---------------*/ .ui.close.rail { width: 301px; } .ui.close.left.rail { padding: 0em 1em 0em 0em; margin: 0em 1em 0em 0em; } .ui.close.right.rail { padding: 0em 0em 0em 1em; margin: 0em 0em 0em 1em; } .ui.very.close.rail { width: 300.5px; } .ui.very.close.left.rail { padding: 0em 0.5em 0em 0em; margin: 0em 0.5em 0em 0em; } .ui.very.close.right.rail { padding: 0em 0em 0em 0.5em; margin: 0em 0em 0em 0.5em; } /*-------------- Attached ---------------*/ .ui.attached.left.rail, .ui.attached.right.rail { padding: 0em; margin: 0em; } /*-------------- Sizing ---------------*/ .ui.rail { font-size: 1rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Reveal * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Reveal *******************************/ .ui.reveal { display: inherit; position: relative !important; font-size: 0em !important; } .ui.reveal > .visible.content { position: absolute !important; top: 0em !important; left: 0em !important; z-index: 3 !important; -webkit-transition: all 0.5s ease 0.1s; transition: all 0.5s ease 0.1s; } .ui.reveal > .hidden.content { position: relative !important; z-index: 2 !important; } /* Make sure hovered element is on top of other reveal */ .ui.active.reveal .visible.content, .ui.reveal:hover .visible.content { z-index: 4 !important; } /******************************* Types *******************************/ /*-------------- Slide ---------------*/ .ui.slide.reveal { position: relative !important; overflow: hidden !important; white-space: nowrap; } .ui.slide.reveal > .content { display: block; width: 100%; float: left; margin: 0em; -webkit-transition: -webkit-transform 0.5s ease 0.1s; transition: transform 0.5s ease 0.1s; } .ui.slide.reveal > .visible.content { position: relative !important; } .ui.slide.reveal > .hidden.content { position: absolute !important; left: 0% !important; width: 100% !important; -webkit-transform: translateX(100%) !important; -ms-transform: translateX(100%) !important; transform: translateX(100%) !important; } .ui.slide.active.reveal > .visible.content, .ui.slide.reveal:hover > .visible.content { -webkit-transform: translateX(-100%) !important; -ms-transform: translateX(-100%) !important; transform: translateX(-100%) !important; } .ui.slide.active.reveal > .hidden.content, .ui.slide.reveal:hover > .hidden.content { -webkit-transform: translateX(0%) !important; -ms-transform: translateX(0%) !important; transform: translateX(0%) !important; } .ui.slide.right.reveal > .visible.content { -webkit-transform: translateX(0%) !important; -ms-transform: translateX(0%) !important; transform: translateX(0%) !important; } .ui.slide.right.reveal > .hidden.content { -webkit-transform: translateX(-100%) !important; -ms-transform: translateX(-100%) !important; transform: translateX(-100%) !important; } .ui.slide.right.active.reveal > .visible.content, .ui.slide.right.reveal:hover > .visible.content { -webkit-transform: translateX(100%) !important; -ms-transform: translateX(100%) !important; transform: translateX(100%) !important; } .ui.slide.right.active.reveal > .hidden.content, .ui.slide.right.reveal:hover > .hidden.content { -webkit-transform: translateX(0%) !important; -ms-transform: translateX(0%) !important; transform: translateX(0%) !important; } .ui.slide.up.reveal > .hidden.content { -webkit-transform: translateY(100%) !important; -ms-transform: translateY(100%) !important; transform: translateY(100%) !important; } .ui.slide.up.active.reveal > .visible.content, .ui.slide.up.reveal:hover > .visible.content { -webkit-transform: translateY(-100%) !important; -ms-transform: translateY(-100%) !important; transform: translateY(-100%) !important; } .ui.slide.up.active.reveal > .hidden.content, .ui.slide.up.reveal:hover > .hidden.content { -webkit-transform: translateY(0%) !important; -ms-transform: translateY(0%) !important; transform: translateY(0%) !important; } .ui.slide.down.reveal > .hidden.content { -webkit-transform: translateY(-100%) !important; -ms-transform: translateY(-100%) !important; transform: translateY(-100%) !important; } .ui.slide.down.active.reveal > .visible.content, .ui.slide.down.reveal:hover > .visible.content { -webkit-transform: translateY(100%) !important; -ms-transform: translateY(100%) !important; transform: translateY(100%) !important; } .ui.slide.down.active.reveal > .hidden.content, .ui.slide.down.reveal:hover > .hidden.content { -webkit-transform: translateY(0%) !important; -ms-transform: translateY(0%) !important; transform: translateY(0%) !important; } /*-------------- Fade ---------------*/ .ui.fade.reveal > .visible.content { opacity: 1; } .ui.fade.active.reveal > .visible.content, .ui.fade.reveal:hover > .visible.content { opacity: 0; } /*-------------- Move ---------------*/ .ui.move.reveal { position: relative !important; overflow: hidden !important; white-space: nowrap; } .ui.move.reveal > .content { display: block; float: left; margin: 0em; -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; transition: transform 0.5s cubic-bezier(0.175, 0.885, 0.32, 1) 0.1s; } .ui.move.reveal > .visible.content { position: relative !important; } .ui.move.reveal > .hidden.content { position: absolute !important; left: 0% !important; width: 100% !important; } .ui.move.active.reveal > .visible.content, .ui.move.reveal:hover > .visible.content { -webkit-transform: translateX(-100%) !important; -ms-transform: translateX(-100%) !important; transform: translateX(-100%) !important; } .ui.move.right.active.reveal > .visible.content, .ui.move.right.reveal:hover > .visible.content { -webkit-transform: translateX(100%) !important; -ms-transform: translateX(100%) !important; transform: translateX(100%) !important; } .ui.move.up.active.reveal > .visible.content, .ui.move.up.reveal:hover > .visible.content { -webkit-transform: translateY(-100%) !important; -ms-transform: translateY(-100%) !important; transform: translateY(-100%) !important; } .ui.move.down.active.reveal > .visible.content, .ui.move.down.reveal:hover > .visible.content { -webkit-transform: translateY(100%) !important; -ms-transform: translateY(100%) !important; transform: translateY(100%) !important; } /*-------------- Rotate ---------------*/ .ui.rotate.reveal > .visible.content { -webkit-transition-duration: 0.5s; transition-duration: 0.5s; -webkit-transform: rotate(0deg); -ms-transform: rotate(0deg); transform: rotate(0deg); } .ui.rotate.reveal > .visible.content, .ui.rotate.right.reveal > .visible.content { -webkit-transform-origin: bottom right; -ms-transform-origin: bottom right; transform-origin: bottom right; } .ui.rotate.active.reveal > .visible.conten, .ui.rotate.reveal:hover > .visible.content, .ui.rotate.right.active.reveal > .visible.content, .ui.rotate.right.reveal:hover > .visible.content { -webkit-transform: rotate(110deg); -ms-transform: rotate(110deg); transform: rotate(110deg); } .ui.rotate.left.reveal > .visible.content { -webkit-transform-origin: bottom left; -ms-transform-origin: bottom left; transform-origin: bottom left; } .ui.rotate.left.active.reveal > .visible.content, .ui.rotate.left.reveal:hover > .visible.content { -webkit-transform: rotate(-110deg); -ms-transform: rotate(-110deg); transform: rotate(-110deg); } /******************************* States *******************************/ .ui.disabled.reveal:hover > .visible.visible.content { position: static !important; display: block !important; opacity: 1 !important; top: 0 !important; left: 0 !important; right: auto !important; bottom: auto !important; -webkit-transform: none !important; -ms-transform: none !important; transform: none !important; } .ui.disabled.reveal:hover > .hidden.hidden.content { display: none !important; } /******************************* Variations *******************************/ /*-------------- Visible ---------------*/ .ui.visible.reveal { overflow: visible; } /*-------------- Instant ---------------*/ .ui.instant.reveal > .content { -webkit-transition-delay: 0s !important; transition-delay: 0s !important; } /*-------------- Sizing ---------------*/ .ui.reveal > .content { font-size: 1rem !important; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Segment * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Segment *******************************/ .ui.segment { position: relative; background: #ffffff; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); margin: 1rem 0em; padding: 1em 1em; border-radius: 0.28571429rem; border: 1px solid rgba(34, 36, 38, 0.15); } .ui.segment:first-child { margin-top: 0em; } .ui.segment:last-child { margin-bottom: 0em; } /* Vertical */ .ui.vertical.segment { margin: 0em; padding-left: 0em; padding-right: 0em; background: none transparent; border-radius: 0px; box-shadow: none; border: none; border-bottom: 1px solid rgba(34, 36, 38, 0.15); } .ui.vertical.segment:last-child { border-bottom: none; } /*------------------- Loose Coupling --------------------*/ /* Header */ .ui.inverted.segment > .ui.header { color: #ffffff; } /* Label */ .ui[class*="bottom attached"].segment > [class*="top attached"].label { border-top-left-radius: 0em; border-top-right-radius: 0em; } .ui[class*="top attached"].segment > [class*="bottom attached"].label { border-bottom-left-radius: 0em; border-bottom-right-radius: 0em; } .ui.attached.segment:not(.top):not(.bottom) > [class*="top attached"].label { border-top-left-radius: 0em; border-top-right-radius: 0em; } .ui.attached.segment:not(.top):not(.bottom) > [class*="bottom attached"].label { border-bottom-left-radius: 0em; border-bottom-right-radius: 0em; } /* Grid */ .ui.page.grid.segment, .ui.grid > .row > .ui.segment.column, .ui.grid > .ui.segment.column { padding-top: 2em; padding-bottom: 2em; } .ui.grid.segment { margin: 1rem 0em; border-radius: 0.28571429rem; } /* Table */ .ui.basic.table.segment { background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); } .ui[class*="very basic"].table.segment { padding: 1em 1em; } /******************************* Types *******************************/ /*------------------- Piled --------------------*/ .ui.piled.segments, .ui.piled.segment { margin: 3em 0em; box-shadow: ''; z-index: auto; } .ui.piled.segment:first-child { margin-top: 0em; } .ui.piled.segment:last-child { margin-bottom: 0em; } .ui.piled.segments:after, .ui.piled.segments:before, .ui.piled.segment:after, .ui.piled.segment:before { background-color: #ffffff; visibility: visible; content: ''; display: block; height: 100%; left: 0px; position: absolute; width: 100%; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: ''; } .ui.piled.segments:before, .ui.piled.segment:before { -webkit-transform: rotate(-1.2deg); -ms-transform: rotate(-1.2deg); transform: rotate(-1.2deg); top: 0; z-index: -2; } .ui.piled.segments:after, .ui.piled.segment:after { -webkit-transform: rotate(1.2deg); -ms-transform: rotate(1.2deg); transform: rotate(1.2deg); top: 0; z-index: -1; } /* Piled Attached */ .ui[class*="top attached"].piled.segment { margin-top: 3em; margin-bottom: 0em; } .ui.piled.segment[class*="top attached"]:first-child { margin-top: 0em; } .ui.piled.segment[class*="bottom attached"] { margin-top: 0em; margin-bottom: 3em; } .ui.piled.segment[class*="bottom attached"]:last-child { margin-bottom: 0em; } /*------------------- Stacked --------------------*/ .ui.stacked.segment { padding-bottom: 1.4em; } .ui.stacked.segments:before, .ui.stacked.segments:after, .ui.stacked.segment:before, .ui.stacked.segment:after { content: ''; position: absolute; bottom: -3px; left: 0%; border-top: 1px solid rgba(34, 36, 38, 0.15); background: rgba(0, 0, 0, 0.03); width: 100%; height: 6px; visibility: visible; } .ui.stacked.segments:before, .ui.stacked.segment:before { display: none; } /* Add additional page */ .ui.tall.stacked.segments:before, .ui.tall.stacked.segment:before { display: block; bottom: 0px; } /* Inverted */ .ui.stacked.inverted.segments:before, .ui.stacked.inverted.segments:after, .ui.stacked.inverted.segment:before, .ui.stacked.inverted.segment:after { background-color: rgba(0, 0, 0, 0.03); border-top: 1px solid rgba(34, 36, 38, 0.35); } /*------------------- Padded --------------------*/ .ui.padded.segment { padding: 1.5em; } .ui[class*="very padded"].segment { padding: 3em; } /*------------------- Compact --------------------*/ .ui.compact.segment { display: table; } /* Compact Group */ .ui.compact.segments { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; } .ui.compact.segments .segment, .ui.segments .compact.segment { display: block; -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; } /*------------------- Circular --------------------*/ .ui.circular.segment { display: table-cell; padding: 2em; text-align: center; vertical-align: middle; border-radius: 500em; } /*------------------- Raised --------------------*/ .ui.raised.segments, .ui.raised.segment { box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.08); } /******************************* Groups *******************************/ /* Group */ .ui.segments { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; position: relative; margin: 1rem 0em; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; } .ui.segments:first-child { margin-top: 0em; } .ui.segments:last-child { margin-bottom: 0em; } /* Nested Segment */ .ui.segments > .segment { top: 0px; bottom: 0px; border-radius: 0px; margin: 0em; width: auto; box-shadow: none; border: none; border-top: 1px solid rgba(34, 36, 38, 0.15); } .ui.segments:not(.horizontal) > .segment:first-child { border-top: none; margin-top: 0em; bottom: 0px; margin-bottom: 0em; top: 0px; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } /* Bottom */ .ui.segments:not(.horizontal) > .segment:last-child { top: 0px; bottom: 0px; margin-top: 0em; margin-bottom: 0em; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Nested Group */ .ui.segments > .ui.segments { border-top: 1px solid rgba(34, 36, 38, 0.15); margin: 1rem 1rem; } .ui.segments > .segments:first-child { border-top: none; } .ui.segments > .segment + .segments:not(.horizontal) { margin-top: 0em; } /* Horizontal Group */ .ui.horizontal.segments { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; background-color: transparent; border-radius: 0px; padding: 0em; background-color: #ffffff; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); margin: 1rem 0em; border-radius: 0.28571429rem; border: 1px solid rgba(34, 36, 38, 0.15); } /* Nested Horizontal Group */ .ui.segments > .horizontal.segments { margin: 0em; background-color: transparent; border-radius: 0px; border: none; box-shadow: none; border-top: 1px solid rgba(34, 36, 38, 0.15); } /* Horizontal Segment */ .ui.horizontal.segments > .segment { -webkit-box-flex: 1; -webkit-flex: 1 1 auto; flex: 1 1 auto; -ms-flex: 1 1 0px; /* Solves #2550 MS Flex */ margin: 0em; min-width: 0px; background-color: transparent; border-radius: 0px; border: none; box-shadow: none; border-left: 1px solid rgba(34, 36, 38, 0.15); } /* Border Fixes */ .ui.segments > .horizontal.segments:first-child { border-top: none; } .ui.horizontal.segments > .segment:first-child { border-left: none; } /******************************* States *******************************/ /*-------------- Disabled ---------------*/ .ui.disabled.segment { opacity: 0.45; color: rgba(40, 40, 40, 0.3); } /*-------------- Loading ---------------*/ .ui.loading.segment { position: relative; cursor: default; point-events: none; text-shadow: none !important; color: transparent !important; -webkit-transition: all 0s linear; transition: all 0s linear; } .ui.loading.segment:before { position: absolute; content: ''; top: 0%; left: 0%; background: rgba(255, 255, 255, 0.8); width: 100%; height: 100%; border-radius: 0.28571429rem; z-index: 100; } .ui.loading.segment:after { position: absolute; content: ''; top: 50%; left: 50%; margin: -1.5em 0em 0em -1.5em; width: 3em; height: 3em; -webkit-animation: segment-spin 0.6s linear; animation: segment-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1); border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; visibility: visible; z-index: 101; } @-webkit-keyframes segment-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes segment-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /******************************* Variations *******************************/ /*------------------- Basic --------------------*/ .ui.basic.segment { background: none transparent; box-shadow: none; border: none; border-radius: 0px; } /*------------------- Clearing --------------------*/ .ui.clearing.segment:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } /*------------------- Colors --------------------*/ /* Red */ .ui.red.segment:not(.inverted) { border-top: 2px solid #db2828; } .ui.inverted.red.segment { background-color: #db2828 !important; color: #ffffff !important; } /* Orange */ .ui.orange.segment:not(.inverted) { border-top: 2px solid #f2711c; } .ui.inverted.orange.segment { background-color: #f2711c !important; color: #ffffff !important; } /* Yellow */ .ui.yellow.segment:not(.inverted) { border-top: 2px solid #fbbd08; } .ui.inverted.yellow.segment { background-color: #fbbd08 !important; color: #ffffff !important; } /* Olive */ .ui.olive.segment:not(.inverted) { border-top: 2px solid #b5cc18; } .ui.inverted.olive.segment { background-color: #b5cc18 !important; color: #ffffff !important; } /* Green */ .ui.green.segment:not(.inverted) { border-top: 2px solid #21ba45; } .ui.inverted.green.segment { background-color: #21ba45 !important; color: #ffffff !important; } /* Teal */ .ui.teal.segment:not(.inverted) { border-top: 2px solid #00b5ad; } .ui.inverted.teal.segment { background-color: #00b5ad !important; color: #ffffff !important; } /* Blue */ .ui.blue.segment:not(.inverted) { border-top: 2px solid #2185d0; } .ui.inverted.blue.segment { background-color: #2185d0 !important; color: #ffffff !important; } /* Violet */ .ui.violet.segment:not(.inverted) { border-top: 2px solid #6435c9; } .ui.inverted.violet.segment { background-color: #6435c9 !important; color: #ffffff !important; } /* Purple */ .ui.purple.segment:not(.inverted) { border-top: 2px solid #a333c8; } .ui.inverted.purple.segment { background-color: #a333c8 !important; color: #ffffff !important; } /* Pink */ .ui.pink.segment:not(.inverted) { border-top: 2px solid #e03997; } .ui.inverted.pink.segment { background-color: #e03997 !important; color: #ffffff !important; } /* Brown */ .ui.brown.segment:not(.inverted) { border-top: 2px solid #a5673f; } .ui.inverted.brown.segment { background-color: #a5673f !important; color: #ffffff !important; } /* Grey */ .ui.grey.segment:not(.inverted) { border-top: 2px solid #767676; } .ui.inverted.grey.segment { background-color: #767676 !important; color: #ffffff !important; } /* Black */ .ui.black.segment:not(.inverted) { border-top: 2px solid #1b1c1d; } .ui.inverted.black.segment { background-color: #1b1c1d !important; color: #ffffff !important; } /*------------------- Aligned --------------------*/ .ui[class*="left aligned"].segment { text-align: left; } .ui[class*="right aligned"].segment { text-align: right; } .ui[class*="center aligned"].segment { text-align: center; } /*------------------- Floated --------------------*/ .ui.floated.segment, .ui[class*="left floated"].segment { float: left; margin-right: 1em; } .ui[class*="right floated"].segment { float: right; margin-left: 1em; } /*------------------- Inverted --------------------*/ .ui.inverted.segment { border: none; box-shadow: none; } .ui.inverted.segment, .ui.primary.inverted.segment { background: #1b1c1d; color: rgba(255, 255, 255, 0.9); } /* Nested */ .ui.inverted.segment .segment { color: rgba(0, 0, 0, 0.87); } .ui.inverted.segment .inverted.segment { color: rgba(255, 255, 255, 0.9); } /* Attached */ .ui.inverted.attached.segment { border-color: #555555; } /*------------------- Emphasis --------------------*/ /* Secondary */ .ui.secondary.segment { background: #f3f4f5; color: rgba(0, 0, 0, 0.6); } .ui.secondary.inverted.segment { background: #4c4f52 -webkit-linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%); background: #4c4f52 linear-gradient(rgba(255, 255, 255, 0.2) 0%, rgba(255, 255, 255, 0.2) 100%); color: rgba(255, 255, 255, 0.8); } /* Tertiary */ .ui.tertiary.segment { background: #dcddde; color: rgba(0, 0, 0, 0.6); } .ui.tertiary.inverted.segment { background: #717579 -webkit-linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%); background: #717579 linear-gradient(rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0.35) 100%); color: rgba(255, 255, 255, 0.8); } /*------------------- Attached --------------------*/ /* Middle */ .ui.attached.segment { top: 0px; bottom: 0px; border-radius: 0px; margin: 0em -1px; width: calc(100% + 2px ); max-width: calc(100% + 2px ); box-shadow: none; border: 1px solid #d4d4d5; } .ui.attached + .ui.attached.segment:not(.top) { border-top: none; } /* Top */ .ui[class*="top attached"].segment { bottom: 0px; margin-bottom: 0em; top: 0px; margin-top: 1rem; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.segment[class*="top attached"]:first-child { margin-top: 0em; } /* Bottom */ .ui.segment[class*="bottom attached"] { bottom: 0px; margin-top: 0em; top: 0px; margin-bottom: 1rem; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.segment[class*="bottom attached"]:last-child { margin-bottom: 0em; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Step * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Plural *******************************/ .ui.steps { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch; margin: 1em 0em; background: ''; box-shadow: none; line-height: 1.14285714em; border-radius: 0.28571429rem; border: 1px solid rgba(34, 36, 38, 0.15); } /* First Steps */ .ui.steps:first-child { margin-top: 0em; } /* Last Steps */ .ui.steps:last-child { margin-bottom: 0em; } /******************************* Singular *******************************/ .ui.steps .step { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; vertical-align: middle; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; margin: 0em 0em; padding: 1.14285714em 2em; background: #ffffff; color: rgba(0, 0, 0, 0.87); box-shadow: none; border-radius: 0em; border: none; border-right: 1px solid rgba(34, 36, 38, 0.15); -webkit-transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; } /* Arrow */ .ui.steps .step:after { display: none; position: absolute; z-index: 2; content: ''; top: 50%; right: 0%; border: medium none; background-color: #ffffff; width: 1.14285714em; height: 1.14285714em; border-style: solid; border-color: rgba(34, 36, 38, 0.15); border-width: 0px 1px 1px 0px; -webkit-transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; transition: background-color 0.1s ease, opacity 0.1s ease, color 0.1s ease, box-shadow 0.1s ease; -webkit-transform: translateY(-50%) translateX(50%) rotate(-45deg); -ms-transform: translateY(-50%) translateX(50%) rotate(-45deg); transform: translateY(-50%) translateX(50%) rotate(-45deg); } /* First Step */ .ui.steps .step:first-child { padding-left: 2em; border-radius: 0.28571429rem 0em 0em 0.28571429rem; } /* Last Step */ .ui.steps .step:last-child { border-radius: 0em 0.28571429rem 0.28571429rem 0em; } .ui.steps .step:last-child { border-right: none; margin-right: 0em; } /* Only Step */ .ui.steps .step:only-child { border-radius: 0.28571429rem; } /******************************* Content *******************************/ /* Title */ .ui.steps .step .title { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1.14285714em; font-weight: bold; } .ui.steps .step > .title { width: 100%; } /* Description */ .ui.steps .step .description { font-weight: normal; font-size: 0.92857143em; color: rgba(0, 0, 0, 0.87); } .ui.steps .step > .description { width: 100%; } .ui.steps .step .title ~ .description { margin-top: 0.25em; } /* Icon */ .ui.steps .step > .icon { line-height: 1; font-size: 2.5em; margin: 0em 1rem 0em 0em; } .ui.steps .step > .icon, .ui.steps .step > .icon ~ .content { display: block; -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; -webkit-align-self: middle; -ms-flex-item-align: middle; align-self: middle; } .ui.steps .step > .icon ~ .content { -webkit-box-flex: 1 0 auto; -webkit-flex-grow: 1 0 auto; -ms-flex-positive: 1 0 auto; flex-grow: 1 0 auto; } /* Horizontal Icon */ .ui.steps:not(.vertical) .step > .icon { width: auto; } /* Link */ .ui.steps .link.step, .ui.steps a.step { cursor: pointer; } /******************************* Types *******************************/ /*-------------- Ordered ---------------*/ .ui.ordered.steps { counter-reset: ordered; } .ui.ordered.steps .step:before { display: block; position: static; text-align: center; content: counters(ordered, "."); -webkit-align-self: middle; -ms-flex-item-align: middle; align-self: middle; margin-right: 1rem; font-size: 2.5em; counter-increment: ordered; font-family: inherit; font-weight: bold; } .ui.ordered.steps .step > * { display: block; -webkit-align-self: middle; -ms-flex-item-align: middle; align-self: middle; } /*-------------- Vertical ---------------*/ .ui.vertical.steps { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; overflow: visible; } .ui.vertical.steps .step { -webkit-box-pack: start; -webkit-justify-content: flex-start; -ms-flex-pack: start; justify-content: flex-start; border-radius: 0em; padding: 1.14285714em 2em; border-right: none; border-bottom: 1px solid rgba(34, 36, 38, 0.15); } .ui.vertical.steps .step:first-child { padding: 1.14285714em 2em; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.vertical.steps .step:last-child { border-bottom: none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.vertical.steps .step:only-child { border-radius: 0.28571429rem; } /* Arrow */ .ui.vertical.steps .step:after { display: none; } .ui.vertical.steps .step:after { top: 50%; right: 0%; border-width: 0px 1px 1px 0px; } .ui.vertical.steps .step:after { display: none; } .ui.vertical.steps .active.step:after { display: block; } .ui.vertical.steps .step:last-child:after { display: none; } .ui.vertical.steps .active.step:last-child:after { display: block; } /*--------------- Responsive ----------------*/ /* Mobile (Default) */ @media only screen and (max-width: 767px) { .ui.steps { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; overflow: visible; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .ui.steps .step { width: 100% !important; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; border-radius: 0em; padding: 1.14285714em 2em; } .ui.steps .step:first-child { padding: 1.14285714em 2em; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.steps .step:last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Arrow */ .ui.steps .step:after { display: none !important; } /* Content */ .ui.steps .step .content { text-align: center; } /* Icon */ .ui.steps .step > .icon, .ui.ordered.steps .step:before { margin: 0em 0em 1rem 0em; } } /******************************* States *******************************/ /* Link Hover */ .ui.steps .link.step:hover::after, .ui.steps .link.step:hover, .ui.steps a.step:hover::after, .ui.steps a.step:hover { background: #f9fafb; color: rgba(0, 0, 0, 0.8); } /* Link Down */ .ui.steps .link.step:active::after, .ui.steps .link.step:active, .ui.steps a.step:active::after, .ui.steps a.step:active { background: #f3f4f5; color: rgba(0, 0, 0, 0.9); } /* Active */ .ui.steps .step.active { cursor: auto; background: #f3f4f5; } .ui.steps .step.active:after { background: #f3f4f5; } .ui.steps .step.active .title { color: #4183c4; } .ui.ordered.steps .step.active:before, .ui.steps .active.step .icon { color: rgba(0, 0, 0, 0.85); } /* Active Arrow */ .ui.steps .step:after { display: block; } .ui.steps .active.step:after { display: block; } .ui.steps .step:last-child:after { display: none; } .ui.steps .active.step:last-child:after { display: none; } /* Active Hover */ .ui.steps .link.active.step:hover::after, .ui.steps .link.active.step:hover, .ui.steps a.active.step:hover::after, .ui.steps a.active.step:hover { cursor: pointer; background: #dcddde; color: rgba(0, 0, 0, 0.87); } /* Completed */ .ui.steps .step.completed > .icon:before, .ui.ordered.steps .step.completed:before { color: #21ba45; } /* Disabled */ .ui.steps .disabled.step { cursor: auto; background: #ffffff; pointer-events: none; } .ui.steps .disabled.step, .ui.steps .disabled.step .title, .ui.steps .disabled.step .description { color: rgba(40, 40, 40, 0.3); } .ui.steps .disabled.step:after { background: #ffffff; } /******************************* Variations *******************************/ /*-------------- Stackable ---------------*/ /* Tablet Or Below */ @media only screen and (max-width: 991px) { .ui[class*="tablet stackable"].steps { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; overflow: visible; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } /* Steps */ .ui[class*="tablet stackable"].steps .step { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; border-radius: 0em; padding: 1.14285714em 2em; } .ui[class*="tablet stackable"].steps .step:first-child { padding: 1.14285714em 2em; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui[class*="tablet stackable"].steps .step:last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Arrow */ .ui[class*="tablet stackable"].steps .step:after { display: none !important; } /* Content */ .ui[class*="tablet stackable"].steps .step .content { text-align: center; } /* Icon */ .ui[class*="tablet stackable"].steps .step > .icon, .ui[class*="tablet stackable"].ordered.steps .step:before { margin: 0em 0em 1rem 0em; } } /*-------------- Fluid ---------------*/ /* Fluid */ .ui.fluid.steps { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; } /*-------------- Attached ---------------*/ /* Top */ .ui.attached.steps { width: calc(100% + 2px ) !important; margin: 0em -1px -1px; max-width: calc(100% + 2px ); border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.attached.steps .step:first-child { border-radius: 0.28571429rem 0em 0em 0em; } .ui.attached.steps .step:last-child { border-radius: 0em 0.28571429rem 0em 0em; } /* Bottom */ .ui.bottom.attached.steps { margin: -1px -1px 0em; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.bottom.attached.steps .step:first-child { border-radius: 0em 0em 0em 0.28571429rem; } .ui.bottom.attached.steps .step:last-child { border-radius: 0em 0em 0.28571429rem 0em; } /*------------------- Evenly Divided --------------------*/ .ui.one.steps, .ui.two.steps, .ui.three.steps, .ui.four.steps, .ui.five.steps, .ui.six.steps, .ui.seven.steps, .ui.eight.steps { width: 100%; } .ui.one.steps > .step, .ui.two.steps > .step, .ui.three.steps > .step, .ui.four.steps > .step, .ui.five.steps > .step, .ui.six.steps > .step, .ui.seven.steps > .step, .ui.eight.steps > .step { -webkit-flex-wrap: nowrap; -ms-flex-wrap: nowrap; flex-wrap: nowrap; } .ui.one.steps > .step { width: 100%; } .ui.two.steps > .step { width: 50%; } .ui.three.steps > .step { width: 33.333%; } .ui.four.steps > .step { width: 25%; } .ui.five.steps > .step { width: 20%; } .ui.six.steps > .step { width: 16.666%; } .ui.seven.steps > .step { width: 14.285%; } .ui.eight.steps > .step { width: 12.500%; } /*------------------- Sizes --------------------*/ .ui.small.step, .ui.small.steps .step { font-size: 0.92857143rem; } .ui.step, .ui.steps .step { font-size: 1rem; } .ui.large.step, .ui.large.steps .step { font-size: 1.14285714rem; } /******************************* Theme Overrides *******************************/ @font-face { font-family: 'Step'; src: url("data:application/x-font-ttf;charset=utf-8;;base64,AAEAAAAOAIAAAwBgT1MvMj3hSQEAAADsAAAAVmNtYXDQEhm3AAABRAAAAUpjdnQgBkn/lAAABuwAAAAcZnBnbYoKeDsAAAcIAAAJkWdhc3AAAAAQAAAG5AAAAAhnbHlm32cEdgAAApAAAAC2aGVhZAErPHsAAANIAAAANmhoZWEHUwNNAAADgAAAACRobXR4CykAAAAAA6QAAAAMbG9jYQA4AFsAAAOwAAAACG1heHAApgm8AAADuAAAACBuYW1lzJ0aHAAAA9gAAALNcG9zdK69QJgAAAaoAAAAO3ByZXCSoZr/AAAQnAAAAFYAAQO4AZAABQAIAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA6ADoAQNS/2oAWgMLAE8AAAABAAAAAAAAAAAAAwAAAAMAAAAcAAEAAAAAAEQAAwABAAAAHAAEACgAAAAGAAQAAQACAADoAf//AAAAAOgA//8AABgBAAEAAAAAAAAAAAEGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADpAKYABUAHEAZDwEAAQFCAAIBAmoAAQABagAAAGEUFxQDEisBFAcBBiInASY0PwE2Mh8BATYyHwEWA6QP/iAQLBD+6g8PTBAsEKQBbhAsEEwPAhYWEP4gDw8BFhAsEEwQEKUBbxAQTBAAAAH//f+xA18DCwAMABJADwABAQpDAAAACwBEFRMCESsBFA4BIi4CPgEyHgEDWXLG6MhuBnq89Lp+AV51xHR0xOrEdHTEAAAAAAEAAAABAADDeRpdXw889QALA+gAAAAAzzWYjQAAAADPNWBN//3/sQOkAwsAAAAIAAIAAAAAAAAAAQAAA1L/agBaA+gAAP/3A6QAAQAAAAAAAAAAAAAAAAAAAAMD6AAAA+gAAANZAAAAAAAAADgAWwABAAAAAwAWAAEAAAAAAAIABgATAG4AAAAtCZEAAAAAAAAAEgDeAAEAAAAAAAAANQAAAAEAAAAAAAEACAA1AAEAAAAAAAIABwA9AAEAAAAAAAMACABEAAEAAAAAAAQACABMAAEAAAAAAAUACwBUAAEAAAAAAAYACABfAAEAAAAAAAoAKwBnAAEAAAAAAAsAEwCSAAMAAQQJAAAAagClAAMAAQQJAAEAEAEPAAMAAQQJAAIADgEfAAMAAQQJAAMAEAEtAAMAAQQJAAQAEAE9AAMAAQQJAAUAFgFNAAMAAQQJAAYAEAFjAAMAAQQJAAoAVgFzAAMAAQQJAAsAJgHJQ29weXJpZ2h0IChDKSAyMDE0IGJ5IG9yaWdpbmFsIGF1dGhvcnMgQCBmb250ZWxsby5jb21mb250ZWxsb1JlZ3VsYXJmb250ZWxsb2ZvbnRlbGxvVmVyc2lvbiAxLjBmb250ZWxsb0dlbmVyYXRlZCBieSBzdmcydHRmIGZyb20gRm9udGVsbG8gcHJvamVjdC5odHRwOi8vZm9udGVsbG8uY29tAEMAbwBwAHkAcgBpAGcAaAB0ACAAKABDACkAIAAyADAAMQA0ACAAYgB5ACAAbwByAGkAZwBpAG4AYQBsACAAYQB1AHQAaABvAHIAcwAgAEAAIABmAG8AbgB0AGUAbABsAG8ALgBjAG8AbQBmAG8AbgB0AGUAbABsAG8AUgBlAGcAdQBsAGEAcgBmAG8AbgB0AGUAbABsAG8AZgBvAG4AdABlAGwAbABvAFYAZQByAHMAaQBvAG4AIAAxAC4AMABmAG8AbgB0AGUAbABsAG8ARwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABzAHYAZwAyAHQAdABmACAAZgByAG8AbQAgAEYAbwBuAHQAZQBsAGwAbwAgAHAAcgBvAGoAZQBjAHQALgBoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAQIBAwljaGVja21hcmsGY2lyY2xlAAAAAAEAAf//AA8AAAAAAAAAAAAAAAAAAAAAADIAMgML/7EDC/+xsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywB0MrsgACAENgQi2wBSywByNCIyCwACNCYbCAYrABYLAEKi2wBiwgIEUgsAJFY7ABRWJgRLABYC2wBywgIEUgsAArI7ECBCVgIEWKI2EgZCCwIFBYIbAAG7AwUFiwIBuwQFlZI7AAUFhlWbADJSNhRESwAWAtsAgssQUFRbABYUQtsAkssAFgICCwCUNKsABQWCCwCSNCWbAKQ0qwAFJYILAKI0JZLbAKLCC4BABiILgEAGOKI2GwC0NgIIpgILALI0IjLbALLEtUWLEHAURZJLANZSN4LbAMLEtRWEtTWLEHAURZGyFZJLATZSN4LbANLLEADENVWLEMDEOwAWFCsAorWbAAQ7ACJUKxCQIlQrEKAiVCsAEWIyCwAyVQWLEBAENgsAQlQoqKIIojYbAJKiEjsAFhIIojYbAJKiEbsQEAQ2CwAiVCsAIlYbAJKiFZsAlDR7AKQ0dgsIBiILACRWOwAUViYLEAABMjRLABQ7AAPrIBAQFDYEItsA4ssQAFRVRYALAMI0IgYLABYbUNDQEACwBCQopgsQ0FK7BtKxsiWS2wDyyxAA4rLbAQLLEBDistsBEssQIOKy2wEiyxAw4rLbATLLEEDistsBQssQUOKy2wFSyxBg4rLbAWLLEHDistsBcssQgOKy2wGCyxCQ4rLbAZLLAIK7EABUVUWACwDCNCIGCwAWG1DQ0BAAsAQkKKYLENBSuwbSsbIlktsBossQAZKy2wGyyxARkrLbAcLLECGSstsB0ssQMZKy2wHiyxBBkrLbAfLLEFGSstsCAssQYZKy2wISyxBxkrLbAiLLEIGSstsCMssQkZKy2wJCwgPLABYC2wJSwgYLANYCBDI7ABYEOwAiVhsAFgsCQqIS2wJiywJSuwJSotsCcsICBHICCwAkVjsAFFYmAjYTgjIIpVWCBHICCwAkVjsAFFYmAjYTgbIVktsCgssQAFRVRYALABFrAnKrABFTAbIlktsCkssAgrsQAFRVRYALABFrAnKrABFTAbIlktsCosIDWwAWAtsCssALADRWOwAUVisAArsAJFY7ABRWKwACuwABa0AAAAAABEPiM4sSoBFSotsCwsIDwgRyCwAkVjsAFFYmCwAENhOC2wLSwuFzwtsC4sIDwgRyCwAkVjsAFFYmCwAENhsAFDYzgtsC8ssQIAFiUgLiBHsAAjQrACJUmKikcjRyNhIFhiGyFZsAEjQrIuAQEVFCotsDAssAAWsAQlsAQlRyNHI2GwBkUrZYouIyAgPIo4LbAxLLAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjILAIQyCKI0cjRyNhI0ZgsARDsIBiYCCwACsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsIBiYSMgILAEJiNGYTgbI7AIQ0awAiWwCENHI0cjYWAgsARDsIBiYCMgsAArI7AEQ2CwACuwBSVhsAUlsIBisAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wMiywABYgICCwBSYgLkcjRyNhIzw4LbAzLLAAFiCwCCNCICAgRiNHsAArI2E4LbA0LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWGwAUVjIyBYYhshWWOwAUViYCMuIyAgPIo4IyFZLbA1LLAAFiCwCEMgLkcjRyNhIGCwIGBmsIBiIyAgPIo4LbA2LCMgLkawAiVGUlggPFkusSYBFCstsDcsIyAuRrACJUZQWCA8WS6xJgEUKy2wOCwjIC5GsAIlRlJYIDxZIyAuRrACJUZQWCA8WS6xJgEUKy2wOSywMCsjIC5GsAIlRlJYIDxZLrEmARQrLbA6LLAxK4ogIDywBCNCijgjIC5GsAIlRlJYIDxZLrEmARQrsARDLrAmKy2wOyywABawBCWwBCYgLkcjRyNhsAZFKyMgPCAuIzixJgEUKy2wPCyxCAQlQrAAFrAEJbAEJSAuRyNHI2EgsAQjQrAGRSsgsGBQWCCwQFFYswIgAyAbswImAxpZQkIjIEewBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhsAIlRmE4IyA8IzgbISAgRiNHsAArI2E4IVmxJgEUKy2wPSywMCsusSYBFCstsD4ssDErISMgIDywBCNCIzixJgEUK7AEQy6wJistsD8ssAAVIEewACNCsgABARUUEy6wLCotsEAssAAVIEewACNCsgABARUUEy6wLCotsEEssQABFBOwLSotsEIssC8qLbBDLLAAFkUjIC4gRoojYTixJgEUKy2wRCywCCNCsEMrLbBFLLIAADwrLbBGLLIAATwrLbBHLLIBADwrLbBILLIBATwrLbBJLLIAAD0rLbBKLLIAAT0rLbBLLLIBAD0rLbBMLLIBAT0rLbBNLLIAADkrLbBOLLIAATkrLbBPLLIBADkrLbBQLLIBATkrLbBRLLIAADsrLbBSLLIAATsrLbBTLLIBADsrLbBULLIBATsrLbBVLLIAAD4rLbBWLLIAAT4rLbBXLLIBAD4rLbBYLLIBAT4rLbBZLLIAADorLbBaLLIAATorLbBbLLIBADorLbBcLLIBATorLbBdLLAyKy6xJgEUKy2wXiywMiuwNistsF8ssDIrsDcrLbBgLLAAFrAyK7A4Ky2wYSywMysusSYBFCstsGIssDMrsDYrLbBjLLAzK7A3Ky2wZCywMyuwOCstsGUssDQrLrEmARQrLbBmLLA0K7A2Ky2wZyywNCuwNystsGgssDQrsDgrLbBpLLA1Ky6xJgEUKy2waiywNSuwNistsGsssDUrsDcrLbBsLLA1K7A4Ky2wbSwrsAhlsAMkUHiwARUwLQAAAEu4AMhSWLEBAY5ZuQgACABjILABI0SwAyNwsgQoCUVSRLIKAgcqsQYBRLEkAYhRWLBAiFixBgNEsSYBiFFYuAQAiFixBgFEWVlZWbgB/4WwBI2xBQBEAAA=") format('truetype'), url("data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAoUAA4AAAAAEPQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABRAAAAEQAAABWPeFJAWNtYXAAAAGIAAAAOgAAAUrQEhm3Y3Z0IAAAAcQAAAAUAAAAHAZJ/5RmcGdtAAAB2AAABPkAAAmRigp4O2dhc3AAAAbUAAAACAAAAAgAAAAQZ2x5ZgAABtwAAACuAAAAtt9nBHZoZWFkAAAHjAAAADUAAAA2ASs8e2hoZWEAAAfEAAAAIAAAACQHUwNNaG10eAAAB+QAAAAMAAAADAspAABsb2NhAAAH8AAAAAgAAAAIADgAW21heHAAAAf4AAAAIAAAACAApgm8bmFtZQAACBgAAAF3AAACzcydGhxwb3N0AAAJkAAAACoAAAA7rr1AmHByZXAAAAm8AAAAVgAAAFaSoZr/eJxjYGTewTiBgZWBg6mKaQ8DA0MPhGZ8wGDIyMTAwMTAysyAFQSkuaYwOLxgeMHIHPQ/iyGKmZvBHyjMCJIDAPe9C2B4nGNgYGBmgGAZBkYGEHAB8hjBfBYGDSDNBqQZGZgYGF4w/v8PUvCCAURLMELVAwEjG8OIBwBk5AavAAB4nGNgQANGDEbM3P83gjAAELQD4XicnVXZdtNWFJU8ZHASOmSgoA7X3DhQ68qEKRgwaSrFdiEdHAitBB2kDHTkncc+62uOQrtWH/m07n09JLR0rbYsls++R1tn2DrnRhwjKn0aiGvUoZKXA6msPZZK90lc13Uvj5UMBnFdthJPSZuonSRKat3sUC7xWOsqWSdYJ+PlIFZPVZ5noAziFB5lSUQbRBuplyZJ4onjJ4kWZxAfJUkgJaMQp9LIUEI1GsRS1aFM6dCr1xNx00DKRqMedVhU90PFJ8c1p9SsA0YqVznCFevVRr4bpwMve5DEOsGzrYcxHnisfpQqkIqR6cg/dkpOlIaBVHHUoVbi6DCTX/eRTCrNQKaMYkWl7oG43f102xYxPXQ6vi5KlUaqurnOKJrt0fGogygP2cbppNzQ2fbw5RlTVKtdcbPtQGYNXErJbHSfRAAdJlLj6QFONZwCqRn1R8XZ588BEslclKo8VTKHegOZMzt7cTHtbiersnCknwcyb3Z2452HQ6dXh3/R+hdM4cxHj+Jifj5C+lBqfiJOJKVGWMzyp4YfcVcgQrkxiAsXyuBThDl0RdrZZl3jtTH2hs/5SqlhPQna6KP4fgr9TiQrHGdRo/VInM1j13Wt3GdQS7W7Fzsyr0OVIu7vCwuuM+eEYZ4WC1VfnvneBTT/Bohn/EDeNIVL+5YpSrRvm6JMu2iKCu0SVKVdNsUU7YoppmnPmmKG9h1TzNKeMzLj/8vc55H7HN7xkJv2XeSmfQ+5ad9HbtoPkJtWITdtHblpLyA3rUZu2lWjOnYEGgZpF1IVQdA0svph3Fab9UDWjDR8aWDyLmLI+upER521tcofxX914gsHcmmip7siF5viLq/bFj483e6rj5pG3bDV+MaR8jAeRnocmtBZ+c3hv+1N3S6a7jKqMugBFUwKwABl7UAC0zrbCaT1mqf48gdgXIZ4zkpDtVSfO4am7+V5X/exOfG+x+3GLrdcd3kJWdYNcmP28N9SZKrrH+UtrVQnR6wrJ49VaxhDKrwour6SlHu0tRu/KKmy8l6U1srnk5CbPYMbQlu27mGwI0xpyiUeXlOlKD3UUo6yQyxvKco84JSLC1qGxLgOdQ9qa8TpoXoYGwshhqG0vRBwSCldFd+0ynfxHqtr2Oj4xRXh6XpyEhGf4ir7UfBU10b96A7avGbdMoMpVaqn+4xPsa/b9lFZaaSOsxe3VAfXNOsaORXTT+Rr4HRvOGjdAz1UfDRBI1U1x+jGKGM0ljXl3wR0MVZ+w2jVYvs93E+dpFWsuUuY7JsT9+C0u/0q+7WcW0bW/dcGvW3kip8jMb8tCvw7B2K3ZA3UO5OBGAvIWdAYxhYmdxiug23EbfY/Jqf/34aFRXJXOxq7eerD1ZNRJXfZ8rjLTXZZ16M2R9VOGvsIjS0PN+bY4XIstsRgQbb+wf8x7gF3aVEC4NDIZZiI2nShnurh6h6rsW04VxIBds2x43QAegAuQd8cu9bzCYD13CPnLsB9cgh2yCH4lByCz8i5BfA5OQRfkEMwIIdgl5w7AA/IIXhIDsEeOQSPyNkE+JIcgq/IIYjJIUjIuQ3wmByCJ+QQfE0OwTdGrk5k/pYH2QD6zqKbQKmdGhzaOGRGrk3Y+zxY9oFFZB9aROqRkesT6lMeLPV7i0j9wSJSfzRyY0L9iQdL/dkiUn+xiNRnxpeZIymvDp7zjg7+BJfqrV4AAAAAAQAB//8AD3icY2BkAALmJUwzGEQZZBwk+RkZGBmdGJgYmbIYgMwsoGSiiLgIs5A2owg7I5uSOqOaiT2jmZE8I5gQY17C/09BQEfg3yt+fh8gvYQxD0j68DOJiQn8U+DnZxQDcQUEljLmCwBpBgbG/3//b2SOZ+Zm4GEQcuAH2sblDLSEm8FFVJhJEGgLH6OSHpMdo5EcI3Nk0bEXJ/LYqvZ82VXHGFd6pKTkyCsQwQAAq+QkqAAAeJxjYGRgYADiw5VSsfH8Nl8ZuJlfAEUYzpvO6IXQCb7///7fyLyEmRvI5WBgAokCAFb/DJAAAAB4nGNgZGBgDvqfxRDF/IKB4f935iUMQBEUwAwAi5YFpgPoAAAD6AAAA1kAAAAAAAAAOABbAAEAAAADABYAAQAAAAAAAgAGABMAbgAAAC0JkQAAAAB4nHWQy2rCQBSG//HSi0JbWui2sypKabxgN4IgWHTTbqS4LTHGJBIzMhkFX6Pv0IfpS/RZ+puMpShNmMx3vjlz5mQAXOMbAvnzxJGzwBmjnAs4Rc9ykf7Zcon8YrmMKt4sn9C/W67gAYHlKm7wwQqidM5ogU/LAlfi0nIBF+LOcpH+0XKJ3LNcxq14tXxC71muYCJSy1Xci6+BWm11FIRG1gZ12W62OnK6lYoqStxYumsTKp3KvpyrxPhxrBxPLfc89oN17Op9uJ8nvk4jlciW09yrkZ/42jX+bFc93QRtY+ZyrtVSDm2GXGm18D3jhMasuo3G3/MwgMIKW2hEvKoQBhI12jrnNppooUOaMkMyM8+KkMBFTONizR1htpIy7nPMGSW0PjNisgOP3+WRH5MC7o9ZRR+tHsYT0u6MKPOSfTns7jBrREqyTDezs9/eU2x4WpvWcNeuS511JTE8qCF5H7u1BY1H72S3Ymi7aPD95/9+AN1fhEsAeJxjYGKAAC4G7ICZgYGRiZGZMzkjNTk7N7Eomy05syg5J5WBAQBE1QZBAABLuADIUlixAQGOWbkIAAgAYyCwASNEsAMjcLIEKAlFUkSyCgIHKrEGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAA") format('woff'); } .ui.steps .step.completed > .icon:before, .ui.ordered.steps .step.completed:before { font-family: 'Step'; content: '\e800'; /* '' */ } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Breadcrumb * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Breadcrumb *******************************/ .ui.breadcrumb { line-height: 1; display: inline-block; margin: 0em 0em; vertical-align: middle; } .ui.breadcrumb:first-child { margin-top: 0em; } .ui.breadcrumb:last-child { margin-bottom: 0em; } /******************************* Content *******************************/ /* Divider */ .ui.breadcrumb .divider { display: inline-block; opacity: 0.7; margin: 0em 0.21428571rem 0em; font-size: 0.92857143em; color: rgba(0, 0, 0, 0.4); vertical-align: baseline; } /* Link */ .ui.breadcrumb a { color: #4183c4; } .ui.breadcrumb a:hover { color: #1e70bf; } /* Icon Divider */ .ui.breadcrumb .icon.divider { font-size: 0.85714286em; vertical-align: baseline; } /* Section */ .ui.breadcrumb a.section { cursor: pointer; } .ui.breadcrumb .section { display: inline-block; margin: 0em; padding: 0em; } /* Loose Coupling */ .ui.breadcrumb.segment { display: inline-block; padding: 0.71428571em 1em; } /******************************* States *******************************/ .ui.breadcrumb .active.section { font-weight: bold; } /******************************* Variations *******************************/ .ui.mini.breadcrumb { font-size: 0.71428571rem; } .ui.tiny.breadcrumb { font-size: 0.85714286rem; } .ui.small.breadcrumb { font-size: 0.92857143rem; } .ui.breadcrumb { font-size: 1rem; } .ui.large.breadcrumb { font-size: 1.14285714rem; } .ui.big.breadcrumb { font-size: 1.28571429rem; } .ui.huge.breadcrumb { font-size: 1.42857143rem; } .ui.massive.breadcrumb { font-size: 1.71428571rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Form * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Elements *******************************/ /*-------------------- Form ---------------------*/ .ui.form { position: relative; max-width: 100%; } /*-------------------- Content ---------------------*/ .ui.form > p { margin: 1em 0em; } /*-------------------- Field ---------------------*/ .ui.form .field { clear: both; margin: 0em 0em 1em; } .ui.form .field:last-child, .ui.form .fields:last-child .field { margin-bottom: 0em; } .ui.form .fields .field { clear: both; margin: 0em 0em 1em; } /*-------------------- Labels ---------------------*/ .ui.form .field > label { display: block; margin: 0em 0em 0.28571429rem 0em; color: rgba(0, 0, 0, 0.87); font-size: 0.92857143em; font-weight: bold; text-transform: none; } /*-------------------- Standard Inputs ---------------------*/ .ui.form textarea, .ui.form input:not([type]), .ui.form input[type="date"], .ui.form input[type="datetime-local"], .ui.form input[type="email"], .ui.form input[type="number"], .ui.form input[type="password"], .ui.form input[type="search"], .ui.form input[type="tel"], .ui.form input[type="time"], .ui.form input[type="text"], .ui.form input[type="url"] { width: 100%; vertical-align: top; } /* Set max height on unusual input */ .ui.form ::-webkit-datetime-edit, .ui.form ::-webkit-inner-spin-button { height: 1.2142em; } .ui.form input:not([type]), .ui.form input[type="date"], .ui.form input[type="datetime-local"], .ui.form input[type="email"], .ui.form input[type="number"], .ui.form input[type="password"], .ui.form input[type="search"], .ui.form input[type="tel"], .ui.form input[type="time"], .ui.form input[type="text"], .ui.form input[type="url"] { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; margin: 0em; outline: none; -webkit-appearance: none; tap-highlight-color: rgba(255, 255, 255, 0); line-height: 1.2142em; padding: 0.67861429em 1em; font-size: 1em; background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); color: rgba(0, 0, 0, 0.87); border-radius: 0.28571429rem; box-shadow: 0em 0em 0em 0em transparent inset; -webkit-transition: color 0.1s ease, border-color 0.1s ease; transition: color 0.1s ease, border-color 0.1s ease; } /* Text Area */ .ui.form textarea { margin: 0em; -webkit-appearance: none; tap-highlight-color: rgba(255, 255, 255, 0); padding: 0.78571429em 1em; background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); outline: none; color: rgba(0, 0, 0, 0.87); border-radius: 0.28571429rem; box-shadow: 0em 0em 0em 0em transparent inset; -webkit-transition: color 0.1s ease, border-color 0.1s ease; transition: color 0.1s ease, border-color 0.1s ease; font-size: 1em; line-height: 1.2857; resize: vertical; } .ui.form textarea:not([rows]) { height: 12em; min-height: 8em; max-height: 24em; } .ui.form textarea, .ui.form input[type="checkbox"] { vertical-align: top; } /*-------------------------- Input w/ attached Button ---------------------------*/ .ui.form input.attached { width: auto; } /*-------------------- Basic Select ---------------------*/ .ui.form select { display: block; height: auto; width: 100%; background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; box-shadow: 0em 0em 0em 0em transparent inset; padding: 0.62em 1em; color: rgba(0, 0, 0, 0.87); -webkit-transition: color 0.1s ease, border-color 0.1s ease; transition: color 0.1s ease, border-color 0.1s ease; } /*-------------------- Dropdown ---------------------*/ /* Block */ .ui.form .field > .selection.dropdown { width: 100%; } .ui.form .field > .selection.dropdown > .dropdown.icon { float: right; } /* Inline */ .ui.form .inline.fields .field > .selection.dropdown, .ui.form .inline.field > .selection.dropdown { width: auto; } .ui.form .inline.fields .field > .selection.dropdown > .dropdown.icon, .ui.form .inline.field > .selection.dropdown > .dropdown.icon { float: none; } /*-------------------- UI Input ---------------------*/ /* Block */ .ui.form .field .ui.input, .ui.form .fields .field .ui.input, .ui.form .wide.field .ui.input { width: 100%; } /* Inline */ .ui.form .inline.fields .field:not(.wide) .ui.input, .ui.form .inline.field:not(.wide) .ui.input { width: auto; vertical-align: middle; } /* Auto Input */ .ui.form .fields .field .ui.input input, .ui.form .field .ui.input input { width: auto; } /* Full Width Input */ .ui.form .ten.fields .ui.input input, .ui.form .nine.fields .ui.input input, .ui.form .eight.fields .ui.input input, .ui.form .seven.fields .ui.input input, .ui.form .six.fields .ui.input input, .ui.form .five.fields .ui.input input, .ui.form .four.fields .ui.input input, .ui.form .three.fields .ui.input input, .ui.form .two.fields .ui.input input, .ui.form .wide.field .ui.input input { -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; width: 0px; } /*-------------------- Types of Messages ---------------------*/ .ui.form .success.message, .ui.form .warning.message, .ui.form .error.message { display: none; } /* Assumptions */ .ui.form .message:first-child { margin-top: 0px; } /*-------------------- Validation Prompt ---------------------*/ .ui.form .field .prompt.label { white-space: normal; background: #ffffff !important; border: 1px solid #e0b4b4 !important; color: #9f3a38 !important; } .ui.form .inline.fields .field .prompt, .ui.form .inline.field .prompt { vertical-align: top; margin: -0.25em 0em -0.5em 0.5em; } .ui.form .inline.fields .field .prompt:before, .ui.form .inline.field .prompt:before { border-width: 0px 0px 1px 1px; bottom: auto; right: auto; top: 50%; left: 0em; } /******************************* States *******************************/ /*-------------------- Autofilled ---------------------*/ .ui.form .field.field input:-webkit-autofill { box-shadow: 0px 0px 0px 100px #fffff0 inset !important; border-color: #e5dfa1 !important; } /* Focus */ .ui.form .field.field input:-webkit-autofill:focus { box-shadow: 0px 0px 0px 100px #fffff0 inset !important; border-color: #d5c315 !important; } /* Error */ .ui.form .error.error input:-webkit-autofill { box-shadow: 0px 0px 0px 100px #fffaf0 inset !important; border-color: #e0b4b4 !important; } /*-------------------- Placeholder ---------------------*/ /* browsers require these rules separate */ .ui.form ::-webkit-input-placeholder { color: rgba(140, 140, 140, 0.87); } .ui.form ::-ms-input-placeholder { color: rgba(140, 140, 140, 0.87); } .ui.form ::-moz-placeholder { color: rgba(140, 140, 140, 0.87); } .ui.form :focus::-webkit-input-placeholder { color: rgba(89, 89, 89, 0.87); } .ui.form :focus::-ms-input-placeholder { color: rgba(89, 89, 89, 0.87); } .ui.form :focus::-moz-placeholder { color: rgba(89, 89, 89, 0.87); } /* Error Placeholder */ .ui.form .error ::-webkit-input-placeholder { color: #e7bdbc; } .ui.form .error ::-ms-input-placeholder { color: #e7bdbc; } .ui.form .error ::-moz-placeholder { color: #e7bdbc; } .ui.form .error :focus::-webkit-input-placeholder { color: #da9796; } .ui.form .error :focus::-ms-input-placeholder { color: #da9796; } .ui.form .error :focus::-moz-placeholder { color: #da9796; } /*-------------------- Focus ---------------------*/ .ui.form input:not([type]):focus, .ui.form input[type="date"]:focus, .ui.form input[type="datetime-local"]:focus, .ui.form input[type="email"]:focus, .ui.form input[type="number"]:focus, .ui.form input[type="password"]:focus, .ui.form input[type="search"]:focus, .ui.form input[type="tel"]:focus, .ui.form input[type="time"]:focus, .ui.form input[type="text"]:focus, .ui.form input[type="url"]:focus { color: rgba(0, 0, 0, 0.95); border-color: #85b7d9; border-radius: 0.28571429rem; background: #ffffff; box-shadow: 0px 0em 0em 0em rgba(34, 36, 38, 0.35) inset; } .ui.form textarea:focus { color: rgba(0, 0, 0, 0.95); border-color: #85b7d9; border-radius: 0.28571429rem; background: #ffffff; box-shadow: 0px 0em 0em 0em rgba(34, 36, 38, 0.35) inset; -webkit-appearance: none; } /*-------------------- Success ---------------------*/ /* On Form */ .ui.form.success .success.message:not(:empty) { display: block; } .ui.form.success .icon.success.message:not(:empty) { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } /*-------------------- Warning ---------------------*/ /* On Form */ .ui.form.warning .warning.message:not(:empty) { display: block; } .ui.form.warning .icon.warning.message:not(:empty) { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } /*-------------------- Error ---------------------*/ /* On Form */ .ui.form.error .error.message:not(:empty) { display: block; } .ui.form.error .icon.error.message:not(:empty) { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } /* On Field(s) */ .ui.form .fields.error .field label, .ui.form .field.error label, .ui.form .fields.error .field .input, .ui.form .field.error .input { color: #9f3a38; } .ui.form .fields.error .field .corner.label, .ui.form .field.error .corner.label { border-color: #9f3a38; color: #ffffff; } .ui.form .fields.error .field textarea, .ui.form .fields.error .field select, .ui.form .fields.error .field input:not([type]), .ui.form .fields.error .field input[type="date"], .ui.form .fields.error .field input[type="datetime-local"], .ui.form .fields.error .field input[type="email"], .ui.form .fields.error .field input[type="number"], .ui.form .fields.error .field input[type="password"], .ui.form .fields.error .field input[type="search"], .ui.form .fields.error .field input[type="tel"], .ui.form .fields.error .field input[type="time"], .ui.form .fields.error .field input[type="text"], .ui.form .fields.error .field input[type="url"], .ui.form .field.error textarea, .ui.form .field.error select, .ui.form .field.error input:not([type]), .ui.form .field.error input[type="date"], .ui.form .field.error input[type="datetime-local"], .ui.form .field.error input[type="email"], .ui.form .field.error input[type="number"], .ui.form .field.error input[type="password"], .ui.form .field.error input[type="search"], .ui.form .field.error input[type="tel"], .ui.form .field.error input[type="time"], .ui.form .field.error input[type="text"], .ui.form .field.error input[type="url"] { background: #fff6f6; border-color: #e0b4b4; color: #9f3a38; border-radius: ''; box-shadow: none; } .ui.form .field.error textarea:focus, .ui.form .field.error select:focus, .ui.form .field.error input:not([type]):focus, .ui.form .field.error input[type="date"]:focus, .ui.form .field.error input[type="datetime-local"]:focus, .ui.form .field.error input[type="email"]:focus, .ui.form .field.error input[type="number"]:focus, .ui.form .field.error input[type="password"]:focus, .ui.form .field.error input[type="search"]:focus, .ui.form .field.error input[type="tel"]:focus, .ui.form .field.error input[type="time"]:focus, .ui.form .field.error input[type="text"]:focus, .ui.form .field.error input[type="url"]:focus { background: #fff6f6; border-color: #e0b4b4; color: #9f3a38; -webkit-appearance: none; box-shadow: none; } /* Preserve Native Select Stylings */ .ui.form .field.error select { -webkit-appearance: menulist-button; } /*------------------ Dropdown Error --------------------*/ .ui.form .fields.error .field .ui.dropdown, .ui.form .fields.error .field .ui.dropdown .item, .ui.form .field.error .ui.dropdown, .ui.form .field.error .ui.dropdown .text, .ui.form .field.error .ui.dropdown .item { background: #fff6f6; color: #9f3a38; } .ui.form .fields.error .field .ui.dropdown, .ui.form .field.error .ui.dropdown { border-color: #e0b4b4 !important; } .ui.form .fields.error .field .ui.dropdown:hover, .ui.form .field.error .ui.dropdown:hover { border-color: #e0b4b4 !important; } .ui.form .fields.error .field .ui.dropdown:hover .menu, .ui.form .field.error .ui.dropdown:hover .menu { border-color: #e0b4b4; } .ui.form .fields.error .field .ui.multiple.selection.dropdown > .label, .ui.form .field.error .ui.multiple.selection.dropdown > .label { background-color: #eacbcb; color: #9f3a38; } /* Hover */ .ui.form .fields.error .field .ui.dropdown .menu .item:hover, .ui.form .field.error .ui.dropdown .menu .item:hover { background-color: #fbe7e7; } /* Selected */ .ui.form .fields.error .field .ui.dropdown .menu .selected.item, .ui.form .field.error .ui.dropdown .menu .selected.item { background-color: #fbe7e7; } /* Active */ .ui.form .fields.error .field .ui.dropdown .menu .active.item, .ui.form .field.error .ui.dropdown .menu .active.item { background-color: #fdcfcf !important; } /*-------------------- Checkbox Error ---------------------*/ .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label, .ui.form .field.error .checkbox:not(.toggle):not(.slider) label, .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box, .ui.form .field.error .checkbox:not(.toggle):not(.slider) .box { color: #9f3a38; } .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) label:before, .ui.form .field.error .checkbox:not(.toggle):not(.slider) label:before, .ui.form .fields.error .field .checkbox:not(.toggle):not(.slider) .box:before, .ui.form .field.error .checkbox:not(.toggle):not(.slider) .box:before { background: #fff6f6; border-color: #e0b4b4; } .ui.form .fields.error .field .checkbox label:after, .ui.form .field.error .checkbox label:after, .ui.form .fields.error .field .checkbox .box:after, .ui.form .field.error .checkbox .box:after { color: #9f3a38; } /*-------------------- Disabled ---------------------*/ .ui.form .disabled.fields .field, .ui.form .disabled.field, .ui.form .field :disabled { pointer-events: none; opacity: 0.45; } .ui.form .field.disabled label { opacity: 0.45; } .ui.form .field.disabled :disabled { opacity: 1; } /*-------------- Loading ---------------*/ .ui.loading.form { position: relative; cursor: default; point-events: none; } .ui.loading.form:before { position: absolute; content: ''; top: 0%; left: 0%; background: rgba(255, 255, 255, 0.8); width: 100%; height: 100%; z-index: 100; } .ui.loading.form:after { position: absolute; content: ''; top: 50%; left: 50%; margin: -1.5em 0em 0em -1.5em; width: 3em; height: 3em; -webkit-animation: form-spin 0.6s linear; animation: form-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1); border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; visibility: visible; z-index: 101; } @-webkit-keyframes form-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes form-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /******************************* Element Types *******************************/ /*-------------------- Required Field ---------------------*/ .ui.form .required.fields:not(.grouped) > .field > label:after, .ui.form .required.fields.grouped > label:after, .ui.form .required.field > label:after, .ui.form .required.fields:not(.grouped) > .field > .checkbox:after, .ui.form .required.field > .checkbox:after { margin: -0.2em 0em 0em 0.2em; content: '*'; color: #db2828; } .ui.form .required.fields:not(.grouped) > .field > label:after, .ui.form .required.fields.grouped > label:after, .ui.form .required.field > label:after { display: inline-block; vertical-align: top; } .ui.form .required.fields:not(.grouped) > .field > .checkbox:after, .ui.form .required.field > .checkbox:after { position: absolute; top: 0%; left: 100%; } /******************************* Variations *******************************/ /*-------------------- Inverted Colors ---------------------*/ .ui.inverted.form label, .ui.form .inverted.segment label, .ui.form .inverted.segment .ui.checkbox label, .ui.form .inverted.segment .ui.checkbox .box, .ui.inverted.form .ui.checkbox label, .ui.inverted.form .ui.checkbox .box { color: rgba(255, 255, 255, 0.9); } /* Inverted Field */ .ui.inverted.form input:not([type]), .ui.inverted.form input[type="date"], .ui.inverted.form input[type="datetime-local"], .ui.inverted.form input[type="email"], .ui.inverted.form input[type="number"], .ui.inverted.form input[type="password"], .ui.inverted.form input[type="search"], .ui.inverted.form input[type="tel"], .ui.inverted.form input[type="time"], .ui.inverted.form input[type="text"], .ui.inverted.form input[type="url"] { background: #ffffff; border-color: rgba(255, 255, 255, 0.1); color: rgba(0, 0, 0, 0.87); box-shadow: none; } /*-------------------- Field Groups ---------------------*/ /* Grouped Vertically */ .ui.form .grouped.fields { display: block; margin: 0em 0em 1em; } .ui.form .grouped.fields:last-child { margin-bottom: 0em; } .ui.form .grouped.fields > label { margin: 0em 0em 0.28571429rem 0em; color: rgba(0, 0, 0, 0.87); font-size: 0.92857143em; font-weight: bold; text-transform: none; } .ui.form .grouped.fields .field, .ui.form .grouped.inline.fields .field { display: block; margin: 0.5em 0em; padding: 0em; } /*-------------------- Fields ---------------------*/ /* Split fields */ .ui.form .fields { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } .ui.form .fields > .field { -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; padding-left: 0.5em; padding-right: 0.5em; } .ui.form .fields > .field:first-child { border-left: none; box-shadow: none; } /* Other Combinations */ .ui.form .two.fields > .fields, .ui.form .two.fields > .field { width: 50%; } .ui.form .three.fields > .fields, .ui.form .three.fields > .field { width: 33.33333333%; } .ui.form .four.fields > .fields, .ui.form .four.fields > .field { width: 25%; } .ui.form .five.fields > .fields, .ui.form .five.fields > .field { width: 20%; } .ui.form .six.fields > .fields, .ui.form .six.fields > .field { width: 16.66666667%; } .ui.form .seven.fields > .fields, .ui.form .seven.fields > .field { width: 14.28571429%; } .ui.form .eight.fields > .fields, .ui.form .eight.fields > .field { width: 12.5%; } .ui.form .nine.fields > .fields, .ui.form .nine.fields > .field { width: 11.11111111%; } .ui.form .ten.fields > .fields, .ui.form .ten.fields > .field { width: 10%; } /* Swap to full width on mobile */ @media only screen and (max-width: 767px) { .ui.form .fields { -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; } .ui.form .two.fields > .fields, .ui.form .two.fields > .field, .ui.form .three.fields > .fields, .ui.form .three.fields > .field, .ui.form .four.fields > .fields, .ui.form .four.fields > .field, .ui.form .five.fields > .fields, .ui.form .five.fields > .field, .ui.form .six.fields > .fields, .ui.form .six.fields > .field, .ui.form .seven.fields > .fields, .ui.form .seven.fields > .field, .ui.form .eight.fields > .fields, .ui.form .eight.fields > .field, .ui.form .nine.fields > .fields, .ui.form .nine.fields > .field, .ui.form .ten.fields > .fields, .ui.form .ten.fields > .field { width: 100% !important; margin: 0em 0em 1em; padding-left: 0%; padding-right: 0%; } } .ui.form .fields .field:first-child { padding-left: 0%; } .ui.form .fields .field:last-child { padding-right: 0%; } /* Sizing Combinations */ .ui.form .fields .wide.field { width: 6.25%; padding-left: 0.5em; padding-right: 0.5em; } .ui.form .fields .wide.field:first-child { padding-left: 0%; } .ui.form .fields .wide.field:last-child { padding-right: 0%; } .ui.form .one.wide.field { width: 6.25% !important; } .ui.form .two.wide.field { width: 12.5% !important; } .ui.form .three.wide.field { width: 18.75% !important; } .ui.form .four.wide.field { width: 25% !important; } .ui.form .five.wide.field { width: 31.25% !important; } .ui.form .six.wide.field { width: 37.5% !important; } .ui.form .seven.wide.field { width: 43.75% !important; } .ui.form .eight.wide.field { width: 50% !important; } .ui.form .nine.wide.field { width: 56.25% !important; } .ui.form .ten.wide.field { width: 62.5% !important; } .ui.form .eleven.wide.field { width: 68.75% !important; } .ui.form .twelve.wide.field { width: 75% !important; } .ui.form .thirteen.wide.field { width: 81.25% !important; } .ui.form .fourteen.wide.field { width: 87.5% !important; } .ui.form .fifteen.wide.field { width: 93.75% !important; } .ui.form .sixteen.wide.field { width: 100% !important; } /* Swap to full width on mobile */ @media only screen and (max-width: 767px) { .ui.form .two.fields > .fields, .ui.form .two.fields > .field, .ui.form .three.fields > .fields, .ui.form .three.fields > .field, .ui.form .four.fields > .fields, .ui.form .four.fields > .field, .ui.form .five.fields > .fields, .ui.form .five.fields > .field, .ui.form .fields > .two.wide.field, .ui.form .fields > .three.wide.field, .ui.form .fields > .four.wide.field, .ui.form .fields > .five.wide.field, .ui.form .fields > .six.wide.field, .ui.form .fields > .seven.wide.field, .ui.form .fields > .eight.wide.field, .ui.form .fields > .nine.wide.field, .ui.form .fields > .ten.wide.field, .ui.form .fields > .eleven.wide.field, .ui.form .fields > .twelve.wide.field, .ui.form .fields > .thirteen.wide.field, .ui.form .fields > .fourteen.wide.field, .ui.form .fields > .fifteen.wide.field, .ui.form .fields > .sixteen.wide.field { width: 100% !important; margin: 0em 0em 1em; padding-left: 0%; padding-right: 0%; } } /*-------------------- Equal Width ---------------------*/ .ui[class*="equal width"].form .fields > .field, .ui.form [class*="equal width"].fields > .field { width: 100%; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; } /*-------------------- Inline Fields ---------------------*/ .ui.form .inline.fields { margin: 0em 0em 1em; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } .ui.form .inline.fields .field { margin: 0em; padding: 0em 1em 0em 0em; } /* Inline Label */ .ui.form .inline.fields > label, .ui.form .inline.fields .field > label, .ui.form .inline.fields .field > p, .ui.form .inline.field > label, .ui.form .inline.field > p { display: inline-block; width: auto; margin-top: 0em; margin-bottom: 0em; vertical-align: baseline; font-size: 0.92857143em; font-weight: bold; color: rgba(0, 0, 0, 0.87); text-transform: none; } /* Grouped Inline Label */ .ui.form .inline.fields > label { margin: 0.035714em 1em 0em 0em; } /* Inline Input */ .ui.form .inline.fields .field > input, .ui.form .inline.fields .field > select, .ui.form .inline.field > input, .ui.form .inline.field > select { display: inline-block; width: auto; margin-top: 0em; margin-bottom: 0em; vertical-align: middle; font-size: 1em; } /* Label */ .ui.form .inline.fields .field > :first-child, .ui.form .inline.field > :first-child { margin: 0em 0.85714286em 0em 0em; } .ui.form .inline.fields .field > :only-child, .ui.form .inline.field > :only-child { margin: 0em; } /* Wide */ .ui.form .inline.fields .wide.field { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } .ui.form .inline.fields .wide.field > input, .ui.form .inline.fields .wide.field > select { width: 100%; } /*-------------------- Sizes ---------------------*/ /* Standard */ .ui.small.form { font-size: 0.92857143rem; } /* Medium */ .ui.form { font-size: 1rem; } /* Large */ .ui.large.form { font-size: 1.14285714rem; } /* Huge */ .ui.huge.form { font-size: 1.42857143rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Grid * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ .ui.grid { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch; padding: 0em; } /*---------------------- Remove Gutters -----------------------*/ .ui.grid { margin-top: -1rem; margin-bottom: -1rem; margin-left: -1rem; margin-right: -1rem; } .ui.relaxed.grid { margin-left: -1.5rem; margin-right: -1.5rem; } .ui[class*="very relaxed"].grid { margin-left: -2.5rem; margin-right: -2.5rem; } /* Preserve Rows Spacing on Consecutive Grids */ .ui.grid + .grid { margin-top: 1rem; } /*------------------- Columns --------------------*/ /* Standard 16 column */ .ui.grid > .column:not(.row), .ui.grid > .row > .column { position: relative; display: inline-block; width: 6.25%; padding-left: 1rem; padding-right: 1rem; vertical-align: top; } .ui.grid > * { padding-left: 1rem; padding-right: 1rem; } /*------------------- Rows --------------------*/ .ui.grid > .row { position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; -webkit-box-pack: inherit; -webkit-justify-content: inherit; -ms-flex-pack: inherit; justify-content: inherit; -webkit-box-align: stretch; -webkit-align-items: stretch; -ms-flex-align: stretch; align-items: stretch; width: 100% !important; padding: 0rem; padding-top: 1rem; padding-bottom: 1rem; } /*------------------- Columns --------------------*/ /* Vertical padding when no rows */ .ui.grid > .column:not(.row) { padding-top: 1rem; padding-bottom: 1rem; } .ui.grid > .row > .column { margin-top: 0em; margin-bottom: 0em; } /*------------------- Content --------------------*/ .ui.grid > .row > img, .ui.grid > .row > .column > img { max-width: 100%; } /*------------------- Loose Coupling --------------------*/ /* Collapse Margin on Consecutive Grid */ .ui.grid > .ui.grid:first-child { margin-top: 0em; } .ui.grid > .ui.grid:last-child { margin-bottom: 0em; } /* Segment inside Aligned Grid */ .ui.grid .aligned.row > .column > .segment:not(.compact):not(.attached), .ui.aligned.grid .column > .segment:not(.compact):not(.attached) { width: 100%; } /* Align Dividers with Gutter */ .ui.grid .row + .ui.divider { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; margin: 1rem 1rem; } .ui.grid .column + .ui.vertical.divider { height: calc(50% - 1rem ); } /* Remove Border on Last Horizontal Segment */ .ui.grid > .row > .column:last-child > .horizontal.segment, .ui.grid > .column:last-child > .horizontal.segment { box-shadow: none; } /******************************* Variations *******************************/ /*----------------------- Page Grid -------------------------*/ @media only screen and (max-width: 767px) { .ui.page.grid { width: auto; padding-left: 0em; padding-right: 0em; margin-left: 0em; margin-right: 0em; } } @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.page.grid { width: auto; margin-left: 0em; margin-right: 0em; padding-left: 2em; padding-right: 2em; } } @media only screen and (min-width: 992px) and (max-width: 1199px) { .ui.page.grid { width: auto; margin-left: 0em; margin-right: 0em; padding-left: 3%; padding-right: 3%; } } @media only screen and (min-width: 1200px) and (max-width: 1919px) { .ui.page.grid { width: auto; margin-left: 0em; margin-right: 0em; padding-left: 15%; padding-right: 15%; } } @media only screen and (min-width: 1920px) { .ui.page.grid { width: auto; margin-left: 0em; margin-right: 0em; padding-left: 23%; padding-right: 23%; } } /*------------------- Column Count --------------------*/ /* Assume full width with one column */ .ui.grid > .column:only-child, .ui.grid > .row > .column:only-child { width: 100%; } /* Grid Based */ .ui[class*="one column"].grid > .row > .column, .ui[class*="one column"].grid > .column:not(.row) { width: 100%; } .ui[class*="two column"].grid > .row > .column, .ui[class*="two column"].grid > .column:not(.row) { width: 50%; } .ui[class*="three column"].grid > .row > .column, .ui[class*="three column"].grid > .column:not(.row) { width: 33.33333333%; } .ui[class*="four column"].grid > .row > .column, .ui[class*="four column"].grid > .column:not(.row) { width: 25%; } .ui[class*="five column"].grid > .row > .column, .ui[class*="five column"].grid > .column:not(.row) { width: 20%; } .ui[class*="six column"].grid > .row > .column, .ui[class*="six column"].grid > .column:not(.row) { width: 16.66666667%; } .ui[class*="seven column"].grid > .row > .column, .ui[class*="seven column"].grid > .column:not(.row) { width: 14.28571429%; } .ui[class*="eight column"].grid > .row > .column, .ui[class*="eight column"].grid > .column:not(.row) { width: 12.5%; } .ui[class*="nine column"].grid > .row > .column, .ui[class*="nine column"].grid > .column:not(.row) { width: 11.11111111%; } .ui[class*="ten column"].grid > .row > .column, .ui[class*="ten column"].grid > .column:not(.row) { width: 10%; } .ui[class*="eleven column"].grid > .row > .column, .ui[class*="eleven column"].grid > .column:not(.row) { width: 9.09090909%; } .ui[class*="twelve column"].grid > .row > .column, .ui[class*="twelve column"].grid > .column:not(.row) { width: 8.33333333%; } .ui[class*="thirteen column"].grid > .row > .column, .ui[class*="thirteen column"].grid > .column:not(.row) { width: 7.69230769%; } .ui[class*="fourteen column"].grid > .row > .column, .ui[class*="fourteen column"].grid > .column:not(.row) { width: 7.14285714%; } .ui[class*="fifteen column"].grid > .row > .column, .ui[class*="fifteen column"].grid > .column:not(.row) { width: 6.66666667%; } .ui[class*="sixteen column"].grid > .row > .column, .ui[class*="sixteen column"].grid > .column:not(.row) { width: 6.25%; } /* Row Based Overrides */ .ui.grid > [class*="one column"].row > .column { width: 100% !important; } .ui.grid > [class*="two column"].row > .column { width: 50% !important; } .ui.grid > [class*="three column"].row > .column { width: 33.33333333% !important; } .ui.grid > [class*="four column"].row > .column { width: 25% !important; } .ui.grid > [class*="five column"].row > .column { width: 20% !important; } .ui.grid > [class*="six column"].row > .column { width: 16.66666667% !important; } .ui.grid > [class*="seven column"].row > .column { width: 14.28571429% !important; } .ui.grid > [class*="eight column"].row > .column { width: 12.5% !important; } .ui.grid > [class*="nine column"].row > .column { width: 11.11111111% !important; } .ui.grid > [class*="ten column"].row > .column { width: 10% !important; } .ui.grid > [class*="eleven column"].row > .column { width: 9.09090909% !important; } .ui.grid > [class*="twelve column"].row > .column { width: 8.33333333% !important; } .ui.grid > [class*="thirteen column"].row > .column { width: 7.69230769% !important; } .ui.grid > [class*="fourteen column"].row > .column { width: 7.14285714% !important; } .ui.grid > [class*="fifteen column"].row > .column { width: 6.66666667% !important; } .ui.grid > [class*="sixteen column"].row > .column { width: 6.25% !important; } /* Celled Page */ .ui.celled.page.grid { box-shadow: none; } /*------------------- Column Width --------------------*/ /* Sizing Combinations */ .ui.grid > .row > [class*="one wide"].column, .ui.grid > .column.row > [class*="one wide"].column, .ui.grid > [class*="one wide"].column, .ui.column.grid > [class*="one wide"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide"].column, .ui.grid > .column.row > [class*="two wide"].column, .ui.grid > [class*="two wide"].column, .ui.column.grid > [class*="two wide"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide"].column, .ui.grid > .column.row > [class*="three wide"].column, .ui.grid > [class*="three wide"].column, .ui.column.grid > [class*="three wide"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide"].column, .ui.grid > .column.row > [class*="four wide"].column, .ui.grid > [class*="four wide"].column, .ui.column.grid > [class*="four wide"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide"].column, .ui.grid > .column.row > [class*="five wide"].column, .ui.grid > [class*="five wide"].column, .ui.column.grid > [class*="five wide"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide"].column, .ui.grid > .column.row > [class*="six wide"].column, .ui.grid > [class*="six wide"].column, .ui.column.grid > [class*="six wide"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide"].column, .ui.grid > .column.row > [class*="seven wide"].column, .ui.grid > [class*="seven wide"].column, .ui.column.grid > [class*="seven wide"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide"].column, .ui.grid > .column.row > [class*="eight wide"].column, .ui.grid > [class*="eight wide"].column, .ui.column.grid > [class*="eight wide"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide"].column, .ui.grid > .column.row > [class*="nine wide"].column, .ui.grid > [class*="nine wide"].column, .ui.column.grid > [class*="nine wide"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide"].column, .ui.grid > .column.row > [class*="ten wide"].column, .ui.grid > [class*="ten wide"].column, .ui.column.grid > [class*="ten wide"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide"].column, .ui.grid > .column.row > [class*="eleven wide"].column, .ui.grid > [class*="eleven wide"].column, .ui.column.grid > [class*="eleven wide"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide"].column, .ui.grid > .column.row > [class*="twelve wide"].column, .ui.grid > [class*="twelve wide"].column, .ui.column.grid > [class*="twelve wide"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide"].column, .ui.grid > .column.row > [class*="thirteen wide"].column, .ui.grid > [class*="thirteen wide"].column, .ui.column.grid > [class*="thirteen wide"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide"].column, .ui.grid > .column.row > [class*="fourteen wide"].column, .ui.grid > [class*="fourteen wide"].column, .ui.column.grid > [class*="fourteen wide"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide"].column, .ui.grid > .column.row > [class*="fifteen wide"].column, .ui.grid > [class*="fifteen wide"].column, .ui.column.grid > [class*="fifteen wide"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide"].column, .ui.grid > .column.row > [class*="sixteen wide"].column, .ui.grid > [class*="sixteen wide"].column, .ui.column.grid > [class*="sixteen wide"].column { width: 100% !important; } /*---------------------- Width per Device -----------------------*/ /* Mobile Sizing Combinations */ @media only screen and (min-width: 320px) and (max-width: 767px) { .ui.grid > .row > [class*="one wide mobile"].column, .ui.grid > .column.row > [class*="one wide mobile"].column, .ui.grid > [class*="one wide mobile"].column, .ui.column.grid > [class*="one wide mobile"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide mobile"].column, .ui.grid > .column.row > [class*="two wide mobile"].column, .ui.grid > [class*="two wide mobile"].column, .ui.column.grid > [class*="two wide mobile"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide mobile"].column, .ui.grid > .column.row > [class*="three wide mobile"].column, .ui.grid > [class*="three wide mobile"].column, .ui.column.grid > [class*="three wide mobile"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide mobile"].column, .ui.grid > .column.row > [class*="four wide mobile"].column, .ui.grid > [class*="four wide mobile"].column, .ui.column.grid > [class*="four wide mobile"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide mobile"].column, .ui.grid > .column.row > [class*="five wide mobile"].column, .ui.grid > [class*="five wide mobile"].column, .ui.column.grid > [class*="five wide mobile"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide mobile"].column, .ui.grid > .column.row > [class*="six wide mobile"].column, .ui.grid > [class*="six wide mobile"].column, .ui.column.grid > [class*="six wide mobile"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide mobile"].column, .ui.grid > .column.row > [class*="seven wide mobile"].column, .ui.grid > [class*="seven wide mobile"].column, .ui.column.grid > [class*="seven wide mobile"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide mobile"].column, .ui.grid > .column.row > [class*="eight wide mobile"].column, .ui.grid > [class*="eight wide mobile"].column, .ui.column.grid > [class*="eight wide mobile"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide mobile"].column, .ui.grid > .column.row > [class*="nine wide mobile"].column, .ui.grid > [class*="nine wide mobile"].column, .ui.column.grid > [class*="nine wide mobile"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide mobile"].column, .ui.grid > .column.row > [class*="ten wide mobile"].column, .ui.grid > [class*="ten wide mobile"].column, .ui.column.grid > [class*="ten wide mobile"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide mobile"].column, .ui.grid > .column.row > [class*="eleven wide mobile"].column, .ui.grid > [class*="eleven wide mobile"].column, .ui.column.grid > [class*="eleven wide mobile"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide mobile"].column, .ui.grid > .column.row > [class*="twelve wide mobile"].column, .ui.grid > [class*="twelve wide mobile"].column, .ui.column.grid > [class*="twelve wide mobile"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide mobile"].column, .ui.grid > .column.row > [class*="thirteen wide mobile"].column, .ui.grid > [class*="thirteen wide mobile"].column, .ui.column.grid > [class*="thirteen wide mobile"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide mobile"].column, .ui.grid > .column.row > [class*="fourteen wide mobile"].column, .ui.grid > [class*="fourteen wide mobile"].column, .ui.column.grid > [class*="fourteen wide mobile"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide mobile"].column, .ui.grid > .column.row > [class*="fifteen wide mobile"].column, .ui.grid > [class*="fifteen wide mobile"].column, .ui.column.grid > [class*="fifteen wide mobile"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide mobile"].column, .ui.grid > .column.row > [class*="sixteen wide mobile"].column, .ui.grid > [class*="sixteen wide mobile"].column, .ui.column.grid > [class*="sixteen wide mobile"].column { width: 100% !important; } } /* Tablet Sizing Combinations */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.grid > .row > [class*="one wide tablet"].column, .ui.grid > .column.row > [class*="one wide tablet"].column, .ui.grid > [class*="one wide tablet"].column, .ui.column.grid > [class*="one wide tablet"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide tablet"].column, .ui.grid > .column.row > [class*="two wide tablet"].column, .ui.grid > [class*="two wide tablet"].column, .ui.column.grid > [class*="two wide tablet"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide tablet"].column, .ui.grid > .column.row > [class*="three wide tablet"].column, .ui.grid > [class*="three wide tablet"].column, .ui.column.grid > [class*="three wide tablet"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide tablet"].column, .ui.grid > .column.row > [class*="four wide tablet"].column, .ui.grid > [class*="four wide tablet"].column, .ui.column.grid > [class*="four wide tablet"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide tablet"].column, .ui.grid > .column.row > [class*="five wide tablet"].column, .ui.grid > [class*="five wide tablet"].column, .ui.column.grid > [class*="five wide tablet"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide tablet"].column, .ui.grid > .column.row > [class*="six wide tablet"].column, .ui.grid > [class*="six wide tablet"].column, .ui.column.grid > [class*="six wide tablet"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide tablet"].column, .ui.grid > .column.row > [class*="seven wide tablet"].column, .ui.grid > [class*="seven wide tablet"].column, .ui.column.grid > [class*="seven wide tablet"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide tablet"].column, .ui.grid > .column.row > [class*="eight wide tablet"].column, .ui.grid > [class*="eight wide tablet"].column, .ui.column.grid > [class*="eight wide tablet"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide tablet"].column, .ui.grid > .column.row > [class*="nine wide tablet"].column, .ui.grid > [class*="nine wide tablet"].column, .ui.column.grid > [class*="nine wide tablet"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide tablet"].column, .ui.grid > .column.row > [class*="ten wide tablet"].column, .ui.grid > [class*="ten wide tablet"].column, .ui.column.grid > [class*="ten wide tablet"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide tablet"].column, .ui.grid > .column.row > [class*="eleven wide tablet"].column, .ui.grid > [class*="eleven wide tablet"].column, .ui.column.grid > [class*="eleven wide tablet"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide tablet"].column, .ui.grid > .column.row > [class*="twelve wide tablet"].column, .ui.grid > [class*="twelve wide tablet"].column, .ui.column.grid > [class*="twelve wide tablet"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide tablet"].column, .ui.grid > .column.row > [class*="thirteen wide tablet"].column, .ui.grid > [class*="thirteen wide tablet"].column, .ui.column.grid > [class*="thirteen wide tablet"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide tablet"].column, .ui.grid > .column.row > [class*="fourteen wide tablet"].column, .ui.grid > [class*="fourteen wide tablet"].column, .ui.column.grid > [class*="fourteen wide tablet"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide tablet"].column, .ui.grid > .column.row > [class*="fifteen wide tablet"].column, .ui.grid > [class*="fifteen wide tablet"].column, .ui.column.grid > [class*="fifteen wide tablet"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide tablet"].column, .ui.grid > .column.row > [class*="sixteen wide tablet"].column, .ui.grid > [class*="sixteen wide tablet"].column, .ui.column.grid > [class*="sixteen wide tablet"].column { width: 100% !important; } } /* Computer/Desktop Sizing Combinations */ @media only screen and (min-width: 992px) { .ui.grid > .row > [class*="one wide computer"].column, .ui.grid > .column.row > [class*="one wide computer"].column, .ui.grid > [class*="one wide computer"].column, .ui.column.grid > [class*="one wide computer"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide computer"].column, .ui.grid > .column.row > [class*="two wide computer"].column, .ui.grid > [class*="two wide computer"].column, .ui.column.grid > [class*="two wide computer"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide computer"].column, .ui.grid > .column.row > [class*="three wide computer"].column, .ui.grid > [class*="three wide computer"].column, .ui.column.grid > [class*="three wide computer"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide computer"].column, .ui.grid > .column.row > [class*="four wide computer"].column, .ui.grid > [class*="four wide computer"].column, .ui.column.grid > [class*="four wide computer"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide computer"].column, .ui.grid > .column.row > [class*="five wide computer"].column, .ui.grid > [class*="five wide computer"].column, .ui.column.grid > [class*="five wide computer"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide computer"].column, .ui.grid > .column.row > [class*="six wide computer"].column, .ui.grid > [class*="six wide computer"].column, .ui.column.grid > [class*="six wide computer"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide computer"].column, .ui.grid > .column.row > [class*="seven wide computer"].column, .ui.grid > [class*="seven wide computer"].column, .ui.column.grid > [class*="seven wide computer"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide computer"].column, .ui.grid > .column.row > [class*="eight wide computer"].column, .ui.grid > [class*="eight wide computer"].column, .ui.column.grid > [class*="eight wide computer"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide computer"].column, .ui.grid > .column.row > [class*="nine wide computer"].column, .ui.grid > [class*="nine wide computer"].column, .ui.column.grid > [class*="nine wide computer"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide computer"].column, .ui.grid > .column.row > [class*="ten wide computer"].column, .ui.grid > [class*="ten wide computer"].column, .ui.column.grid > [class*="ten wide computer"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide computer"].column, .ui.grid > .column.row > [class*="eleven wide computer"].column, .ui.grid > [class*="eleven wide computer"].column, .ui.column.grid > [class*="eleven wide computer"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide computer"].column, .ui.grid > .column.row > [class*="twelve wide computer"].column, .ui.grid > [class*="twelve wide computer"].column, .ui.column.grid > [class*="twelve wide computer"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide computer"].column, .ui.grid > .column.row > [class*="thirteen wide computer"].column, .ui.grid > [class*="thirteen wide computer"].column, .ui.column.grid > [class*="thirteen wide computer"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide computer"].column, .ui.grid > .column.row > [class*="fourteen wide computer"].column, .ui.grid > [class*="fourteen wide computer"].column, .ui.column.grid > [class*="fourteen wide computer"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide computer"].column, .ui.grid > .column.row > [class*="fifteen wide computer"].column, .ui.grid > [class*="fifteen wide computer"].column, .ui.column.grid > [class*="fifteen wide computer"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide computer"].column, .ui.grid > .column.row > [class*="sixteen wide computer"].column, .ui.grid > [class*="sixteen wide computer"].column, .ui.column.grid > [class*="sixteen wide computer"].column { width: 100% !important; } } /* Large Monitor Sizing Combinations */ @media only screen and (min-width: 1200px) and (max-width: 1919px) { .ui.grid > .row > [class*="one wide large screen"].column, .ui.grid > .column.row > [class*="one wide large screen"].column, .ui.grid > [class*="one wide large screen"].column, .ui.column.grid > [class*="one wide large screen"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide large screen"].column, .ui.grid > .column.row > [class*="two wide large screen"].column, .ui.grid > [class*="two wide large screen"].column, .ui.column.grid > [class*="two wide large screen"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide large screen"].column, .ui.grid > .column.row > [class*="three wide large screen"].column, .ui.grid > [class*="three wide large screen"].column, .ui.column.grid > [class*="three wide large screen"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide large screen"].column, .ui.grid > .column.row > [class*="four wide large screen"].column, .ui.grid > [class*="four wide large screen"].column, .ui.column.grid > [class*="four wide large screen"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide large screen"].column, .ui.grid > .column.row > [class*="five wide large screen"].column, .ui.grid > [class*="five wide large screen"].column, .ui.column.grid > [class*="five wide large screen"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide large screen"].column, .ui.grid > .column.row > [class*="six wide large screen"].column, .ui.grid > [class*="six wide large screen"].column, .ui.column.grid > [class*="six wide large screen"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide large screen"].column, .ui.grid > .column.row > [class*="seven wide large screen"].column, .ui.grid > [class*="seven wide large screen"].column, .ui.column.grid > [class*="seven wide large screen"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide large screen"].column, .ui.grid > .column.row > [class*="eight wide large screen"].column, .ui.grid > [class*="eight wide large screen"].column, .ui.column.grid > [class*="eight wide large screen"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide large screen"].column, .ui.grid > .column.row > [class*="nine wide large screen"].column, .ui.grid > [class*="nine wide large screen"].column, .ui.column.grid > [class*="nine wide large screen"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide large screen"].column, .ui.grid > .column.row > [class*="ten wide large screen"].column, .ui.grid > [class*="ten wide large screen"].column, .ui.column.grid > [class*="ten wide large screen"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide large screen"].column, .ui.grid > .column.row > [class*="eleven wide large screen"].column, .ui.grid > [class*="eleven wide large screen"].column, .ui.column.grid > [class*="eleven wide large screen"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide large screen"].column, .ui.grid > .column.row > [class*="twelve wide large screen"].column, .ui.grid > [class*="twelve wide large screen"].column, .ui.column.grid > [class*="twelve wide large screen"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide large screen"].column, .ui.grid > .column.row > [class*="thirteen wide large screen"].column, .ui.grid > [class*="thirteen wide large screen"].column, .ui.column.grid > [class*="thirteen wide large screen"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide large screen"].column, .ui.grid > .column.row > [class*="fourteen wide large screen"].column, .ui.grid > [class*="fourteen wide large screen"].column, .ui.column.grid > [class*="fourteen wide large screen"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide large screen"].column, .ui.grid > .column.row > [class*="fifteen wide large screen"].column, .ui.grid > [class*="fifteen wide large screen"].column, .ui.column.grid > [class*="fifteen wide large screen"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide large screen"].column, .ui.grid > .column.row > [class*="sixteen wide large screen"].column, .ui.grid > [class*="sixteen wide large screen"].column, .ui.column.grid > [class*="sixteen wide large screen"].column { width: 100% !important; } } /* Widescreen Sizing Combinations */ @media only screen and (min-width: 1920px) { .ui.grid > .row > [class*="one wide widescreen"].column, .ui.grid > .column.row > [class*="one wide widescreen"].column, .ui.grid > [class*="one wide widescreen"].column, .ui.column.grid > [class*="one wide widescreen"].column { width: 6.25% !important; } .ui.grid > .row > [class*="two wide widescreen"].column, .ui.grid > .column.row > [class*="two wide widescreen"].column, .ui.grid > [class*="two wide widescreen"].column, .ui.column.grid > [class*="two wide widescreen"].column { width: 12.5% !important; } .ui.grid > .row > [class*="three wide widescreen"].column, .ui.grid > .column.row > [class*="three wide widescreen"].column, .ui.grid > [class*="three wide widescreen"].column, .ui.column.grid > [class*="three wide widescreen"].column { width: 18.75% !important; } .ui.grid > .row > [class*="four wide widescreen"].column, .ui.grid > .column.row > [class*="four wide widescreen"].column, .ui.grid > [class*="four wide widescreen"].column, .ui.column.grid > [class*="four wide widescreen"].column { width: 25% !important; } .ui.grid > .row > [class*="five wide widescreen"].column, .ui.grid > .column.row > [class*="five wide widescreen"].column, .ui.grid > [class*="five wide widescreen"].column, .ui.column.grid > [class*="five wide widescreen"].column { width: 31.25% !important; } .ui.grid > .row > [class*="six wide widescreen"].column, .ui.grid > .column.row > [class*="six wide widescreen"].column, .ui.grid > [class*="six wide widescreen"].column, .ui.column.grid > [class*="six wide widescreen"].column { width: 37.5% !important; } .ui.grid > .row > [class*="seven wide widescreen"].column, .ui.grid > .column.row > [class*="seven wide widescreen"].column, .ui.grid > [class*="seven wide widescreen"].column, .ui.column.grid > [class*="seven wide widescreen"].column { width: 43.75% !important; } .ui.grid > .row > [class*="eight wide widescreen"].column, .ui.grid > .column.row > [class*="eight wide widescreen"].column, .ui.grid > [class*="eight wide widescreen"].column, .ui.column.grid > [class*="eight wide widescreen"].column { width: 50% !important; } .ui.grid > .row > [class*="nine wide widescreen"].column, .ui.grid > .column.row > [class*="nine wide widescreen"].column, .ui.grid > [class*="nine wide widescreen"].column, .ui.column.grid > [class*="nine wide widescreen"].column { width: 56.25% !important; } .ui.grid > .row > [class*="ten wide widescreen"].column, .ui.grid > .column.row > [class*="ten wide widescreen"].column, .ui.grid > [class*="ten wide widescreen"].column, .ui.column.grid > [class*="ten wide widescreen"].column { width: 62.5% !important; } .ui.grid > .row > [class*="eleven wide widescreen"].column, .ui.grid > .column.row > [class*="eleven wide widescreen"].column, .ui.grid > [class*="eleven wide widescreen"].column, .ui.column.grid > [class*="eleven wide widescreen"].column { width: 68.75% !important; } .ui.grid > .row > [class*="twelve wide widescreen"].column, .ui.grid > .column.row > [class*="twelve wide widescreen"].column, .ui.grid > [class*="twelve wide widescreen"].column, .ui.column.grid > [class*="twelve wide widescreen"].column { width: 75% !important; } .ui.grid > .row > [class*="thirteen wide widescreen"].column, .ui.grid > .column.row > [class*="thirteen wide widescreen"].column, .ui.grid > [class*="thirteen wide widescreen"].column, .ui.column.grid > [class*="thirteen wide widescreen"].column { width: 81.25% !important; } .ui.grid > .row > [class*="fourteen wide widescreen"].column, .ui.grid > .column.row > [class*="fourteen wide widescreen"].column, .ui.grid > [class*="fourteen wide widescreen"].column, .ui.column.grid > [class*="fourteen wide widescreen"].column { width: 87.5% !important; } .ui.grid > .row > [class*="fifteen wide widescreen"].column, .ui.grid > .column.row > [class*="fifteen wide widescreen"].column, .ui.grid > [class*="fifteen wide widescreen"].column, .ui.column.grid > [class*="fifteen wide widescreen"].column { width: 93.75% !important; } .ui.grid > .row > [class*="sixteen wide widescreen"].column, .ui.grid > .column.row > [class*="sixteen wide widescreen"].column, .ui.grid > [class*="sixteen wide widescreen"].column, .ui.column.grid > [class*="sixteen wide widescreen"].column { width: 100% !important; } } /*---------------------- Centered -----------------------*/ .ui.centered.grid, .ui.centered.grid > .row, .ui.grid > .centered.row { text-align: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .ui.centered.grid > .column:not(.aligned):not(.row), .ui.centered.grid > .row > .column:not(.aligned), .ui.grid .centered.row > .column:not(.aligned) { text-align: left; } .ui.grid > .centered.column, .ui.grid > .row > .centered.column { display: block; margin-left: auto; margin-right: auto; } /*---------------------- Relaxed -----------------------*/ .ui.relaxed.grid > .column:not(.row), .ui.relaxed.grid > .row > .column, .ui.grid > .relaxed.row > .column { padding-left: 1.5rem; padding-right: 1.5rem; } .ui[class*="very relaxed"].grid > .column:not(.row), .ui[class*="very relaxed"].grid > .row > .column, .ui.grid > [class*="very relaxed"].row > .column { padding-left: 2.5rem; padding-right: 2.5rem; } /* Coupling with UI Divider */ .ui.relaxed.grid .row + .ui.divider, .ui.grid .relaxed.row + .ui.divider { margin-left: 1.5rem; margin-right: 1.5rem; } .ui[class*="very relaxed"].grid .row + .ui.divider, .ui.grid [class*="very relaxed"].row + .ui.divider { margin-left: 2.5rem; margin-right: 2.5rem; } /*---------------------- Padded -----------------------*/ .ui.padded.grid:not(.vertically):not(.horizontally) { margin: 0em !important; } [class*="horizontally padded"].ui.grid { margin-left: 0em !important; margin-right: 0em !important; } [class*="vertically padded"].ui.grid { margin-top: 0em !important; margin-bottom: 0em !important; } /*---------------------- "Floated" -----------------------*/ .ui.grid [class*="left floated"].column { margin-right: auto; } .ui.grid [class*="right floated"].column { margin-left: auto; } /*---------------------- Divided -----------------------*/ .ui.divided.grid:not([class*="vertically divided"]) > .column:not(.row), .ui.divided.grid:not([class*="vertically divided"]) > .row > .column { box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); } /* Swap from padding to margin on columns to have dividers align */ .ui[class*="vertically divided"].grid > .column:not(.row), .ui[class*="vertically divided"].grid > .row > .column { margin-top: 1rem; margin-bottom: 1rem; padding-top: 0rem; padding-bottom: 0rem; } .ui[class*="vertically divided"].grid > .row { margin-top: 0em; margin-bottom: 0em; } /* No divider on first column on row */ .ui.divided.grid:not([class*="vertically divided"]) > .column:first-child, .ui.divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { box-shadow: none; } /* Divided Row */ .ui.grid > .divided.row > .column { box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); } .ui.grid > .divided.row > .column:first-child { box-shadow: none; } /* Vertically Divided */ .ui[class*="vertically divided"].grid > .row { position: relative; } .ui[class*="vertically divided"].grid > .row:before { position: absolute; content: ""; top: 0em; left: 0px; width: calc(100% - 2rem ); height: 1px; margin: 0% 1rem; box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); } /* Padded Horizontally Divided */ [class*="horizontally padded"].ui.divided.grid, .ui.padded.divided.grid:not(.vertically):not(.horizontally) { width: 100%; } /* First Row Vertically Divided */ .ui[class*="vertically divided"].grid > .row:first-child:before { box-shadow: none; } /* Inverted Divided */ .ui.inverted.divided.grid:not([class*="vertically divided"]) > .column:not(.row), .ui.inverted.divided.grid:not([class*="vertically divided"]) > .row > .column { box-shadow: -1px 0px 0px 0px rgba(255, 255, 255, 0.1); } .ui.inverted.divided.grid:not([class*="vertically divided"]) > .column:not(.row):first-child, .ui.inverted.divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { box-shadow: none; } .ui.inverted[class*="vertically divided"].grid > .row:before { box-shadow: 0px -1px 0px 0px rgba(255, 255, 255, 0.1); } /* Relaxed */ .ui.relaxed[class*="vertically divided"].grid > .row:before { margin-left: 1.5rem; margin-right: 1.5rem; width: calc(100% - 3rem ); } .ui[class*="very relaxed"][class*="vertically divided"].grid > .row:before { margin-left: 5rem; margin-right: 5rem; width: calc(100% - 5rem ); } /*---------------------- Celled -----------------------*/ .ui.celled.grid { width: 100%; margin: 1em 0em; box-shadow: 0px 0px 0px 1px #d4d4d5; } .ui.celled.grid > .row { width: 100% !important; margin: 0em; padding: 0em; box-shadow: 0px -1px 0px 0px #d4d4d5; } .ui.celled.grid > .column:not(.row), .ui.celled.grid > .row > .column { box-shadow: -1px 0px 0px 0px #d4d4d5; } .ui.celled.grid > .column:first-child, .ui.celled.grid > .row > .column:first-child { box-shadow: none; } .ui.celled.grid > .column:not(.row), .ui.celled.grid > .row > .column { padding: 1em; } .ui.relaxed.celled.grid > .column:not(.row), .ui.relaxed.celled.grid > .row > .column { padding: 1.5em; } .ui[class*="very relaxed"].celled.grid > .column:not(.row), .ui[class*="very relaxed"].celled.grid > .row > .column { padding: 2em; } /* Internally Celled */ .ui[class*="internally celled"].grid { box-shadow: none; margin: 0em; } .ui[class*="internally celled"].grid > .row:first-child { box-shadow: none; } .ui[class*="internally celled"].grid > .row > .column:first-child { box-shadow: none; } /*---------------------- Vertically Aligned -----------------------*/ /* Top Aligned */ .ui[class*="top aligned"].grid > .column:not(.row), .ui[class*="top aligned"].grid > .row > .column, .ui.grid > [class*="top aligned"].row > .column, .ui.grid > [class*="top aligned"].column:not(.row), .ui.grid > .row > [class*="top aligned"].column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; vertical-align: top; -webkit-align-self: flex-start !important; -ms-flex-item-align: start !important; align-self: flex-start !important; } /* Middle Aligned */ .ui[class*="middle aligned"].grid > .column:not(.row), .ui[class*="middle aligned"].grid > .row > .column, .ui.grid > [class*="middle aligned"].row > .column, .ui.grid > [class*="middle aligned"].column:not(.row), .ui.grid > .row > [class*="middle aligned"].column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; vertical-align: middle; -webkit-align-self: center !important; -ms-flex-item-align: center !important; align-self: center !important; } /* Bottom Aligned */ .ui[class*="bottom aligned"].grid > .column:not(.row), .ui[class*="bottom aligned"].grid > .row > .column, .ui.grid > [class*="bottom aligned"].row > .column, .ui.grid > [class*="bottom aligned"].column:not(.row), .ui.grid > .row > [class*="bottom aligned"].column { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; vertical-align: bottom; -webkit-align-self: flex-end !important; -ms-flex-item-align: end !important; align-self: flex-end !important; } /* Stretched */ .ui.stretched.grid > .row > .column, .ui.stretched.grid > .column, .ui.grid > .stretched.row > .column, .ui.grid > .stretched.column:not(.row), .ui.grid > .row > .stretched.column { display: -webkit-inline-box !important; display: -webkit-inline-flex !important; display: -ms-inline-flexbox !important; display: inline-flex !important; -webkit-align-self: stretch; -ms-flex-item-align: stretch; align-self: stretch; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .ui.stretched.grid > .row > .column > *, .ui.stretched.grid > .column > *, .ui.grid > .stretched.row > .column > *, .ui.grid > .stretched.column:not(.row) > *, .ui.grid > .row > .stretched.column > * { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; } /*---------------------- Horizontally Centered -----------------------*/ /* Left Aligned */ .ui[class*="left aligned"].grid > .column, .ui[class*="left aligned"].grid > .row > .column, .ui.grid > [class*="left aligned"].row > .column, .ui.grid > [class*="left aligned"].column.column, .ui.grid > .row > [class*="left aligned"].column { text-align: left; -webkit-align-self: inherit; -ms-flex-item-align: inherit; align-self: inherit; } /* Center Aligned */ .ui[class*="center aligned"].grid > .column, .ui[class*="center aligned"].grid > .row > .column, .ui.grid > [class*="center aligned"].row > .column, .ui.grid > [class*="center aligned"].column.column, .ui.grid > .row > [class*="center aligned"].column { text-align: center; -webkit-align-self: inherit; -ms-flex-item-align: inherit; align-self: inherit; } .ui[class*="center aligned"].grid { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } /* Right Aligned */ .ui[class*="right aligned"].grid > .column, .ui[class*="right aligned"].grid > .row > .column, .ui.grid > [class*="right aligned"].row > .column, .ui.grid > [class*="right aligned"].column.column, .ui.grid > .row > [class*="right aligned"].column { text-align: right; -webkit-align-self: inherit; -ms-flex-item-align: inherit; align-self: inherit; } /* Justified */ .ui.justified.grid > .column, .ui.justified.grid > .row > .column, .ui.grid > .justified.row > .column, .ui.grid > .justified.column.column, .ui.grid > .row > .justified.column { text-align: justify; -webkit-hyphens: auto; -moz-hyphens: auto; -ms-hyphens: auto; hyphens: auto; } /*---------------------- Colored -----------------------*/ .ui.grid > .row > .red.column, .ui.grid > .row > .orange.column, .ui.grid > .row > .yellow.column, .ui.grid > .row > .olive.column, .ui.grid > .row > .green.column, .ui.grid > .row > .teal.column, .ui.grid > .row > .blue.column, .ui.grid > .row > .violet.column, .ui.grid > .row > .purple.column, .ui.grid > .row > .pink.column, .ui.grid > .row > .brown.column, .ui.grid > .row > .grey.column, .ui.grid > .row > .black.column { margin-top: -1rem; margin-bottom: -1rem; padding-top: 1rem; padding-bottom: 1rem; } /* Red */ .ui.grid > .red.row, .ui.grid > .red.column, .ui.grid > .row > .red.column { background-color: #db2828 !important; color: #ffffff; } /* Orange */ .ui.grid > .orange.row, .ui.grid > .orange.column, .ui.grid > .row > .orange.column { background-color: #f2711c !important; color: #ffffff; } /* Yellow */ .ui.grid > .yellow.row, .ui.grid > .yellow.column, .ui.grid > .row > .yellow.column { background-color: #fbbd08 !important; color: #ffffff; } /* Olive */ .ui.grid > .olive.row, .ui.grid > .olive.column, .ui.grid > .row > .olive.column { background-color: #b5cc18 !important; color: #ffffff; } /* Green */ .ui.grid > .green.row, .ui.grid > .green.column, .ui.grid > .row > .green.column { background-color: #21ba45 !important; color: #ffffff; } /* Teal */ .ui.grid > .teal.row, .ui.grid > .teal.column, .ui.grid > .row > .teal.column { background-color: #00b5ad !important; color: #ffffff; } /* Blue */ .ui.grid > .blue.row, .ui.grid > .blue.column, .ui.grid > .row > .blue.column { background-color: #2185d0 !important; color: #ffffff; } /* Violet */ .ui.grid > .violet.row, .ui.grid > .violet.column, .ui.grid > .row > .violet.column { background-color: #6435c9 !important; color: #ffffff; } /* Purple */ .ui.grid > .purple.row, .ui.grid > .purple.column, .ui.grid > .row > .purple.column { background-color: #a333c8 !important; color: #ffffff; } /* Pink */ .ui.grid > .pink.row, .ui.grid > .pink.column, .ui.grid > .row > .pink.column { background-color: #e03997 !important; color: #ffffff; } /* Brown */ .ui.grid > .brown.row, .ui.grid > .brown.column, .ui.grid > .row > .brown.column { background-color: #a5673f !important; color: #ffffff; } /* Grey */ .ui.grid > .grey.row, .ui.grid > .grey.column, .ui.grid > .row > .grey.column { background-color: #767676 !important; color: #ffffff; } /* Black */ .ui.grid > .black.row, .ui.grid > .black.column, .ui.grid > .row > .black.column { background-color: #1b1c1d !important; color: #ffffff; } /*---------------------- Equal Width -----------------------*/ .ui[class*="equal width"].grid > .column:not(.row), .ui[class*="equal width"].grid > .row > .column, .ui.grid > [class*="equal width"].row > .column { display: inline-block; -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; } .ui[class*="equal width"].grid > .wide.column, .ui[class*="equal width"].grid > .row > .wide.column, .ui.grid > [class*="equal width"].row > .wide.column { -webkit-box-flex: 0; -webkit-flex-grow: 0; -ms-flex-positive: 0; flex-grow: 0; } /*---------------------- Reverse -----------------------*/ /* Mobile */ @media only screen and (max-width: 767px) { .ui[class*="mobile reversed"].grid, .ui[class*="mobile reversed"].grid > .row, .ui.grid > [class*="mobile reversed"].row { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -webkit-flex-direction: row-reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .ui[class*="mobile vertically reversed"].grid, .ui.stackable[class*="mobile reversed"] { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -webkit-flex-direction: column-reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } /* Divided Reversed */ .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); } .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, .ui[class*="mobile reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { box-shadow: none; } /* Vertically Divided Reversed */ .ui.grid[class*="vertically divided"][class*="mobile vertically reversed"] > .row:first-child:before { box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); } .ui.grid[class*="vertically divided"][class*="mobile vertically reversed"] > .row:last-child:before { box-shadow: none; } /* Celled Reversed */ .ui[class*="mobile reversed"].celled.grid > .row > .column:first-child { box-shadow: -1px 0px 0px 0px #d4d4d5; } .ui[class*="mobile reversed"].celled.grid > .row > .column:last-child { box-shadow: none; } } /* Tablet */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui[class*="tablet reversed"].grid, .ui[class*="tablet reversed"].grid > .row, .ui.grid > [class*="tablet reversed"].row { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -webkit-flex-direction: row-reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .ui[class*="tablet vertically reversed"].grid { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -webkit-flex-direction: column-reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } /* Divided Reversed */ .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); } .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, .ui[class*="tablet reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { box-shadow: none; } /* Vertically Divided Reversed */ .ui.grid[class*="vertically divided"][class*="tablet vertically reversed"] > .row:first-child:before { box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); } .ui.grid[class*="vertically divided"][class*="tablet vertically reversed"] > .row:last-child:before { box-shadow: none; } /* Celled Reversed */ .ui[class*="tablet reversed"].celled.grid > .row > .column:first-child { box-shadow: -1px 0px 0px 0px #d4d4d5; } .ui[class*="tablet reversed"].celled.grid > .row > .column:last-child { box-shadow: none; } } /* Computer */ @media only screen and (min-width: 992px) { .ui[class*="computer reversed"].grid, .ui[class*="computer reversed"].grid > .row, .ui.grid > [class*="computer reversed"].row { -webkit-box-orient: horizontal; -webkit-box-direction: reverse; -webkit-flex-direction: row-reverse; -ms-flex-direction: row-reverse; flex-direction: row-reverse; } .ui[class*="computer vertically reversed"].grid { -webkit-box-orient: vertical; -webkit-box-direction: reverse; -webkit-flex-direction: column-reverse; -ms-flex-direction: column-reverse; flex-direction: column-reverse; } /* Divided Reversed */ .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .column:first-child, .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:first-child { box-shadow: -1px 0px 0px 0px rgba(34, 36, 38, 0.15); } .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .column:last-child, .ui[class*="computer reversed"].divided.grid:not([class*="vertically divided"]) > .row > .column:last-child { box-shadow: none; } /* Vertically Divided Reversed */ .ui.grid[class*="vertically divided"][class*="computer vertically reversed"] > .row:first-child:before { box-shadow: 0px -1px 0px 0px rgba(34, 36, 38, 0.15); } .ui.grid[class*="vertically divided"][class*="computer vertically reversed"] > .row:last-child:before { box-shadow: none; } /* Celled Reversed */ .ui[class*="computer reversed"].celled.grid > .row > .column:first-child { box-shadow: -1px 0px 0px 0px #d4d4d5; } .ui[class*="computer reversed"].celled.grid > .row > .column:last-child { box-shadow: none; } } /*------------------- Doubling --------------------*/ /* Tablet Only */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.doubling.grid { width: auto; } .ui.grid > .doubling.row, .ui.doubling.grid > .row { margin: 0em !important; padding: 0em !important; } .ui.grid > .doubling.row > .column, .ui.doubling.grid > .row > .column { display: inline-block !important; padding-top: 1rem !important; padding-bottom: 1rem !important; box-shadow: none !important; margin: 0em; } .ui[class*="two column"].doubling.grid > .row > .column, .ui[class*="two column"].doubling.grid > .column:not(.row), .ui.grid > [class*="two column"].doubling.row.row > .column { width: 100% !important; } .ui[class*="three column"].doubling.grid > .row > .column, .ui[class*="three column"].doubling.grid > .column:not(.row), .ui.grid > [class*="three column"].doubling.row.row > .column { width: 50% !important; } .ui[class*="four column"].doubling.grid > .row > .column, .ui[class*="four column"].doubling.grid > .column:not(.row), .ui.grid > [class*="four column"].doubling.row.row > .column { width: 50% !important; } .ui[class*="five column"].doubling.grid > .row > .column, .ui[class*="five column"].doubling.grid > .column:not(.row), .ui.grid > [class*="five column"].doubling.row.row > .column { width: 33.33333333% !important; } .ui[class*="six column"].doubling.grid > .row > .column, .ui[class*="six column"].doubling.grid > .column:not(.row), .ui.grid > [class*="six column"].doubling.row.row > .column { width: 33.33333333% !important; } .ui[class*="seven column"].doubling.grid > .row > .column, .ui[class*="seven column"].doubling.grid > .column:not(.row), .ui.grid > [class*="seven column"].doubling.row.row > .column { width: 33.33333333% !important; } .ui[class*="eight column"].doubling.grid > .row > .column, .ui[class*="eight column"].doubling.grid > .column:not(.row), .ui.grid > [class*="eight column"].doubling.row.row > .column { width: 25% !important; } .ui[class*="nine column"].doubling.grid > .row > .column, .ui[class*="nine column"].doubling.grid > .column:not(.row), .ui.grid > [class*="nine column"].doubling.row.row > .column { width: 25% !important; } .ui[class*="ten column"].doubling.grid > .row > .column, .ui[class*="ten column"].doubling.grid > .column:not(.row), .ui.grid > [class*="ten column"].doubling.row.row > .column { width: 20% !important; } .ui[class*="eleven column"].doubling.grid > .row > .column, .ui[class*="eleven column"].doubling.grid > .column:not(.row), .ui.grid > [class*="eleven column"].doubling.row.row > .column { width: 20% !important; } .ui[class*="twelve column"].doubling.grid > .row > .column, .ui[class*="twelve column"].doubling.grid > .column:not(.row), .ui.grid > [class*="twelve column"].doubling.row.row > .column { width: 16.66666667% !important; } .ui[class*="thirteen column"].doubling.grid > .row > .column, .ui[class*="thirteen column"].doubling.grid > .column:not(.row), .ui.grid > [class*="thirteen column"].doubling.row.row > .column { width: 16.66666667% !important; } .ui[class*="fourteen column"].doubling.grid > .row > .column, .ui[class*="fourteen column"].doubling.grid > .column:not(.row), .ui.grid > [class*="fourteen column"].doubling.row.row > .column { width: 14.28571429% !important; } .ui[class*="fifteen column"].doubling.grid > .row > .column, .ui[class*="fifteen column"].doubling.grid > .column:not(.row), .ui.grid > [class*="fifteen column"].doubling.row.row > .column { width: 14.28571429% !important; } .ui[class*="sixteen column"].doubling.grid > .row > .column, .ui[class*="sixteen column"].doubling.grid > .column:not(.row), .ui.grid > [class*="sixteen column"].doubling.row.row > .column { width: 12.5% !important; } } /* Mobily Only */ @media only screen and (max-width: 767px) { .ui.grid > .doubling.row, .ui.doubling.grid > .row { margin: 0em !important; padding: 0em !important; } .ui.grid > .doubling.row > .column, .ui.doubling.grid > .row > .column { padding-top: 1rem !important; padding-bottom: 1rem !important; margin: 0em !important; box-shadow: none !important; } .ui[class*="two column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="two column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="two column"].doubling:not(.stackable).row.row > .column { width: 100% !important; } .ui[class*="three column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="three column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="three column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="four column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="four column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="four column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="five column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="five column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="five column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="six column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="six column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="six column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="seven column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="seven column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="seven column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="eight column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="eight column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="eight column"].doubling:not(.stackable).row.row > .column { width: 50% !important; } .ui[class*="nine column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="nine column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="nine column"].doubling:not(.stackable).row.row > .column { width: 33.33333333% !important; } .ui[class*="ten column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="ten column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="ten column"].doubling:not(.stackable).row.row > .column { width: 33.33333333% !important; } .ui[class*="eleven column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="eleven column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="eleven column"].doubling:not(.stackable).row.row > .column { width: 33.33333333% !important; } .ui[class*="twelve column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="twelve column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="twelve column"].doubling:not(.stackable).row.row > .column { width: 33.33333333% !important; } .ui[class*="thirteen column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="thirteen column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="thirteen column"].doubling:not(.stackable).row.row > .column { width: 33.33333333% !important; } .ui[class*="fourteen column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="fourteen column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="fourteen column"].doubling:not(.stackable).row.row > .column { width: 25% !important; } .ui[class*="fifteen column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="fifteen column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="fifteen column"].doubling:not(.stackable).row.row > .column { width: 25% !important; } .ui[class*="sixteen column"].doubling:not(.stackable).grid > .row > .column, .ui[class*="sixteen column"].doubling:not(.stackable).grid > .column:not(.row), .ui.grid > [class*="sixteen column"].doubling:not(.stackable).row.row > .column { width: 25% !important; } } /*------------------- Stackable --------------------*/ @media only screen and (max-width: 767px) { .ui.stackable.grid { width: auto; margin-left: 0em !important; margin-right: 0em !important; } .ui.stackable.grid > .row > .wide.column, .ui.stackable.grid > .wide.column, .ui.stackable.grid > .column.grid > .column, .ui.stackable.grid > .column.row > .column, .ui.stackable.grid > .row > .column, .ui.stackable.grid > .column:not(.row), .ui.grid > .stackable.stackable.row > .column { width: 100% !important; margin: 0em 0em !important; box-shadow: none !important; padding: 1rem 1rem !important; } .ui.stackable.grid:not(.vertically) > .row { margin: 0em; padding: 0em; } /* Coupling */ .ui.container > .ui.stackable.grid > .column, .ui.container > .ui.stackable.grid > .row > .column { padding-left: 0em !important; padding-right: 0em !important; } /* Don't pad inside segment or nested grid */ .ui.grid .ui.stackable.grid, .ui.segment:not(.vertical) .ui.stackable.page.grid { margin-left: -1rem !important; margin-right: -1rem !important; } /* Divided Stackable */ .ui.stackable.divided.grid > .row:first-child > .column:first-child, .ui.stackable.celled.grid > .row:first-child > .column:first-child, .ui.stackable.divided.grid > .column:not(.row):first-child, .ui.stackable.celled.grid > .column:not(.row):first-child { border-top: none !important; } .ui.inverted.stackable.celled.grid > .column:not(.row), .ui.inverted.stackable.divided.grid > .column:not(.row), .ui.inverted.stackable.celled.grid > .row > .column, .ui.inverted.stackable.divided.grid > .row > .column { border-top: 1px solid rgba(255, 255, 255, 0.1); } .ui.stackable.celled.grid > .column:not(.row), .ui.stackable.divided:not(.vertically).grid > .column:not(.row), .ui.stackable.celled.grid > .row > .column, .ui.stackable.divided:not(.vertically).grid > .row > .column { border-top: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none !important; padding-top: 2rem !important; padding-bottom: 2rem !important; } .ui.stackable.celled.grid > .row { box-shadow: none !important; } .ui.stackable.divided:not(.vertically).grid > .column:not(.row), .ui.stackable.divided:not(.vertically).grid > .row > .column { padding-left: 0em !important; padding-right: 0em !important; } } /*---------------------- Only (Device) -----------------------*/ /* These include arbitrary class repetitions for forced specificity */ /* Mobile Only Hide */ @media only screen and (max-width: 767px) { .ui[class*="tablet only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="tablet only"].row:not(.mobile), .ui.grid.grid.grid > [class*="tablet only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.mobile) { display: none !important; } .ui[class*="computer only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="computer only"].row:not(.mobile), .ui.grid.grid.grid > [class*="computer only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="computer only"].column:not(.mobile) { display: none !important; } .ui[class*="large screen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { display: none !important; } .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { display: none !important; } } /* Tablet Only Hide */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui[class*="mobile only"].grid.grid.grid:not(.tablet), .ui.grid.grid.grid > [class*="mobile only"].row:not(.tablet), .ui.grid.grid.grid > [class*="mobile only"].column:not(.tablet), .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.tablet) { display: none !important; } .ui[class*="computer only"].grid.grid.grid:not(.tablet), .ui.grid.grid.grid > [class*="computer only"].row:not(.tablet), .ui.grid.grid.grid > [class*="computer only"].column:not(.tablet), .ui.grid.grid.grid > .row > [class*="computer only"].column:not(.tablet) { display: none !important; } .ui[class*="large screen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { display: none !important; } .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { display: none !important; } } /* Computer Only Hide */ @media only screen and (min-width: 992px) and (max-width: 1199px) { .ui[class*="mobile only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { display: none !important; } .ui[class*="tablet only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { display: none !important; } .ui[class*="large screen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="large screen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="large screen only"].column:not(.mobile) { display: none !important; } .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { display: none !important; } } /* Large Screen Only Hide */ @media only screen and (min-width: 1200px) and (max-width: 1919px) { .ui[class*="mobile only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { display: none !important; } .ui[class*="tablet only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { display: none !important; } .ui[class*="widescreen only"].grid.grid.grid:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].row:not(.mobile), .ui.grid.grid.grid > [class*="widescreen only"].column:not(.mobile), .ui.grid.grid.grid > .row > [class*="widescreen only"].column:not(.mobile) { display: none !important; } } /* Widescreen Only Hide */ @media only screen and (min-width: 1920px) { .ui[class*="mobile only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].row:not(.computer), .ui.grid.grid.grid > [class*="mobile only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="mobile only"].column:not(.computer) { display: none !important; } .ui[class*="tablet only"].grid.grid.grid:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].row:not(.computer), .ui.grid.grid.grid > [class*="tablet only"].column:not(.computer), .ui.grid.grid.grid > .row > [class*="tablet only"].column:not(.computer) { display: none !important; } } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /* * # Semantic - Menu * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributor * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ /*-------------- Menu ---------------*/ .ui.menu { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 1rem 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; background: #ffffff; font-weight: normal; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; min-height: 2.85714286em; } .ui.menu:after { content: ''; display: block; height: 0px; clear: both; visibility: hidden; } .ui.menu:first-child { margin-top: 0rem; } .ui.menu:last-child { margin-bottom: 0rem; } /*-------------- Sub-Menu ---------------*/ .ui.menu .menu { margin: 0em; } .ui.menu:not(.vertical) > .menu { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } /*-------------- Item ---------------*/ .ui.menu:not(.vertical) .item { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } .ui.menu .item { position: relative; vertical-align: middle; line-height: 1; text-decoration: none; -webkit-tap-highlight-color: transparent; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; background: none; padding: 0.92857143em 1.14285714em; text-transform: none; color: rgba(0, 0, 0, 0.87); font-weight: normal; -webkit-transition: background 0.1s ease, box-shadow 0.1s ease, color 0.1s ease; transition: background 0.1s ease, box-shadow 0.1s ease, color 0.1s ease; } .ui.menu > .item:first-child { border-radius: 0.28571429rem 0px 0px 0.28571429rem; } /* Border */ .ui.menu .item:before { position: absolute; content: ''; top: 0%; right: 0px; height: 100%; width: 1px; background: rgba(34, 36, 38, 0.1); } /*-------------- Text Content ---------------*/ .ui.menu .text.item > *, .ui.menu .item > a:not(.ui), .ui.menu .item > p:only-child { -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; line-height: 1.3; } .ui.menu .item > p:first-child { margin-top: 0; } .ui.menu .item > p:last-child { margin-bottom: 0; } /*-------------- Icons ---------------*/ .ui.menu .item > i.icon { opacity: 0.9; float: none; margin: 0em 0.35714286em 0em 0em; } /*-------------- Button ---------------*/ .ui.menu:not(.vertical) .item > .button { position: relative; top: 0em; margin: -0.5em 0em; padding-bottom: 0.71428571em; padding-top: 0.71428571em; font-size: 1em; } /*---------------- Grid / Container -----------------*/ .ui.menu > .grid, .ui.menu > .container { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: inherit; -webkit-align-items: inherit; -ms-flex-align: inherit; align-items: inherit; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: inherit; -ms-flex-direction: inherit; flex-direction: inherit; } /*-------------- Inputs ---------------*/ .ui.menu .item > .input { width: 100%; } .ui.menu:not(.vertical) .item > .input { position: relative; top: 0em; margin: -0.5em 0em; } .ui.menu .item > .input input { font-size: 1em; padding-top: 0.57142857em; padding-bottom: 0.57142857em; } /*-------------- Header ---------------*/ .ui.menu .header.item, .ui.vertical.menu .header.item { margin: 0em; background: ''; text-transform: normal; font-weight: bold; } .ui.vertical.menu .item > .header:not(.ui) { margin: 0em 0em 0.5em; font-size: 1em; font-weight: bold; } /*-------------- Popup ---------------*/ .ui.menu .ui.popup { display: none; } .ui.menu .ui.visible.popup { display: block; } /*-------------- Dropdowns ---------------*/ /* Dropdown Icon */ .ui.menu .item > i.dropdown.icon { padding: 0em; float: right; margin: 0em 0em 0em 1em; } /* Menu */ .ui.menu .dropdown.item .menu { left: 0px; min-width: calc(100% - 1px); border-radius: 0em 0em 0.28571429rem 0.28571429rem; background: #ffffff; margin: 0em 0px 0px; box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.08); -webkit-box-orient: vertical !important; -webkit-box-direction: normal !important; -webkit-flex-direction: column !important; -ms-flex-direction: column !important; flex-direction: column !important; } /* Menu Items */ .ui.menu .ui.dropdown .menu > .item { margin: 0; text-align: left; font-size: 1em !important; padding: 0.71428571em 1.14285714em !important; background: transparent !important; color: rgba(0, 0, 0, 0.87) !important; text-transform: none !important; font-weight: normal !important; box-shadow: none !important; -webkit-transition: none !important; transition: none !important; } .ui.menu .ui.dropdown .menu > .item:hover { background: rgba(0, 0, 0, 0.05) !important; color: rgba(0, 0, 0, 0.95) !important; } .ui.menu .ui.dropdown .menu > .selected.item { background: rgba(0, 0, 0, 0.05) !important; color: rgba(0, 0, 0, 0.95) !important; } .ui.menu .ui.dropdown .menu > .active.item { background: rgba(0, 0, 0, 0.03) !important; font-weight: bold !important; color: rgba(0, 0, 0, 0.95) !important; } .ui.menu .ui.dropdown.item .menu .item:not(.filtered) { display: block; } .ui.menu .ui.dropdown .menu > .item .icon:not(.dropdown) { display: inline-block; font-size: 1em !important; float: none; margin: 0em 0.75em 0em 0em; } /* Secondary */ .ui.secondary.menu .dropdown.item > .menu, .ui.text.menu .dropdown.item > .menu { border-radius: 0.28571429rem; margin-top: 0.35714286em; } /* Pointing */ .ui.menu .pointing.dropdown.item .menu { margin-top: 0.75em; } /* Inverted */ .ui.inverted.menu .search.dropdown.item > .search, .ui.inverted.menu .search.dropdown.item > .text { color: rgba(255, 255, 255, 0.9); } /* Vertical */ .ui.vertical.menu .dropdown.item > .icon { float: right; content: "\f0da"; margin-left: 1em; } .ui.vertical.menu .dropdown.item .menu { top: 0% !important; left: 100%; min-width: 0; margin: 0em 0em 0em 0em; box-shadow: 0 1px 3px 0px rgba(0, 0, 0, 0.08); border-radius: 0em 0.28571429rem 0.28571429rem 0.28571429rem; } .ui.vertical.menu .active.dropdown.item { border-top-right-radius: 0em; border-bottom-right-radius: 0em; } .ui.vertical.menu .dropdown.active.item { box-shadow: none; } /* Evenly Divided */ .ui.item.menu .dropdown .menu .item { width: 100%; } /*-------------- Labels ---------------*/ .ui.menu .item > .label { background: #999999; color: #ffffff; margin-left: 1em; padding: 0.3em 0.71428571em; } .ui.vertical.menu .item > .label { background: #999999; color: #ffffff; margin-top: -0.15em; margin-bottom: -0.15em; padding: 0.3em 0.71428571em; } .ui.menu .item > .floating.label { padding: 0.3em 0.71428571em; } /*-------------- Images ---------------*/ .ui.menu .item > img:not(.ui) { display: inline-block; vertical-align: middle; margin: -0.3em 0em; width: 2.5em; } .ui.vertical.menu .item > img:not(.ui):only-child { display: block; max-width: 100%; width: auto; } /******************************* Coupling *******************************/ /*-------------- Sidebar ---------------*/ /* Show vertical dividers below last */ .ui.vertical.sidebar.menu > .item:first-child:before { display: block !important; } .ui.vertical.sidebar.menu > .item::before { top: auto; bottom: 0px; } /*-------------- Container ---------------*/ @media only screen and (max-width: 767px) { .ui.menu > .ui.container { width: 100% !important; margin-left: 0em !important; margin-right: 0em !important; } } @media only screen and (min-width: 768px) { .ui.menu:not(.secondary):not(.text):not(.tabular):not(.borderless) > .container > .item:not(.right):not(.borderless):first-child { border-left: 1px solid rgba(34, 36, 38, 0.1); } } /******************************* States *******************************/ /*-------------- Hover ---------------*/ .ui.link.menu .item:hover, .ui.menu .dropdown.item:hover, .ui.menu .link.item:hover, .ui.menu a.item:hover { cursor: pointer; background: rgba(0, 0, 0, 0.03); color: rgba(0, 0, 0, 0.95); } /*-------------- Pressed ---------------*/ .ui.link.menu .item:active, .ui.menu .link.item:active, .ui.menu a.item:active { background: rgba(0, 0, 0, 0.03); color: rgba(0, 0, 0, 0.95); } /*-------------- Active ---------------*/ .ui.menu .active.item { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); font-weight: normal; box-shadow: none; } .ui.menu .active.item > i.icon { opacity: 1; } /*-------------- Active Hover ---------------*/ .ui.menu .active.item:hover, .ui.vertical.menu .active.item:hover { background-color: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } /*-------------- Disabled ---------------*/ .ui.menu .item.disabled, .ui.menu .item.disabled:hover { cursor: default; background-color: transparent !important; color: rgba(40, 40, 40, 0.3); } /******************************* Types *******************************/ /*------------------ Floated Menu / Item -------------------*/ /* Left Floated */ .ui.menu:not(.vertical) .left.item, .ui.menu:not(.vertical) .left.menu { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin-right: auto !important; } /* Right Floated */ .ui.menu:not(.vertical) .right.item, .ui.menu:not(.vertical) .right.menu { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin-left: auto !important; } /* Swapped Borders */ .ui.menu .right.item::before, .ui.menu .right.menu > .item::before { right: auto; left: 0; } /*-------------- Vertical ---------------*/ .ui.vertical.menu { display: block; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; background: #ffffff; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15); } /*--- Item ---*/ .ui.vertical.menu .item { display: block; background: none; border-top: none; border-right: none; } .ui.vertical.menu > .item:first-child { border-radius: 0.28571429rem 0.28571429rem 0px 0px; } .ui.vertical.menu > .item:last-child { border-radius: 0px 0px 0.28571429rem 0.28571429rem; } /*--- Label ---*/ .ui.vertical.menu .item > .label { float: right; text-align: center; } /*--- Icon ---*/ .ui.vertical.menu .item > i.icon { width: 1.18em; float: right; margin: 0em 0em 0em 0.5em; } .ui.vertical.menu .item > .label + i.icon { float: none; margin: 0em 0.5em 0em 0em; } /*--- Border ---*/ .ui.vertical.menu .item:before { position: absolute; content: ''; top: 0%; left: 0px; width: 100%; background: rgba(34, 36, 38, 0.1); height: 1px; } .ui.vertical.menu .item:first-child:before { display: none !important; } /*--- Sub Menu ---*/ .ui.vertical.menu .item > .menu { margin: 0.5em -1.14285714em 0em; } .ui.vertical.menu .menu .item { background: none; padding: 0.5em 1.33333333em; font-size: 0.85714286em; color: rgba(0, 0, 0, 0.5); } .ui.vertical.menu .item .menu a.item:hover, .ui.vertical.menu .item .menu .link.item:hover { color: rgba(0, 0, 0, 0.85); } .ui.vertical.menu .menu .item:before { display: none; } /* Vertical Active */ .ui.vertical.menu .active.item { background: rgba(0, 0, 0, 0.05); border-radius: 0em; box-shadow: none; } .ui.vertical.menu > .active.item:first-child { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.vertical.menu > .active.item:last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.vertical.menu > .active.item:only-child { border-radius: 0.28571429rem; } .ui.vertical.menu .active.item .menu .active.item { border-left: none; } .ui.vertical.menu .item .menu .active.item { background-color: transparent; font-weight: bold; color: rgba(0, 0, 0, 0.95); } /*-------------- Tabular ---------------*/ .ui.tabular.menu { border-radius: 0em; box-shadow: none !important; border: none; background: none transparent; border-bottom: 1px solid #d4d4d5; } .ui.tabular.fluid.menu { width: calc(100% + 2px ) !important; } .ui.tabular.menu .item { background: transparent; border-bottom: none; border-left: 1px solid transparent; border-right: 1px solid transparent; border-top: 2px solid transparent; padding: 0.92857143em 1.42857143em; color: rgba(0, 0, 0, 0.87); } .ui.tabular.menu .item:before { display: none; } /* Hover */ .ui.tabular.menu .item:hover { background-color: transparent; color: rgba(0, 0, 0, 0.8); } /* Active */ .ui.tabular.menu .active.item { background: none #ffffff; color: rgba(0, 0, 0, 0.95); border-top-width: 1px; border-color: #d4d4d5; font-weight: bold; margin-bottom: -1px; box-shadow: none; border-radius: 0.28571429rem 0.28571429rem 0px 0px !important; } /* Coupling with segment for attachment */ .ui.tabular.menu + .attached:not(.top).segment, .ui.tabular.menu + .attached:not(.top).segment + .attached:not(.top).segment { border-top: none; margin: 0px; width: 100%; } .top.attached.segment + .ui.bottom.tabular.menu { position: relative; width: calc(100% + 2px ); left: -1px; } /* Bottom Vertical Tabular */ .ui.bottom.tabular.menu { background: none transparent; border-radius: 0em; box-shadow: none !important; border-bottom: none; border-top: 1px solid #d4d4d5; } .ui.bottom.tabular.menu .item { background: none; border-left: 1px solid transparent; border-right: 1px solid transparent; border-bottom: 1px solid transparent; border-top: none; } .ui.bottom.tabular.menu .active.item { background: none #ffffff; color: rgba(0, 0, 0, 0.95); border-color: #d4d4d5; margin: -1px 0px 0px 0px; border-radius: 0px 0px 0.28571429rem 0.28571429rem !important; } /* Vertical Tabular (Left) */ .ui.vertical.tabular.menu { background: none transparent; border-radius: 0em; box-shadow: none !important; border-bottom: none; border-right: 1px solid #d4d4d5; } .ui.vertical.tabular.menu .item { background: none; border-left: 1px solid transparent; border-bottom: 1px solid transparent; border-top: 1px solid transparent; border-right: none; } .ui.vertical.tabular.menu .active.item { background: none #ffffff; color: rgba(0, 0, 0, 0.95); border-color: #d4d4d5; margin: 0px -1px 0px 0px; border-radius: 0.28571429rem 0px 0px 0.28571429rem !important; } /* Vertical Right Tabular */ .ui.vertical.right.tabular.menu { background: none transparent; border-radius: 0em; box-shadow: none !important; border-bottom: none; border-right: none; border-left: 1px solid #d4d4d5; } .ui.vertical.right.tabular.menu .item { background: none; border-right: 1px solid transparent; border-bottom: 1px solid transparent; border-top: 1px solid transparent; border-left: none; } .ui.vertical.right.tabular.menu .active.item { background: none #ffffff; color: rgba(0, 0, 0, 0.95); border-color: #d4d4d5; margin: 0px 0px 0px -1px; border-radius: 0px 0.28571429rem 0.28571429rem 0px !important; } /* Dropdown */ .ui.tabular.menu .active.dropdown.item { margin-bottom: 0px; border-left: 1px solid transparent; border-right: 1px solid transparent; border-top: 2px solid transparent; border-bottom: none; } /*-------------- Pagination ---------------*/ .ui.pagination.menu { margin: 0em; display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; vertical-align: middle; } .ui.pagination.menu .item:last-child { border-radius: 0em 0.28571429rem 0.28571429rem 0em; } .ui.compact.menu .item:last-child { border-radius: 0em 0.28571429rem 0.28571429rem 0em; } .ui.pagination.menu .item:last-child:before { display: none; } .ui.pagination.menu .item { min-width: 3em; text-align: center; } .ui.pagination.menu .icon.item i.icon { vertical-align: top; } /* Active */ .ui.pagination.menu .active.item { border-top: none; padding-top: 0.92857143em; background-color: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); box-shadow: none; } /*-------------- Secondary ---------------*/ .ui.secondary.menu { background: none; margin-left: -0.35714286em; margin-right: -0.35714286em; border-radius: 0em; border: none; box-shadow: none; } /* Item */ .ui.secondary.menu .item { -webkit-align-self: center; -ms-flex-item-align: center; align-self: center; box-shadow: none; border: none; padding: 0.71428571em 0.92857143em; margin: 0em 0.35714286em; background: none; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; border-radius: 0.28571429rem; } /* No Divider */ .ui.secondary.menu .item:before { display: none !important; } /* Header */ .ui.secondary.menu .header.item { border-radius: 0em; border-right: none; background: none transparent; } /* Image */ .ui.secondary.menu .item > img:not(.ui) { margin: 0em; } /* Hover */ .ui.secondary.menu .dropdown.item:hover, .ui.secondary.menu .link.item:hover, .ui.secondary.menu a.item:hover { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } /* Active */ .ui.secondary.menu .active.item { box-shadow: none; background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); border-radius: 0.28571429rem; } /* Active Hover */ .ui.secondary.menu .active.item:hover { box-shadow: none; background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } /* Inverted */ .ui.secondary.inverted.menu .link.item, .ui.secondary.inverted.menu a.item { color: rgba(255, 255, 255, 0.7) !important; } .ui.secondary.inverted.menu .dropdown.item:hover, .ui.secondary.inverted.menu .link.item:hover, .ui.secondary.inverted.menu a.item:hover { background: rgba(255, 255, 255, 0.08); color: #ffffff !important; } .ui.secondary.inverted.menu .active.item { background: rgba(255, 255, 255, 0.15); color: #ffffff !important; } /* Fix item margins */ .ui.secondary.item.menu { margin-left: 0em; margin-right: 0em; } .ui.secondary.item.menu .item:last-child { margin-right: 0em; } .ui.secondary.attached.menu { box-shadow: none; } /* Sub Menu */ .ui.vertical.secondary.menu .item:not(.dropdown) > .menu { margin: 0em -0.92857143em; } .ui.vertical.secondary.menu .item:not(.dropdown) > .menu > .item { margin: 0em; padding: 0.5em 1.33333333em; } /*--------------------- Secondary Vertical -----------------------*/ .ui.secondary.vertical.menu > .item { border: none; margin: 0em 0em 0.35714286em; border-radius: 0.28571429rem !important; } .ui.secondary.vertical.menu > .header.item { border-radius: 0em; } /* Sub Menu */ .ui.vertical.secondary.menu .item > .menu .item { background-color: transparent; } /* Inverted */ .ui.secondary.inverted.menu { background-color: transparent; } /*--------------------- Secondary Pointing -----------------------*/ .ui.secondary.pointing.menu { margin-left: 0em; margin-right: 0em; border-bottom: 2px solid rgba(34, 36, 38, 0.15); } .ui.secondary.pointing.menu .item { border-bottom-color: transparent; border-bottom-style: solid; border-radius: 0em; -webkit-align-self: flex-end; -ms-flex-item-align: end; align-self: flex-end; margin: 0em 0em -2px; padding: 0.85714286em 1.14285714em; border-bottom-width: 2px; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } /* Item Types */ .ui.secondary.pointing.menu .header.item { color: rgba(0, 0, 0, 0.85) !important; } .ui.secondary.pointing.menu .text.item { box-shadow: none !important; } .ui.secondary.pointing.menu .item:after { display: none; } /* Hover */ .ui.secondary.pointing.menu .dropdown.item:hover, .ui.secondary.pointing.menu .link.item:hover, .ui.secondary.pointing.menu a.item:hover { background-color: transparent; color: rgba(0, 0, 0, 0.87); } /* Pressed */ .ui.secondary.pointing.menu .dropdown.item:active, .ui.secondary.pointing.menu .link.item:active, .ui.secondary.pointing.menu a.item:active { background-color: transparent; border-color: rgba(34, 36, 38, 0.15); } /* Active */ .ui.secondary.pointing.menu .active.item { background-color: transparent; box-shadow: none; border-color: #1b1c1d; font-weight: bold; color: rgba(0, 0, 0, 0.95); } /* Active Hover */ .ui.secondary.pointing.menu .active.item:hover { border-color: #1b1c1d; color: rgba(0, 0, 0, 0.95); } /* Active Dropdown */ .ui.secondary.pointing.menu .active.dropdown.item { border-color: transparent; } /* Vertical Pointing */ .ui.secondary.vertical.pointing.menu { border-bottom-width: 0px; border-right-width: 2px; border-right-style: solid; border-right-color: rgba(34, 36, 38, 0.15); } .ui.secondary.vertical.pointing.menu .item { border-bottom: none; border-right-style: solid; border-right-color: transparent; border-radius: 0em !important; margin: 0em -2px 0em 0em; border-right-width: 2px; } /* Vertical Active */ .ui.secondary.vertical.pointing.menu .active.item { border-color: #1b1c1d; } /* Inverted */ .ui.secondary.inverted.pointing.menu { border-color: rgba(255, 255, 255, 0.1); } .ui.secondary.inverted.pointing.menu { border-width: 2px; border-color: rgba(34, 36, 38, 0.15); } .ui.secondary.inverted.pointing.menu .item { color: rgba(255, 255, 255, 0.9); } .ui.secondary.inverted.pointing.menu .header.item { color: #ffffff !important; } /* Hover */ .ui.secondary.inverted.pointing.menu .item:hover { color: rgba(0, 0, 0, 0.95); } /* Active */ .ui.secondary.inverted.pointing.menu .active.item { border-color: #ffffff; color: #ffffff; } /*-------------- Text Menu ---------------*/ .ui.text.menu { background: none transparent; border-radius: 0px; box-shadow: none; border: none; margin: 1em -0.5em; } .ui.text.menu .item { border-radius: 0px; box-shadow: none; -webkit-align-self: center; -ms-flex-item-align: center; align-self: center; margin: 0em 0em; padding: 0.35714286em 0.5em; font-weight: normal; color: rgba(0, 0, 0, 0.6); -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } /* Border */ .ui.text.menu .item:before, .ui.text.menu .menu .item:before { display: none !important; } /* Header */ .ui.text.menu .header.item { background-color: transparent; opacity: 1; color: rgba(0, 0, 0, 0.85); font-size: 0.92857143em; text-transform: uppercase; font-weight: bold; } /* Image */ .ui.text.menu .item > img:not(.ui) { margin: 0em; } /*--- fluid text ---*/ .ui.text.item.menu .item { margin: 0em; } /*--- vertical text ---*/ .ui.vertical.text.menu { margin: 1em 0em; } .ui.vertical.text.menu:first-child { margin-top: 0rem; } .ui.vertical.text.menu:last-child { margin-bottom: 0rem; } .ui.vertical.text.menu .item { margin: 0.57142857em 0em; } .ui.vertical.text.menu .item > i.icon { float: none; margin: 0em 0.35714286em 0em 0em; } .ui.vertical.text.menu .header.item { margin: 0.57142857em 0em 0.71428571em; } /* Vertical Sub Menu */ .ui.vertical.text.menu .item:not(.dropdown) > .menu { margin: 0em; } .ui.vertical.text.menu .item:not(.dropdown) > .menu > .item { margin: 0em; padding: 0.5em 0em; } /*--- hover ---*/ .ui.text.menu .item:hover { opacity: 1; background-color: transparent; } /*--- active ---*/ .ui.text.menu .active.item { background-color: transparent; border: none; box-shadow: none; font-weight: normal; color: rgba(0, 0, 0, 0.95); } /*--- active hover ---*/ .ui.text.menu .active.item:hover { background-color: transparent; } /* Disable Bariations */ .ui.text.pointing.menu .active.item:after { box-shadow: none; } .ui.text.attached.menu { box-shadow: none; } /* Inverted */ .ui.inverted.text.menu, .ui.inverted.text.menu .item, .ui.inverted.text.menu .item:hover, .ui.inverted.text.menu .active.item { background-color: transparent !important; } /* Fluid */ .ui.fluid.text.menu { margin-left: 0em; margin-right: 0em; } /*-------------- Icon Only ---------------*/ /* Vertical Menu */ .ui.vertical.icon.menu { display: inline-block; width: auto; } /* Item */ .ui.icon.menu .item { height: auto; text-align: center; color: #1b1c1d; } /* Icon */ .ui.icon.menu .item > .icon:not(.dropdown) { margin: 0; opacity: 1; } /* Icon Gylph */ .ui.icon.menu .icon:before { opacity: 1; } /* (x) Item Icon */ .ui.menu .icon.item > .icon { width: auto; margin: 0em auto; } /* Vertical Icon */ .ui.vertical.icon.menu .item > .icon:not(.dropdown) { display: block; opacity: 1; margin: 0em auto; float: none; } /* Inverted */ .ui.inverted.icon.menu .item { color: #ffffff; } /*-------------- Labeled Icon ---------------*/ /* Menu */ .ui.labeled.icon.menu { text-align: center; } /* Item */ .ui.labeled.icon.menu .item { min-width: 6em; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } /* Icon */ .ui.labeled.icon.menu .item > .icon:not(.dropdown) { height: 1em; display: block; font-size: 1.71428571em !important; margin: 0em auto 0.5rem !important; } /* Fluid */ .ui.fluid.labeled.icon.menu > .item { min-width: 0em; } /******************************* Variations *******************************/ /*-------------- Stackable ---------------*/ @media only screen and (max-width: 767px) { .ui.stackable.menu { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .ui.stackable.menu .item { width: 100% !important; } .ui.stackable.menu .item:before { position: absolute; content: ''; top: auto; bottom: 0px; left: 0px; width: 100%; background: rgba(34, 36, 38, 0.1); height: 1px; } } /*-------------- Colors ---------------*/ /*--- Standard Colors ---*/ .ui.menu .red.active.item, .ui.red.menu .active.item { border-color: #db2828 !important; color: #db2828 !important; } .ui.menu .orange.active.item, .ui.orange.menu .active.item { border-color: #f2711c !important; color: #f2711c !important; } .ui.menu .yellow.active.item, .ui.yellow.menu .active.item { border-color: #fbbd08 !important; color: #fbbd08 !important; } .ui.menu .olive.active.item, .ui.olive.menu .active.item { border-color: #b5cc18 !important; color: #b5cc18 !important; } .ui.menu .green.active.item, .ui.green.menu .active.item { border-color: #21ba45 !important; color: #21ba45 !important; } .ui.menu .teal.active.item, .ui.teal.menu .active.item { border-color: #00b5ad !important; color: #00b5ad !important; } .ui.menu .blue.active.item, .ui.blue.menu .active.item { border-color: #2185d0 !important; color: #2185d0 !important; } .ui.menu .violet.active.item, .ui.violet.menu .active.item { border-color: #6435c9 !important; color: #6435c9 !important; } .ui.menu .purple.active.item, .ui.purple.menu .active.item { border-color: #a333c8 !important; color: #a333c8 !important; } .ui.menu .pink.active.item, .ui.pink.menu .active.item { border-color: #e03997 !important; color: #e03997 !important; } .ui.menu .brown.active.item, .ui.brown.menu .active.item { border-color: #a5673f !important; color: #a5673f !important; } .ui.menu .grey.active.item, .ui.grey.menu .active.item { border-color: #767676 !important; color: #767676 !important; } /*-------------- Inverted ---------------*/ .ui.inverted.menu { border: 0px solid transparent; background: #1b1c1d; box-shadow: none; } /* Menu Item */ .ui.inverted.menu .item, .ui.inverted.menu .item > a:not(.ui) { background: transparent; color: rgba(255, 255, 255, 0.9); } .ui.inverted.menu .item.menu { background: transparent; } /*--- Border ---*/ .ui.inverted.menu .item:before { background: rgba(255, 255, 255, 0.08); } .ui.vertical.inverted.menu .item:before { background: rgba(255, 255, 255, 0.08); } /* Sub Menu */ .ui.vertical.inverted.menu .menu .item, .ui.vertical.inverted.menu .menu .item a:not(.ui) { color: rgba(255, 255, 255, 0.5); } /* Header */ .ui.inverted.menu .header.item { margin: 0em; background: transparent; box-shadow: none; } /* Disabled */ .ui.inverted.menu .item.disabled, .ui.inverted.menu .item.disabled:hover { color: rgba(225, 225, 225, 0.3); } /*--- Hover ---*/ .ui.link.inverted.menu .item:hover, .ui.inverted.menu .dropdown.item:hover, .ui.inverted.menu .link.item:hover, .ui.inverted.menu a.item:hover { background: rgba(255, 255, 255, 0.08); color: #ffffff; } .ui.vertical.inverted.menu .item .menu a.item:hover, .ui.vertical.inverted.menu .item .menu .link.item:hover { background: transparent; color: #ffffff; } /*--- Pressed ---*/ .ui.inverted.menu a.item:active, .ui.inverted.menu .link.item:active, .ui.inverted.menu a.item:active { background: rgba(255, 255, 255, 0.08); color: #ffffff; } /*--- Active ---*/ .ui.inverted.menu .active.item { background: rgba(255, 255, 255, 0.15); color: #ffffff !important; } .ui.inverted.vertical.menu .item .menu .active.item { background: transparent; color: #ffffff; } .ui.inverted.pointing.menu .active.item:after { background: #3d3e3f !important; margin: 0em !important; box-shadow: none !important; border: none !important; } /*--- Active Hover ---*/ .ui.inverted.menu .active.item:hover { background: rgba(255, 255, 255, 0.15); color: #ffffff !important; } .ui.inverted.pointing.menu .active.item:hover:after { background: #3d3e3f !important; } /*-------------- Floated ---------------*/ .ui.floated.menu { float: left; margin: 0rem 0.5rem 0rem 0rem; } .ui.floated.menu .item:last-child:before { display: none; } .ui.right.floated.menu { float: right; margin: 0rem 0rem 0rem 0.5rem; } /*-------------- Inverted ---------------*/ /* Red */ .ui.inverted.menu .red.active.item, .ui.inverted.red.menu { background-color: #db2828; } .ui.inverted.red.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.red.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Orange */ .ui.inverted.menu .orange.active.item, .ui.inverted.orange.menu { background-color: #f2711c; } .ui.inverted.orange.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.orange.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Yellow */ .ui.inverted.menu .yellow.active.item, .ui.inverted.yellow.menu { background-color: #fbbd08; } .ui.inverted.yellow.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.yellow.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Olive */ .ui.inverted.menu .olive.active.item, .ui.inverted.olive.menu { background-color: #b5cc18; } .ui.inverted.olive.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.olive.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Green */ .ui.inverted.menu .green.active.item, .ui.inverted.green.menu { background-color: #21ba45; } .ui.inverted.green.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.green.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Teal */ .ui.inverted.menu .teal.active.item, .ui.inverted.teal.menu { background-color: #00b5ad; } .ui.inverted.teal.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.teal.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Blue */ .ui.inverted.menu .blue.active.item, .ui.inverted.blue.menu { background-color: #2185d0; } .ui.inverted.blue.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.blue.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Violet */ .ui.inverted.menu .violet.active.item, .ui.inverted.violet.menu { background-color: #6435c9; } .ui.inverted.violet.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.violet.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Purple */ .ui.inverted.menu .purple.active.item, .ui.inverted.purple.menu { background-color: #a333c8; } .ui.inverted.purple.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.purple.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Pink */ .ui.inverted.menu .pink.active.item, .ui.inverted.pink.menu { background-color: #e03997; } .ui.inverted.pink.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.pink.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Brown */ .ui.inverted.menu .brown.active.item, .ui.inverted.brown.menu { background-color: #a5673f; } .ui.inverted.brown.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.brown.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /* Grey */ .ui.inverted.menu .grey.active.item, .ui.inverted.grey.menu { background-color: #767676; } .ui.inverted.grey.menu .item:before { background-color: rgba(34, 36, 38, 0.1); } .ui.inverted.grey.menu .active.item { background-color: rgba(0, 0, 0, 0.1) !important; } /*-------------- Fitted ---------------*/ .ui.fitted.menu .item, .ui.fitted.menu .item .menu .item, .ui.menu .fitted.item { padding: 0em; } .ui.horizontally.fitted.menu .item, .ui.horizontally.fitted.menu .item .menu .item, .ui.menu .horizontally.fitted.item { padding-top: 0.92857143em; padding-bottom: 0.92857143em; } .ui.vertically.fitted.menu .item, .ui.vertically.fitted.menu .item .menu .item, .ui.menu .vertically.fitted.item { padding-left: 1.14285714em; padding-right: 1.14285714em; } /*-------------- Borderless ---------------*/ .ui.borderless.menu .item:before, .ui.borderless.menu .item .menu .item:before, .ui.menu .borderless.item:before { background: none !important; } /*------------------- Compact --------------------*/ .ui.compact.menu { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; margin: 0em; vertical-align: middle; } .ui.compact.vertical.menu { display: inline-block; } .ui.compact.menu .item:last-child { border-radius: 0em 0.28571429rem 0.28571429rem 0em; } .ui.compact.menu .item:last-child:before { display: none; } .ui.compact.vertical.menu { width: auto !important; } .ui.compact.vertical.menu .item:last-child::before { display: block; } /*------------------- Fluid --------------------*/ .ui.menu.fluid, .ui.vertical.menu.fluid { width: 100% !important; } /*------------------- Evenly Sized --------------------*/ .ui.item.menu, .ui.item.menu .item { width: 100%; padding-left: 0em !important; padding-right: 0em !important; margin-left: 0em !important; margin-right: 0em !important; text-align: center; -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .ui.item.menu .item:last-child:before { display: none; } .ui.menu.two.item .item { width: 50%; } .ui.menu.three.item .item { width: 33.333%; } .ui.menu.four.item .item { width: 25%; } .ui.menu.five.item .item { width: 20%; } .ui.menu.six.item .item { width: 16.666%; } .ui.menu.seven.item .item { width: 14.285%; } .ui.menu.eight.item .item { width: 12.500%; } .ui.menu.nine.item .item { width: 11.11%; } .ui.menu.ten.item .item { width: 10.0%; } .ui.menu.eleven.item .item { width: 9.09%; } .ui.menu.twelve.item .item { width: 8.333%; } /*-------------- Fixed ---------------*/ .ui.menu.fixed { position: fixed; z-index: 101; margin: 0em; width: 100%; } .ui.menu.fixed, .ui.menu.fixed .item:first-child, .ui.menu.fixed .item:last-child { border-radius: 0px !important; } .ui.fixed.menu, .ui[class*="top fixed"].menu { top: 0px; left: 0px; right: auto; bottom: auto; } .ui[class*="top fixed"].menu { border-top: none; border-left: none; border-right: none; } .ui[class*="right fixed"].menu { border-top: none; border-bottom: none; border-right: none; top: 0px; right: 0px; left: auto; bottom: auto; width: auto; height: 100%; } .ui[class*="bottom fixed"].menu { border-bottom: none; border-left: none; border-right: none; bottom: 0px; left: 0px; top: auto; right: auto; } .ui[class*="left fixed"].menu { border-top: none; border-bottom: none; border-left: none; top: 0px; left: 0px; right: auto; bottom: auto; width: auto; height: 100%; } /* Coupling with Grid */ .ui.fixed.menu + .ui.grid { padding-top: 2.75rem; } /*------------------- Pointing --------------------*/ .ui.pointing.menu .item:after { visibility: hidden; position: absolute; content: ''; top: 100%; left: 50%; -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(-50%) translateY(-50%) rotate(45deg); transform: translateX(-50%) translateY(-50%) rotate(45deg); background: none; margin: 0.5px 0em 0em; width: 0.57142857em; height: 0.57142857em; border: none; border-bottom: 1px solid #d4d4d5; border-right: 1px solid #d4d4d5; z-index: 2; -webkit-transition: background 0.1s ease; transition: background 0.1s ease; } .ui.vertical.pointing.menu .item:after { position: absolute; top: 50%; right: 0%; bottom: auto; left: auto; -webkit-transform: translateX(50%) translateY(-50%) rotate(45deg); -ms-transform: translateX(50%) translateY(-50%) rotate(45deg); transform: translateX(50%) translateY(-50%) rotate(45deg); margin: 0em -0.5px 0em 0em; border: none; border-top: 1px solid #d4d4d5; border-right: 1px solid #d4d4d5; } /* Active */ .ui.pointing.menu .active.item:after { visibility: visible; } .ui.pointing.menu .active.dropdown.item:after { visibility: hidden; } /* Don't double up pointers */ .ui.pointing.menu .dropdown.active.item:after, .ui.pointing.menu .active.item .menu .active.item:after { display: none; } /* Colors */ .ui.pointing.menu .active.item:hover:after { background-color: #f2f2f2; } .ui.pointing.menu .active.item:after { background-color: #f2f2f2; } .ui.pointing.menu .active.item:hover:after { background-color: #f2f2f2; } .ui.vertical.pointing.menu .active.item:hover:after { background-color: #f2f2f2; } .ui.vertical.pointing.menu .active.item:after { background-color: #f2f2f2; } .ui.vertical.pointing.menu .menu .active.item:after { background-color: #ffffff; } /*-------------- Attached ---------------*/ /* Middle */ .ui.attached.menu { top: 0px; bottom: 0px; border-radius: 0px; margin: 0em -1px; width: calc(100% + 2px ); max-width: calc(100% + 2px ); box-shadow: none; } .ui.attached + .ui.attached.menu:not(.top) { border-top: none; } /* Top */ .ui[class*="top attached"].menu { bottom: 0px; margin-bottom: 0em; top: 0px; margin-top: 1rem; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.menu[class*="top attached"]:first-child { margin-top: 0em; } /* Bottom */ .ui[class*="bottom attached"].menu { bottom: 0px; margin-top: 0em; top: 0px; margin-bottom: 1rem; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui[class*="bottom attached"].menu:last-child { margin-bottom: 0em; } /* Attached Menu Item */ .ui.top.attached.menu > .item:first-child { border-radius: 0.28571429rem 0em 0em 0em; } .ui.bottom.attached.menu > .item:first-child { border-radius: 0em 0em 0em 0.28571429rem; } /* Tabular Attached */ .ui.attached.menu:not(.tabular) { border: 1px solid #d4d4d5; } .ui.attached.inverted.menu { border: none; } .ui.attached.tabular.menu { margin-left: 0; margin-right: 0; width: 100%; } /*-------------- Sizes ---------------*/ /* Small */ .ui.small.menu { font-size: 0.92857143rem; } .ui.small.vertical.menu { width: 13rem; } /* Medium */ .ui.menu { font-size: 1rem; } .ui.vertical.menu { width: 15rem; } /* Large */ .ui.large.menu { font-size: 1.14285714rem; } .ui.large.vertical.menu { width: 18rem; } /* Huge */ .ui.huge.menu { font-size: 1.42857143rem; } .ui.huge.vertical.menu { width: 20rem; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Message * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Message *******************************/ .ui.message { position: relative; min-height: 1em; margin: 1em 0em; background: #f8f8f9; padding: 1em 1.5em; line-height: 1.4285em; color: rgba(0, 0, 0, 0.87); -webkit-transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; transition: opacity 0.1s ease, color 0.1s ease, background 0.1s ease, box-shadow 0.1s ease; border-radius: 0.28571429rem; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.message:first-child { margin-top: 0em; } .ui.message:last-child { margin-bottom: 0em; } /*-------------- Content ---------------*/ /* Header */ .ui.message .header { display: block; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold; margin: -0.14285em 0em 0rem 0em; } /* Default font size */ .ui.message .header:not(.ui) { font-size: 1.14285714em; } /* Paragraph */ .ui.message p { opacity: 0.85; margin: 0.75em 0em; } .ui.message p:first-child { margin-top: 0em; } .ui.message p:last-child { margin-bottom: 0em; } .ui.message .header + p { margin-top: 0.25em; } /* List */ .ui.message .list:not(.ui) { text-align: left; padding: 0em; opacity: 0.85; list-style-position: inside; margin: 0.5em 0em 0em; } .ui.message .list:not(.ui):first-child { margin-top: 0em; } .ui.message .list:not(.ui):last-child { margin-bottom: 0em; } .ui.message .list:not(.ui) li { position: relative; list-style-type: none; margin: 0em 0em 0.3em 1em; padding: 0em; } .ui.message .list:not(.ui) li:before { position: absolute; content: '•'; left: -1em; height: 100%; vertical-align: baseline; } .ui.message .list:not(.ui) li:last-child { margin-bottom: 0em; } /* Icon */ .ui.message > .icon { margin-right: 0.6em; } /* Close Icon */ .ui.message > .close.icon { cursor: pointer; position: absolute; margin: 0em; top: 0.78575em; right: 0.5em; opacity: 0.7; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } .ui.message > .close.icon:hover { opacity: 1; } /* First / Last Element */ .ui.message > :first-child { margin-top: 0em; } .ui.message > :last-child { margin-bottom: 0em; } /******************************* Coupling *******************************/ .ui.dropdown .menu > .message { margin: 0px -1px; } /******************************* States *******************************/ /*-------------- Visible ---------------*/ .ui.visible.visible.visible.visible.message { display: block; } .ui.icon.visible.visible.visible.visible.message { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; } /*-------------- Hidden ---------------*/ .ui.hidden.hidden.hidden.hidden.message { display: none; } /******************************* Variations *******************************/ /*-------------- Compact ---------------*/ .ui.compact.message { display: inline-block; } /*-------------- Attached ---------------*/ .ui.attached.message { margin-bottom: -1px; border-radius: 0.28571429rem 0.28571429rem 0em 0em; box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset; margin-left: -1px; margin-right: -1px; } .ui.attached + .ui.attached.message:not(.top):not(.bottom) { margin-top: -1px; border-radius: 0em; } .ui.bottom.attached.message { margin-top: -1px; border-radius: 0em 0em 0.28571429rem 0.28571429rem; box-shadow: 0em 0em 0em 1px rgba(34, 36, 38, 0.15) inset, 0px 1px 2px 0 rgba(34, 36, 38, 0.15); } .ui.bottom.attached.message:not(:last-child) { margin-bottom: 1em; } .ui.attached.icon.message { width: auto; } /*-------------- Icon ---------------*/ .ui.icon.message { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; width: 100%; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } .ui.icon.message > .icon:not(.close) { display: block; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; width: auto; line-height: 1; vertical-align: middle; font-size: 3em; opacity: 0.8; } .ui.icon.message > .content { display: block; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; vertical-align: middle; } .ui.icon.message .icon:not(.close) + .content { padding-left: 0rem; } .ui.icon.message .circular.icon { width: 1em; } /*-------------- Floating ---------------*/ .ui.floating.message { box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.22) inset, 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.08); } /*-------------- Colors ---------------*/ .ui.black.message { background-color: #1b1c1d; color: rgba(255, 255, 255, 0.9); } /*-------------- Types ---------------*/ /* Positive */ .ui.positive.message { background-color: #fcfff5; color: #2c662d; } .ui.positive.message, .ui.attached.positive.message { box-shadow: 0px 0px 0px 1px #a3c293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.positive.message .header { color: #1a531b; } /* Negative */ .ui.negative.message { background-color: #fff6f6; color: #9f3a38; } .ui.negative.message, .ui.attached.negative.message { box-shadow: 0px 0px 0px 1px #e0b4b4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.negative.message .header { color: #912d2b; } /* Info */ .ui.info.message { background-color: #f8ffff; color: #276f86; } .ui.info.message, .ui.attached.info.message { box-shadow: 0px 0px 0px 1px #a9d5de inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.info.message .header { color: #0e566c; } /* Warning */ .ui.warning.message { background-color: #fffaf3; color: #573a08; } .ui.warning.message, .ui.attached.warning.message { box-shadow: 0px 0px 0px 1px #c9ba9b inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.warning.message .header { color: #794b02; } /* Error */ .ui.error.message { background-color: #fff6f6; color: #9f3a38; } .ui.error.message, .ui.attached.error.message { box-shadow: 0px 0px 0px 1px #e0b4b4 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.error.message .header { color: #912d2b; } /* Success */ .ui.success.message { background-color: #fcfff5; color: #2c662d; } .ui.success.message, .ui.attached.success.message { box-shadow: 0px 0px 0px 1px #a3c293 inset, 0px 0px 0px 0px rgba(0, 0, 0, 0); } .ui.success.message .header { color: #1a531b; } /* Colors */ .ui.inverted.message, .ui.black.message { background-color: #1b1c1d; color: rgba(255, 255, 255, 0.9); } .ui.red.message { background-color: #ffe8e6; color: #db2828; } .ui.red.message .header { color: #c82121; } .ui.orange.message { background-color: #ffedde; color: #f2711c; } .ui.orange.message .header { color: #e7640d; } .ui.yellow.message { background-color: #fff8db; color: #b58105; } .ui.yellow.message .header { color: #9c6f04; } .ui.olive.message { background-color: #fbfdef; color: #8abc1e; } .ui.olive.message .header { color: #7aa61a; } .ui.green.message { background-color: #e5f9e7; color: #1ebc30; } .ui.green.message .header { color: #1aa62a; } .ui.teal.message { background-color: #e1f7f7; color: #10a3a3; } .ui.teal.message .header { color: #0e8c8c; } .ui.blue.message { background-color: #dff0ff; color: #2185d0; } .ui.blue.message .header { color: #1e77ba; } .ui.violet.message { background-color: #eae7ff; color: #6435c9; } .ui.violet.message .header { color: #5a30b5; } .ui.purple.message { background-color: #f6e7ff; color: #a333c8; } .ui.purple.message .header { color: #922eb4; } .ui.pink.message { background-color: #ffe3fb; color: #e03997; } .ui.pink.message .header { color: #dd238b; } .ui.brown.message { background-color: #f1e2d3; color: #a5673f; } .ui.brown.message .header { color: #935b38; } /*-------------- Sizes ---------------*/ .ui.small.message { font-size: 0.92857143em; } .ui.message { font-size: 1em; } .ui.large.message { font-size: 1.14285714em; } .ui.huge.message { font-size: 1.42857143em; } .ui.massive.message { font-size: 1.71428571em; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Table * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Table *******************************/ /* Prototype */ .ui.table { width: 100%; background: #ffffff; margin: 1em 0em; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none; border-radius: 0.28571429rem; text-align: left; color: rgba(0, 0, 0, 0.87); border-collapse: separate; border-spacing: 0px; } .ui.table:first-child { margin-top: 0em; } .ui.table:last-child { margin-bottom: 0em; } /******************************* Parts *******************************/ /* Table Content */ .ui.table th, .ui.table td { -webkit-transition: background 0.1s ease, color 0.1s ease; transition: background 0.1s ease, color 0.1s ease; } /* Headers */ .ui.table thead { box-shadow: none; } .ui.table thead th { cursor: auto; background: #f9fafb; text-align: inherit; color: rgba(0, 0, 0, 0.87); padding: 0.92857143em 0.71428571em; vertical-align: inherit; font-style: none; font-weight: bold; text-transform: none; border-bottom: 1px solid rgba(34, 36, 38, 0.1); border-left: none; } .ui.table thead tr > th:first-child { border-left: none; } .ui.table thead tr:first-child > th:first-child { border-radius: 0.28571429rem 0em 0em 0em; } .ui.table thead tr:first-child > th:last-child { border-radius: 0em 0.28571429rem 0em 0em; } .ui.table thead tr:first-child > th:only-child { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } /* Footer */ .ui.table tfoot { box-shadow: none; } .ui.table tfoot th { cursor: auto; border-top: 1px solid rgba(34, 36, 38, 0.15); background: #f9fafb; text-align: inherit; color: rgba(0, 0, 0, 0.87); padding: 0.71428571em 0.71428571em; vertical-align: middle; font-style: normal; font-weight: normal; text-transform: none; } .ui.table tfoot tr > th:first-child { border-left: none; } .ui.table tfoot tr:first-child > th:first-child { border-radius: 0em 0em 0em 0.28571429rem; } .ui.table tfoot tr:first-child > th:last-child { border-radius: 0em 0em 0.28571429rem 0em; } .ui.table tfoot tr:first-child > th:only-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /* Table Row */ .ui.table tr td { border-top: 1px solid rgba(34, 36, 38, 0.1); } .ui.table tr:first-child td { border-top: none; } /* Table Cells */ .ui.table td { padding: 0.71428571em 0.71428571em; text-align: inherit; } /* Icons */ .ui.table > .icon { vertical-align: baseline; } .ui.table > .icon:only-child { margin: 0em; } /* Table Segment */ .ui.table.segment { padding: 0em; } .ui.table.segment:after { display: none; } .ui.table.segment.stacked:after { display: block; } /* Responsive */ @media only screen and (max-width: 767px) { .ui.table:not(.unstackable) { width: 100%; } .ui.table:not(.unstackable) tbody, .ui.table:not(.unstackable) tr, .ui.table:not(.unstackable) tr > th, .ui.table:not(.unstackable) tr > td { width: auto !important; display: block !important; } .ui.table:not(.unstackable) { padding: 0em; } .ui.table:not(.unstackable) thead { display: block; } .ui.table:not(.unstackable) tfoot { display: block; } .ui.table:not(.unstackable) tr { padding-top: 1em; padding-bottom: 1em; box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset !important; } .ui.table:not(.unstackable) tr > th, .ui.table:not(.unstackable) tr > td { background: none; border: none !important; padding: 0.25em 0.75em !important; box-shadow: none !important; } .ui.table:not(.unstackable) th:first-child, .ui.table:not(.unstackable) td:first-child { font-weight: bold; } /* Definition Table */ .ui.definition.table:not(.unstackable) thead th:first-child { box-shadow: none !important; } } /******************************* Coupling *******************************/ /* UI Image */ .ui.table th .image, .ui.table th .image img, .ui.table td .image, .ui.table td .image img { max-width: none; } /******************************* Types *******************************/ /*-------------- Complex ---------------*/ .ui.structured.table { border-collapse: collapse; } .ui.structured.table thead th { border-left: none; border-right: none; } .ui.structured.sortable.table thead th { border-left: 1px solid rgba(34, 36, 38, 0.15); border-right: 1px solid rgba(34, 36, 38, 0.15); } .ui.structured.basic.table th { border-left: none; border-right: none; } .ui.structured.celled.table tr th, .ui.structured.celled.table tr td { border-left: 1px solid rgba(34, 36, 38, 0.1); border-right: 1px solid rgba(34, 36, 38, 0.1); } /*-------------- Definition ---------------*/ .ui.definition.table thead:not(.full-width) th:first-child { pointer-events: none; background: transparent; font-weight: normal; color: rgba(0, 0, 0, 0.4); box-shadow: -1px -1px 0px 1px #ffffff; } .ui.definition.table tfoot:not(.full-width) th:first-child { pointer-events: none; background: transparent; font-weight: rgba(0, 0, 0, 0.4); color: normal; box-shadow: 1px 1px 0px 1px #ffffff; } /* Remove Border */ .ui.celled.definition.table thead:not(.full-width) th:first-child { box-shadow: 0px -1px 0px 1px #ffffff; } .ui.celled.definition.table tfoot:not(.full-width) th:first-child { box-shadow: 0px 1px 0px 1px #ffffff; } /* Highlight Defining Column */ .ui.definition.table tr td:first-child { background: rgba(0, 0, 0, 0.03); font-weight: bold; color: rgba(0, 0, 0, 0.95); } /* Fix 2nd Column */ .ui.definition.table thead:not(.full-width) th:nth-child(2) { border-left: 1px solid rgba(34, 36, 38, 0.15); } .ui.definition.table tfoot:not(.full-width) th:nth-child(2) { border-left: 1px solid rgba(34, 36, 38, 0.15); } .ui.definition.table td:nth-child(2) { border-left: 1px solid rgba(34, 36, 38, 0.15); } /******************************* States *******************************/ /*-------------- Positive ---------------*/ .ui.table tr.positive, .ui.table td.positive { box-shadow: 0px 0px 0px #a3c293 inset; } .ui.table tr.positive, .ui.table td.positive { background: #fcfff5 !important; color: #2c662d !important; } /*-------------- Negative ---------------*/ .ui.table tr.negative, .ui.table td.negative { box-shadow: 0px 0px 0px #e0b4b4 inset; } .ui.table tr.negative, .ui.table td.negative { background: #fff6f6 !important; color: #9f3a38 !important; } /*-------------- Error ---------------*/ .ui.table tr.error, .ui.table td.error { box-shadow: 0px 0px 0px #e0b4b4 inset; } .ui.table tr.error, .ui.table td.error { background: #fff6f6 !important; color: #9f3a38 !important; } /*-------------- Warning ---------------*/ .ui.table tr.warning, .ui.table td.warning { box-shadow: 0px 0px 0px #c9ba9b inset; } .ui.table tr.warning, .ui.table td.warning { background: #fffaf3 !important; color: #573a08 !important; } /*-------------- Active ---------------*/ .ui.table tr.active, .ui.table td.active { box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset; } .ui.table tr.active, .ui.table td.active { background: #e0e0e0 !important; color: rgba(0, 0, 0, 0.87) !important; } /*-------------- Disabled ---------------*/ .ui.table tr.disabled td, .ui.table tr td.disabled, .ui.table tr.disabled:hover, .ui.table tr:hover td.disabled { pointer-events: none; color: rgba(40, 40, 40, 0.3); } /******************************* Variations *******************************/ /*-------------- Stackable ---------------*/ @media only screen and (max-width: 991px) { .ui[class*="tablet stackable"].table, .ui[class*="tablet stackable"].table tbody, .ui[class*="tablet stackable"].table tr, .ui[class*="tablet stackable"].table tr > th, .ui[class*="tablet stackable"].table tr > td { width: 100% !important; display: block !important; } .ui[class*="tablet stackable"].table { padding: 0em; } .ui[class*="tablet stackable"].table thead { display: block; } .ui[class*="tablet stackable"].table tfoot { display: block; } .ui[class*="tablet stackable"].table tr { padding-top: 1em; padding-bottom: 1em; box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.1) inset !important; } .ui[class*="tablet stackable"].table tr > th, .ui[class*="tablet stackable"].table tr > td { background: none; border: none !important; padding: 0.25em 0.75em; box-shadow: none !important; } /* Definition Table */ .ui.definition[class*="tablet stackable"].table thead th:first-child { box-shadow: none !important; } } /*-------------- Text Alignment ---------------*/ .ui.table[class*="left aligned"], .ui.table [class*="left aligned"] { text-align: left; } .ui.table[class*="center aligned"], .ui.table [class*="center aligned"] { text-align: center; } .ui.table[class*="right aligned"], .ui.table [class*="right aligned"] { text-align: right; } /*------------------ Vertical Alignment ------------------*/ .ui.table[class*="top aligned"], .ui.table [class*="top aligned"] { vertical-align: top; } .ui.table[class*="middle aligned"], .ui.table [class*="middle aligned"] { vertical-align: middle; } .ui.table[class*="bottom aligned"], .ui.table [class*="bottom aligned"] { vertical-align: bottom; } /*-------------- Collapsing ---------------*/ .ui.table th.collapsing, .ui.table td.collapsing { width: 1px; white-space: nowrap; } /*-------------- Fixed ---------------*/ .ui.fixed.table { table-layout: fixed; } .ui.fixed.table th, .ui.fixed.table td { overflow: hidden; text-overflow: ellipsis; } /*-------------- Selectable ---------------*/ .ui.selectable.table tbody tr:hover, .ui.table tbody tr td.selectable:hover { background: rgba(0, 0, 0, 0.05) !important; color: rgba(0, 0, 0, 0.95) !important; } .ui.selectable.inverted.table tbody tr:hover, .ui.inverted.table tbody tr td.selectable:hover { background: rgba(255, 255, 255, 0.08) !important; color: #ffffff !important; } /* Selectable Cell Link */ .ui.table tbody tr td.selectable { padding: 0em; } .ui.table tbody tr td.selectable > a:not(.ui) { display: block; color: inherit; padding: 0.71428571em 0.71428571em; } /* Other States */ .ui.selectable.table tr.error:hover, .ui.table tr td.selectable.error:hover, .ui.selectable.table tr:hover td.error { background: #ffe7e7 !important; color: #943634 !important; } .ui.selectable.table tr.warning:hover, .ui.table tr td.selectable.warning:hover, .ui.selectable.table tr:hover td.warning { background: #fff4e4 !important; color: #493107 !important; } .ui.selectable.table tr.active:hover, .ui.table tr td.selectable.active:hover, .ui.selectable.table tr:hover td.active { background: #e0e0e0 !important; color: rgba(0, 0, 0, 0.87) !important; } .ui.selectable.table tr.positive:hover, .ui.table tr td.selectable.positive:hover, .ui.selectable.table tr:hover td.positive { background: #f7ffe6 !important; color: #275b28 !important; } .ui.selectable.table tr.negative:hover, .ui.table tr td.selectable.negative:hover, .ui.selectable.table tr:hover td.negative { background: #ffe7e7 !important; color: #943634 !important; } /*------------------- Attached --------------------*/ /* Middle */ .ui.attached.table { top: 0px; bottom: 0px; border-radius: 0px; margin: 0em -1px; width: calc(100% + 2px ); max-width: calc(100% + 2px ); box-shadow: none; border: 1px solid #d4d4d5; } .ui.attached + .ui.attached.table:not(.top) { border-top: none; } /* Top */ .ui[class*="top attached"].table { bottom: 0px; margin-bottom: 0em; top: 0px; margin-top: 1em; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.table[class*="top attached"]:first-child { margin-top: 0em; } /* Bottom */ .ui[class*="bottom attached"].table { bottom: 0px; margin-top: 0em; top: 0px; margin-bottom: 1em; box-shadow: none, none; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui[class*="bottom attached"].table:last-child { margin-bottom: 0em; } /*-------------- Striped ---------------*/ /* Table Striping */ .ui.striped.table > tr:nth-child(2n), .ui.striped.table tbody tr:nth-child(2n) { background-color: rgba(0, 0, 50, 0.02); } /* Stripes */ .ui.inverted.striped.table > tr:nth-child(2n), .ui.inverted.striped.table tbody tr:nth-child(2n) { background-color: rgba(255, 255, 255, 0.05); } /*-------------- Single Line ---------------*/ .ui.table[class*="single line"], .ui.table [class*="single line"] { white-space: nowrap; } .ui.table[class*="single line"], .ui.table [class*="single line"] { white-space: nowrap; } /*------------------- Colors --------------------*/ /* Red */ .ui.red.table { border-top: 0.2em solid #db2828; } .ui.inverted.red.table { background-color: #db2828 !important; color: #ffffff !important; } /* Orange */ .ui.orange.table { border-top: 0.2em solid #f2711c; } .ui.inverted.orange.table { background-color: #f2711c !important; color: #ffffff !important; } /* Yellow */ .ui.yellow.table { border-top: 0.2em solid #fbbd08; } .ui.inverted.yellow.table { background-color: #fbbd08 !important; color: #ffffff !important; } /* Olive */ .ui.olive.table { border-top: 0.2em solid #b5cc18; } .ui.inverted.olive.table { background-color: #b5cc18 !important; color: #ffffff !important; } /* Green */ .ui.green.table { border-top: 0.2em solid #21ba45; } .ui.inverted.green.table { background-color: #21ba45 !important; color: #ffffff !important; } /* Teal */ .ui.teal.table { border-top: 0.2em solid #00b5ad; } .ui.inverted.teal.table { background-color: #00b5ad !important; color: #ffffff !important; } /* Blue */ .ui.blue.table { border-top: 0.2em solid #2185d0; } .ui.inverted.blue.table { background-color: #2185d0 !important; color: #ffffff !important; } /* Violet */ .ui.violet.table { border-top: 0.2em solid #6435c9; } .ui.inverted.violet.table { background-color: #6435c9 !important; color: #ffffff !important; } /* Purple */ .ui.purple.table { border-top: 0.2em solid #a333c8; } .ui.inverted.purple.table { background-color: #a333c8 !important; color: #ffffff !important; } /* Pink */ .ui.pink.table { border-top: 0.2em solid #e03997; } .ui.inverted.pink.table { background-color: #e03997 !important; color: #ffffff !important; } /* Brown */ .ui.brown.table { border-top: 0.2em solid #a5673f; } .ui.inverted.brown.table { background-color: #a5673f !important; color: #ffffff !important; } /* Grey */ .ui.grey.table { border-top: 0.2em solid #767676; } .ui.inverted.grey.table { background-color: #767676 !important; color: #ffffff !important; } /* Black */ .ui.black.table { border-top: 0.2em solid #1b1c1d; } .ui.inverted.black.table { background-color: #1b1c1d !important; color: #ffffff !important; } /*-------------- Column Count ---------------*/ /* Grid Based */ .ui.one.column.table td { width: 100%; } .ui.two.column.table td { width: 50%; } .ui.three.column.table td { width: 33.33333333%; } .ui.four.column.table td { width: 25%; } .ui.five.column.table td { width: 20%; } .ui.six.column.table td { width: 16.66666667%; } .ui.seven.column.table td { width: 14.28571429%; } .ui.eight.column.table td { width: 12.5%; } .ui.nine.column.table td { width: 11.11111111%; } .ui.ten.column.table td { width: 10%; } .ui.eleven.column.table td { width: 9.09090909%; } .ui.twelve.column.table td { width: 8.33333333%; } .ui.thirteen.column.table td { width: 7.69230769%; } .ui.fourteen.column.table td { width: 7.14285714%; } .ui.fifteen.column.table td { width: 6.66666667%; } .ui.sixteen.column.table td { width: 6.25%; } /* Column Width */ .ui.table th.one.wide, .ui.table td.one.wide { width: 6.25%; } .ui.table th.two.wide, .ui.table td.two.wide { width: 12.5%; } .ui.table th.three.wide, .ui.table td.three.wide { width: 18.75%; } .ui.table th.four.wide, .ui.table td.four.wide { width: 25%; } .ui.table th.five.wide, .ui.table td.five.wide { width: 31.25%; } .ui.table th.six.wide, .ui.table td.six.wide { width: 37.5%; } .ui.table th.seven.wide, .ui.table td.seven.wide { width: 43.75%; } .ui.table th.eight.wide, .ui.table td.eight.wide { width: 50%; } .ui.table th.nine.wide, .ui.table td.nine.wide { width: 56.25%; } .ui.table th.ten.wide, .ui.table td.ten.wide { width: 62.5%; } .ui.table th.eleven.wide, .ui.table td.eleven.wide { width: 68.75%; } .ui.table th.twelve.wide, .ui.table td.twelve.wide { width: 75%; } .ui.table th.thirteen.wide, .ui.table td.thirteen.wide { width: 81.25%; } .ui.table th.fourteen.wide, .ui.table td.fourteen.wide { width: 87.5%; } .ui.table th.fifteen.wide, .ui.table td.fifteen.wide { width: 93.75%; } .ui.table th.sixteen.wide, .ui.table td.sixteen.wide { width: 100%; } /*-------------- Sortable ---------------*/ .ui.sortable.table thead th { cursor: pointer; white-space: nowrap; border-left: 1px solid rgba(34, 36, 38, 0.15); color: rgba(0, 0, 0, 0.87); } .ui.sortable.table thead th:first-child { border-left: none; } .ui.sortable.table thead th.sorted, .ui.sortable.table thead th.sorted:hover { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .ui.sortable.table thead th:after { display: none; font-style: normal; font-weight: normal; text-decoration: inherit; content: ''; height: 1em; width: auto; opacity: 0.8; margin: 0em 0em 0em 0.5em; font-family: 'Icons'; } .ui.sortable.table thead th.ascending:after { content: '\f0d8'; } .ui.sortable.table thead th.descending:after { content: '\f0d7'; } /* Hover */ .ui.sortable.table th.disabled:hover { cursor: auto; color: rgba(40, 40, 40, 0.3); } .ui.sortable.table thead th:hover { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.8); } /* Sorted */ .ui.sortable.table thead th.sorted { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } .ui.sortable.table thead th.sorted:after { display: inline-block; } /* Sorted Hover */ .ui.sortable.table thead th.sorted:hover { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); } /* Inverted */ .ui.inverted.sortable.table thead th.sorted { background: rgba(255, 255, 255, 0.15) -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: rgba(255, 255, 255, 0.15) linear-gradient(transparent, rgba(0, 0, 0, 0.05)); color: #ffffff; } .ui.inverted.sortable.table thead th:hover { background: rgba(255, 255, 255, 0.08) -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: rgba(255, 255, 255, 0.08) linear-gradient(transparent, rgba(0, 0, 0, 0.05)); color: #ffffff; } .ui.inverted.sortable.table thead th { border-left-color: transparent; border-right-color: transparent; } /*-------------- Inverted ---------------*/ /* Text Color */ .ui.inverted.table { background: #333333; color: rgba(255, 255, 255, 0.9); border: none; } .ui.inverted.table th { background-color: rgba(0, 0, 0, 0.15); border-color: rgba(255, 255, 255, 0.1) !important; color: rgba(255, 255, 255, 0.9); } .ui.inverted.table tr td { border-color: rgba(255, 255, 255, 0.1) !important; } .ui.inverted.table tr.disabled td, .ui.inverted.table tr td.disabled, .ui.inverted.table tr.disabled:hover td, .ui.inverted.table tr:hover td.disabled { pointer-events: none; color: rgba(225, 225, 225, 0.3); } /* Definition */ .ui.inverted.definition.table tfoot:not(.full-width) th:first-child, .ui.inverted.definition.table thead:not(.full-width) th:first-child { background: #ffffff; } .ui.inverted.definition.table tr td:first-child { background: rgba(255, 255, 255, 0.02); color: #ffffff; } /*-------------- Collapsing ---------------*/ .ui.collapsing.table { width: auto; } /*-------------- Basic ---------------*/ .ui.basic.table { background: transparent; border: 1px solid rgba(34, 36, 38, 0.15); box-shadow: none; } .ui.basic.table thead, .ui.basic.table tfoot { box-shadow: none; } .ui.basic.table th { background: transparent; border-left: none; } .ui.basic.table tbody tr { border-bottom: 1px solid rgba(0, 0, 0, 0.1); } .ui.basic.table td { background: transparent; } .ui.basic.striped.table tbody tr:nth-child(2n) { background-color: rgba(0, 0, 0, 0.05) !important; } /* Very Basic */ .ui[class*="very basic"].table { border: none; } .ui[class*="very basic"].table:not(.sortable):not(.striped) th, .ui[class*="very basic"].table:not(.sortable):not(.striped) td { padding: ''; } .ui[class*="very basic"].table:not(.sortable):not(.striped) th:first-child, .ui[class*="very basic"].table:not(.sortable):not(.striped) td:first-child { padding-left: 0em; } .ui[class*="very basic"].table:not(.sortable):not(.striped) th:last-child, .ui[class*="very basic"].table:not(.sortable):not(.striped) td:last-child { padding-right: 0em; } .ui[class*="very basic"].table:not(.sortable):not(.striped) thead tr:first-child th { padding-top: 0em; } /*-------------- Celled ---------------*/ .ui.celled.table tr th, .ui.celled.table tr td { border-left: 1px solid rgba(34, 36, 38, 0.1); } .ui.celled.table tr th:first-child, .ui.celled.table tr td:first-child { border-left: none; } /*-------------- Padded ---------------*/ .ui.padded.table th { padding-left: 1em; padding-right: 1em; } .ui.padded.table th, .ui.padded.table td { padding: 1em 1em; } /* Very */ .ui[class*="very padded"].table th { padding-left: 1.5em; padding-right: 1.5em; } .ui[class*="very padded"].table td { padding: 1.5em 1.5em; } /*-------------- Compact ---------------*/ .ui.compact.table th { padding-left: 0.7em; padding-right: 0.7em; } .ui.compact.table td { padding: 0.5em 0.7em; } /* Very */ .ui[class*="very compact"].table th { padding-left: 0.6em; padding-right: 0.6em; } .ui[class*="very compact"].table td { padding: 0.4em 0.6em; } /*-------------- Sizes ---------------*/ /* Small */ .ui.small.table { font-size: 0.9em; } /* Standard */ .ui.table { font-size: 1em; } /* Large */ .ui.large.table { font-size: 1.1em; } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Ad * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2013 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Advertisement *******************************/ .ui.ad { display: block; overflow: hidden; margin: 1em 0em; } .ui.ad:first-child { margin: 0em; } .ui.ad:last-child { margin: 0em; } .ui.ad iframe { margin: 0em; padding: 0em; border: none; overflow: hidden; } /*-------------- Common ---------------*/ /* Leaderboard */ .ui.leaderboard.ad { width: 728px; height: 90px; } /* Medium Rectangle */ .ui[class*="medium rectangle"].ad { width: 300px; height: 250px; } /* Large Rectangle */ .ui[class*="large rectangle"].ad { width: 336px; height: 280px; } /* Half Page */ .ui[class*="half page"].ad { width: 300px; height: 600px; } /*-------------- Square ---------------*/ /* Square */ .ui.square.ad { width: 250px; height: 250px; } /* Small Square */ .ui[class*="small square"].ad { width: 200px; height: 200px; } /*-------------- Rectangle ---------------*/ /* Small Rectangle */ .ui[class*="small rectangle"].ad { width: 180px; height: 150px; } /* Vertical Rectangle */ .ui[class*="vertical rectangle"].ad { width: 240px; height: 400px; } /*-------------- Button ---------------*/ .ui.button.ad { width: 120px; height: 90px; } .ui[class*="square button"].ad { width: 125px; height: 125px; } .ui[class*="small button"].ad { width: 120px; height: 60px; } /*-------------- Skyscrapers ---------------*/ /* Skyscraper */ .ui.skyscraper.ad { width: 120px; height: 600px; } /* Wide Skyscraper */ .ui[class*="wide skyscraper"].ad { width: 160px; } /*-------------- Banners ---------------*/ /* Banner */ .ui.banner.ad { width: 468px; height: 60px; } /* Vertical Banner */ .ui[class*="vertical banner"].ad { width: 120px; height: 240px; } /* Top Banner */ .ui[class*="top banner"].ad { width: 930px; height: 180px; } /* Half Banner */ .ui[class*="half banner"].ad { width: 234px; height: 60px; } /*-------------- Boards ---------------*/ /* Leaderboard */ .ui[class*="large leaderboard"].ad { width: 970px; height: 90px; } /* Billboard */ .ui.billboard.ad { width: 970px; height: 250px; } /*-------------- Panorama ---------------*/ /* Panorama */ .ui.panorama.ad { width: 980px; height: 120px; } /*-------------- Netboard ---------------*/ /* Netboard */ .ui.netboard.ad { width: 580px; height: 400px; } /*-------------- Mobile ---------------*/ /* Large Mobile Banner */ .ui[class*="large mobile banner"].ad { width: 320px; height: 100px; } /* Mobile Leaderboard */ .ui[class*="mobile leaderboard"].ad { width: 320px; height: 50px; } /******************************* Types *******************************/ /* Mobile Sizes */ .ui.mobile.ad { display: none; } @media only screen and (max-width: 767px) { .ui.mobile.ad { display: block; } } /******************************* Variations *******************************/ .ui.centered.ad { margin-left: auto; margin-right: auto; } .ui.test.ad { position: relative; background: #545454; } .ui.test.ad:after { position: absolute; top: 50%; left: 50%; width: 100%; text-align: center; -webkit-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); content: 'Ad'; color: #ffffff; font-size: 1em; font-weight: bold; } .ui.mobile.test.ad:after { font-size: 0.85714286em; } .ui.test.ad[data-text]:after { content: attr(data-text); } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Item * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ /*-------------- Card ---------------*/ .ui.cards > .card, .ui.card { max-width: 100%; position: relative; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; width: 290px; min-height: 0px; background: #ffffff; padding: 0em; border: none; border-radius: 0.28571429rem; box-shadow: 0px 1px 3px 0px #d4d4d5, 0px 0px 0px 1px #d4d4d5; -webkit-transition: box-shadow 0.1s ease, -webkit-transform 0.1s ease; transition: box-shadow 0.1s ease, transform 0.1s ease; z-index: ''; } .ui.card { margin: 1em 0em; } .ui.cards > .card a, .ui.card a { cursor: pointer; } .ui.card:first-child { margin-top: 0em; } .ui.card:last-child { margin-bottom: 0em; } /*-------------- Cards ---------------*/ .ui.cards { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: -0.875em -0.5em; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; } .ui.cards > .card { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 0.875em 0.5em; float: none; } /* Clearing */ .ui.cards:after, .ui.card:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } /* Consecutive Card Groups Preserve Row Spacing */ .ui.cards ~ .ui.cards { margin-top: 0.875em; } /*-------------- Rounded Edges ---------------*/ .ui.cards > .card > :first-child, .ui.card > :first-child { border-radius: 0.28571429rem 0.28571429rem 0em 0em !important; border-top: none !important; } .ui.cards > .card > :last-child, .ui.card > :last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; } .ui.cards > .card > :only-child, .ui.card > :only-child { border-radius: 0.28571429rem !important; } /*-------------- Images ---------------*/ .ui.cards > .card > .image, .ui.card > .image { position: relative; display: block; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; padding: 0em; background: rgba(0, 0, 0, 0.05); } .ui.cards > .card > .image > img, .ui.card > .image > img { display: block; width: 100%; height: auto; border-radius: inherit; } .ui.cards > .card > .image:not(.ui) > img, .ui.card > .image:not(.ui) > img { border: none; } /*-------------- Content ---------------*/ .ui.cards > .card > .content, .ui.card > .content { -webkit-box-flex: 1; -webkit-flex-grow: 1; -ms-flex-positive: 1; flex-grow: 1; border: none; border-top: 1px solid rgba(34, 36, 38, 0.1); background: none; margin: 0em; padding: 1em 1em; box-shadow: none; font-size: 1em; border-radius: 0em; } .ui.cards > .card > .content:after, .ui.card > .content:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } .ui.cards > .card > .content > .header, .ui.card > .content > .header { display: block; margin: ''; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; color: rgba(0, 0, 0, 0.85); } /* Default Header Size */ .ui.cards > .card > .content > .header:not(.ui), .ui.card > .content > .header:not(.ui) { font-weight: bold; font-size: 1.28571429em; margin-top: -0.21425em; line-height: 1.2857em; } .ui.cards > .card > .content > .meta + .description, .ui.cards > .card > .content > .header + .description, .ui.card > .content > .meta + .description, .ui.card > .content > .header + .description { margin-top: 0.5em; } /*---------------- Floated Content -----------------*/ .ui.cards > .card [class*="left floated"], .ui.card [class*="left floated"] { float: left; } .ui.cards > .card [class*="right floated"], .ui.card [class*="right floated"] { float: right; } /*-------------- Aligned ---------------*/ .ui.cards > .card [class*="left aligned"], .ui.card [class*="left aligned"] { text-align: left; } .ui.cards > .card [class*="center aligned"], .ui.card [class*="center aligned"] { text-align: center; } .ui.cards > .card [class*="right aligned"], .ui.card [class*="right aligned"] { text-align: right; } /*-------------- Content Image ---------------*/ .ui.cards > .card .content img, .ui.card .content img { display: inline-block; vertical-align: middle; width: ''; } .ui.cards > .card img.avatar, .ui.cards > .card .avatar img, .ui.card img.avatar, .ui.card .avatar img { width: 2em; height: 2em; border-radius: 500rem; } /*-------------- Description ---------------*/ .ui.cards > .card > .content > .description, .ui.card > .content > .description { clear: both; color: rgba(0, 0, 0, 0.68); } /*-------------- Paragraph ---------------*/ .ui.cards > .card > .content p, .ui.card > .content p { margin: 0em 0em 0.5em; } .ui.cards > .card > .content p:last-child, .ui.card > .content p:last-child { margin-bottom: 0em; } /*-------------- Meta ---------------*/ .ui.cards > .card .meta, .ui.card .meta { font-size: 1em; color: rgba(0, 0, 0, 0.4); } .ui.cards > .card .meta *, .ui.card .meta * { margin-right: 0.3em; } .ui.cards > .card .meta :last-child, .ui.card .meta :last-child { margin-right: 0em; } .ui.cards > .card .meta [class*="right floated"], .ui.card .meta [class*="right floated"] { margin-right: 0em; margin-left: 0.3em; } /*-------------- Links ---------------*/ /* Generic */ .ui.cards > .card > .content a:not(.ui), .ui.card > .content a:not(.ui) { color: ''; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.cards > .card > .content a:not(.ui):hover, .ui.card > .content a:not(.ui):hover { color: ''; } /* Header */ .ui.cards > .card > .content > a.header, .ui.card > .content > a.header { color: rgba(0, 0, 0, 0.85); } .ui.cards > .card > .content > a.header:hover, .ui.card > .content > a.header:hover { color: #1e70bf; } /* Meta */ .ui.cards > .card .meta > a:not(.ui), .ui.card .meta > a:not(.ui) { color: rgba(0, 0, 0, 0.4); } .ui.cards > .card .meta > a:not(.ui):hover, .ui.card .meta > a:not(.ui):hover { color: rgba(0, 0, 0, 0.87); } /*-------------- Buttons ---------------*/ .ui.cards > .card > .buttons, .ui.card > .buttons, .ui.cards > .card > .button, .ui.card > .button { margin: 0px -1px; width: calc(100% + 2px ); } /*-------------- Dimmer ---------------*/ .ui.cards > .card .dimmer, .ui.card .dimmer { background-color: ''; z-index: 10; } /*-------------- Labels ---------------*/ /*-----Star----- */ /* Icon */ .ui.cards > .card > .content .star.icon, .ui.card > .content .star.icon { cursor: pointer; opacity: 0.75; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.cards > .card > .content .star.icon:hover, .ui.card > .content .star.icon:hover { opacity: 1; color: #ffb70a; } .ui.cards > .card > .content .active.star.icon, .ui.card > .content .active.star.icon { color: #ffe623; } /*-----Like----- */ /* Icon */ .ui.cards > .card > .content .like.icon, .ui.card > .content .like.icon { cursor: pointer; opacity: 0.75; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.cards > .card > .content .like.icon:hover, .ui.card > .content .like.icon:hover { opacity: 1; color: #ff2733; } .ui.cards > .card > .content .active.like.icon, .ui.card > .content .active.like.icon { color: #ff2733; } /*---------------- Extra Content -----------------*/ .ui.cards > .card > .extra, .ui.card > .extra { max-width: 100%; min-height: 0em !important; -webkit-box-flex: 0; -webkit-flex-grow: 0; -ms-flex-positive: 0; flex-grow: 0; border-top: 1px solid rgba(0, 0, 0, 0.05) !important; position: static; background: none; width: auto; margin: 0em 0em; padding: 0.75em 1em; top: 0em; left: 0em; color: rgba(0, 0, 0, 0.4); box-shadow: none; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.cards > .card > .extra a:not(.ui), .ui.card > .extra a:not(.ui) { color: rgba(0, 0, 0, 0.4); } .ui.cards > .card > .extra a:not(.ui):hover, .ui.card > .extra a:not(.ui):hover { color: #1e70bf; } /******************************* Variations *******************************/ /*------------------- Centered --------------------*/ .ui.centered.cards { -webkit-box-pack: center; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; } .ui.centered.card { margin-left: auto; margin-right: auto; } /*------------------- Fluid --------------------*/ .ui.fluid.card { width: 100%; max-width: 9999px; } /*------------------- Link --------------------*/ .ui.cards a.card, .ui.link.cards .card, a.ui.card, .ui.link.card { -webkit-transform: none; -ms-transform: none; transform: none; } .ui.cards a.card:hover, .ui.link.cards .card:hover, a.ui.card:hover, .ui.link.card:hover { cursor: pointer; z-index: 5; background: #ffffff; border: none; box-shadow: 0px 1px 3px 0px #bcbdbd, 0px 0px 0px 1px #d4d4d5; -webkit-transform: translateY(-3px); -ms-transform: translateY(-3px); transform: translateY(-3px); } /*------------------- Colors --------------------*/ /* Red */ .ui.red.cards > .card, .ui.cards > .red.card, .ui.red.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #db2828, 0px 1px 3px 0px #d4d4d5; } .ui.red.cards > .card:hover, .ui.cards > .red.card:hover, .ui.red.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #d01919, 0px 1px 3px 0px #bcbdbd; } /* Orange */ .ui.orange.cards > .card, .ui.cards > .orange.card, .ui.orange.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #f2711c, 0px 1px 3px 0px #d4d4d5; } .ui.orange.cards > .card:hover, .ui.cards > .orange.card:hover, .ui.orange.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #f26202, 0px 1px 3px 0px #bcbdbd; } /* Yellow */ .ui.yellow.cards > .card, .ui.cards > .yellow.card, .ui.yellow.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #fbbd08, 0px 1px 3px 0px #d4d4d5; } .ui.yellow.cards > .card:hover, .ui.cards > .yellow.card:hover, .ui.yellow.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #eaae00, 0px 1px 3px 0px #bcbdbd; } /* Olive */ .ui.olive.cards > .card, .ui.cards > .olive.card, .ui.olive.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #b5cc18, 0px 1px 3px 0px #d4d4d5; } .ui.olive.cards > .card:hover, .ui.cards > .olive.card:hover, .ui.olive.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #a7bd0d, 0px 1px 3px 0px #bcbdbd; } /* Green */ .ui.green.cards > .card, .ui.cards > .green.card, .ui.green.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #21ba45, 0px 1px 3px 0px #d4d4d5; } .ui.green.cards > .card:hover, .ui.cards > .green.card:hover, .ui.green.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #16ab39, 0px 1px 3px 0px #bcbdbd; } /* Teal */ .ui.teal.cards > .card, .ui.cards > .teal.card, .ui.teal.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #00b5ad, 0px 1px 3px 0px #d4d4d5; } .ui.teal.cards > .card:hover, .ui.cards > .teal.card:hover, .ui.teal.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #009c95, 0px 1px 3px 0px #bcbdbd; } /* Blue */ .ui.blue.cards > .card, .ui.cards > .blue.card, .ui.blue.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #2185d0, 0px 1px 3px 0px #d4d4d5; } .ui.blue.cards > .card:hover, .ui.cards > .blue.card:hover, .ui.blue.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #1678c2, 0px 1px 3px 0px #bcbdbd; } /* Violet */ .ui.violet.cards > .card, .ui.cards > .violet.card, .ui.violet.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #6435c9, 0px 1px 3px 0px #d4d4d5; } .ui.violet.cards > .card:hover, .ui.cards > .violet.card:hover, .ui.violet.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #5829bb, 0px 1px 3px 0px #bcbdbd; } /* Purple */ .ui.purple.cards > .card, .ui.cards > .purple.card, .ui.purple.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #a333c8, 0px 1px 3px 0px #d4d4d5; } .ui.purple.cards > .card:hover, .ui.cards > .purple.card:hover, .ui.purple.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #9627ba, 0px 1px 3px 0px #bcbdbd; } /* Pink */ .ui.pink.cards > .card, .ui.cards > .pink.card, .ui.pink.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #e03997, 0px 1px 3px 0px #d4d4d5; } .ui.pink.cards > .card:hover, .ui.cards > .pink.card:hover, .ui.pink.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #e61a8d, 0px 1px 3px 0px #bcbdbd; } /* Brown */ .ui.brown.cards > .card, .ui.cards > .brown.card, .ui.brown.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #a5673f, 0px 1px 3px 0px #d4d4d5; } .ui.brown.cards > .card:hover, .ui.cards > .brown.card:hover, .ui.brown.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #975b33, 0px 1px 3px 0px #bcbdbd; } /* Grey */ .ui.grey.cards > .card, .ui.cards > .grey.card, .ui.grey.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #767676, 0px 1px 3px 0px #d4d4d5; } .ui.grey.cards > .card:hover, .ui.cards > .grey.card:hover, .ui.grey.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #838383, 0px 1px 3px 0px #bcbdbd; } /* Black */ .ui.black.cards > .card, .ui.cards > .black.card, .ui.black.card { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #1b1c1d, 0px 1px 3px 0px #d4d4d5; } .ui.black.cards > .card:hover, .ui.cards > .black.card:hover, .ui.black.card:hover { box-shadow: 0px 0px 0px 1px #d4d4d5, 0px 2px 0px 0px #27292a, 0px 1px 3px 0px #bcbdbd; } /*-------------- Card Count ---------------*/ .ui.one.cards { margin-left: 0em; margin-right: 0em; } .ui.one.cards > .card { width: 100%; } .ui.two.cards { margin-left: -1em; margin-right: -1em; } .ui.two.cards > .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.three.cards { margin-left: -1em; margin-right: -1em; } .ui.three.cards > .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.four.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.four.cards > .card { width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } .ui.five.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.five.cards > .card { width: calc( 20% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } .ui.six.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.six.cards > .card { width: calc( 16.66666667% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } .ui.seven.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.seven.cards > .card { width: calc( 14.28571429% - 1em ); margin-left: 0.5em; margin-right: 0.5em; } .ui.eight.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.eight.cards > .card { width: calc( 12.5% - 1em ); margin-left: 0.5em; margin-right: 0.5em; font-size: 11px; } .ui.nine.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.nine.cards > .card { width: calc( 11.11111111% - 1em ); margin-left: 0.5em; margin-right: 0.5em; font-size: 10px; } .ui.ten.cards { margin-left: -0.5em; margin-right: -0.5em; } .ui.ten.cards > .card { width: calc( 10% - 1em ); margin-left: 0.5em; margin-right: 0.5em; } /*------------------- Doubling --------------------*/ /* Mobily Only */ @media only screen and (max-width: 767px) { .ui.two.doubling.cards { margin-left: 0em; margin-right: 0em; } .ui.two.doubling.cards .card { width: 100%; margin-left: 0em; margin-right: 0em; } .ui.three.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.three.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.four.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.four.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.five.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.five.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.six.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.six.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.seven.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.seven.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.eight.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.eight.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.nine.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.nine.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.ten.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.ten.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } } /* Tablet Only */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.two.doubling.cards { margin-left: 0em; margin-right: 0em; } .ui.two.doubling.cards .card { width: 100%; margin-left: 0em; margin-right: 0em; } .ui.three.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.three.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.four.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.four.doubling.cards .card { width: calc( 50% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.five.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.five.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.six.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.six.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.eight.doubling.cards { margin-left: -1em; margin-right: -1em; } .ui.eight.doubling.cards .card { width: calc( 33.33333333% - 2em ); margin-left: 1em; margin-right: 1em; } .ui.eight.doubling.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.eight.doubling.cards .card { width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } .ui.nine.doubling.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.nine.doubling.cards .card { width: calc( 25% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } .ui.ten.doubling.cards { margin-left: -0.75em; margin-right: -0.75em; } .ui.ten.doubling.cards .card { width: calc( 20% - 1.5em ); margin-left: 0.75em; margin-right: 0.75em; } } /*------------------- Stackable --------------------*/ @media only screen and (max-width: 767px) { .ui.stackable.cards { display: block !important; } .ui.stackable.cards .card:first-child { margin-top: 0em !important; } .ui.stackable.cards > .card { display: block !important; height: auto !important; margin: 1em 1em; padding: 0 !important; width: calc( 100% - 2em ) !important; } } /*-------------- Size ---------------*/ .ui.cards > .card { font-size: 1em; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Comment * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ /*-------------- Comments ---------------*/ .ui.comments { margin: 1.5em 0em; max-width: 650px; } .ui.comments:first-child { margin-top: 0em; } .ui.comments:last-child { margin-bottom: 0em; } /*-------------- Comment ---------------*/ .ui.comments .comment { position: relative; background: none; margin: 0.5em 0em 0em; padding: 0.5em 0em 0em; border: none; border-top: none; line-height: 1.2; } .ui.comments .comment:first-child { margin-top: 0em; padding-top: 0em; } /*-------------------- Nested Comments ---------------------*/ .ui.comments .comment .comments { margin: 0em 0em 0.5em 0.5em; padding: 1em 0em 1em 1em; } .ui.comments .comment .comments:before { position: absolute; top: 0px; left: 0px; } .ui.comments .comment .comments .comment { border: none; border-top: none; background: none; } /*-------------- Avatar ---------------*/ .ui.comments .comment .avatar { display: block; width: 2.5em; height: auto; float: left; margin: 0.2em 0em 0em; } .ui.comments .comment img.avatar, .ui.comments .comment .avatar img { display: block; margin: 0em auto; width: 100%; height: 100%; border-radius: 0.25rem; } /*-------------- Content ---------------*/ .ui.comments .comment > .content { display: block; } /* If there is an avatar move content over */ .ui.comments .comment > .avatar ~ .content { margin-left: 3.5em; } /*-------------- Author ---------------*/ .ui.comments .comment .author { font-size: 1em; color: rgba(0, 0, 0, 0.87); font-weight: bold; } .ui.comments .comment a.author { cursor: pointer; } .ui.comments .comment a.author:hover { color: #1e70bf; } /*-------------- Metadata ---------------*/ .ui.comments .comment .metadata { display: inline-block; margin-left: 0.5em; color: rgba(0, 0, 0, 0.4); font-size: 0.875em; } .ui.comments .comment .metadata > * { display: inline-block; margin: 0em 0.5em 0em 0em; } .ui.comments .comment .metadata > :last-child { margin-right: 0em; } /*-------------------- Comment Text ---------------------*/ .ui.comments .comment .text { margin: 0.25em 0em 0.5em; font-size: 1em; word-wrap: break-word; color: rgba(0, 0, 0, 0.87); line-height: 1.3; } /*-------------------- User Actions ---------------------*/ .ui.comments .comment .actions { font-size: 0.875em; } .ui.comments .comment .actions a { cursor: pointer; display: inline-block; margin: 0em 0.75em 0em 0em; color: rgba(0, 0, 0, 0.4); } .ui.comments .comment .actions a:last-child { margin-right: 0em; } .ui.comments .comment .actions a.active, .ui.comments .comment .actions a:hover { color: rgba(0, 0, 0, 0.8); } /*-------------------- Reply Form ---------------------*/ .ui.comments > .reply.form { margin-top: 1em; } .ui.comments .comment .reply.form { width: 100%; margin-top: 1em; } .ui.comments .reply.form textarea { font-size: 1em; height: 12em; } /******************************* State *******************************/ .ui.collapsed.comments, .ui.comments .collapsed.comments, .ui.comments .collapsed.comment { display: none; } /******************************* Variations *******************************/ /*-------------------- Threaded ---------------------*/ .ui.threaded.comments .comment .comments { margin: -1.5em 0 -1em 1.25em; padding: 3em 0em 2em 2.25em; box-shadow: -1px 0px 0px rgba(34, 36, 38, 0.15); } /*-------------------- Minimal ---------------------*/ .ui.minimal.comments .comment .actions { opacity: 0; position: absolute; top: 0px; right: 0px; left: auto; -webkit-transition: opacity 0.2s ease; transition: opacity 0.2s ease; -webkit-transition-delay: 0.1s; transition-delay: 0.1s; } .ui.minimal.comments .comment > .content:hover > .actions { opacity: 1; } /*-------------------- Sizes ---------------------*/ .ui.small.comments { font-size: 0.9em; } .ui.comments { font-size: 1em; } .ui.large.comments { font-size: 1.1em; } .ui.huge.comments { font-size: 1.2em; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Feed * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Activity Feed *******************************/ .ui.feed { margin: 1em 0em; } .ui.feed:first-child { margin-top: 0em; } .ui.feed:last-child { margin-bottom: 0em; } /******************************* Content *******************************/ /* Event */ .ui.feed > .event { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; width: 100%; padding: 0.21428571rem 0em; margin: 0em; background: none; border-top: none; } .ui.feed > .event:first-child { border-top: 0px; padding-top: 0em; } .ui.feed > .event:last-child { padding-bottom: 0em; } /* Event Label */ .ui.feed > .event > .label { display: block; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; width: 2.5em; height: auto; -webkit-align-self: stretch; -ms-flex-item-align: stretch; align-self: stretch; text-align: left; } .ui.feed > .event > .label .icon { opacity: 1; font-size: 1.5em; width: 100%; padding: 0.25em; background: none; border: none; border-radius: none; color: rgba(0, 0, 0, 0.6); } .ui.feed > .event > .label img { width: 100%; height: auto; border-radius: 500rem; } .ui.feed > .event > .label + .content { margin: 0.5em 0em 0.35714286em 1.14285714em; } /*-------------- Content ---------------*/ /* Content */ .ui.feed > .event > .content { display: block; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; -webkit-align-self: stretch; -ms-flex-item-align: stretch; align-self: stretch; text-align: left; word-wrap: break-word; } .ui.feed > .event:last-child > .content { padding-bottom: 0em; } /* Link */ .ui.feed > .event > .content a { cursor: pointer; } /*-------------- Date ---------------*/ .ui.feed > .event > .content .date { margin: -0.5rem 0em 0em; padding: 0em; font-weight: normal; font-size: 1em; font-style: normal; color: rgba(0, 0, 0, 0.4); } /*-------------- Summary ---------------*/ .ui.feed > .event > .content .summary { margin: 0em; font-size: 1em; font-weight: bold; color: rgba(0, 0, 0, 0.87); } /* Summary Image */ .ui.feed > .event > .content .summary img { display: inline-block; width: auto; height: 10em; margin: -0.25em 0.25em 0em 0em; border-radius: 0.25em; vertical-align: middle; } /*-------------- User ---------------*/ .ui.feed > .event > .content .user { display: inline-block; font-weight: bold; margin-right: 0em; vertical-align: baseline; } .ui.feed > .event > .content .user img { margin: -0.25em 0.25em 0em 0em; width: auto; height: 10em; vertical-align: middle; } /*-------------- Inline Date ---------------*/ /* Date inside Summary */ .ui.feed > .event > .content .summary > .date { display: inline-block; float: none; font-weight: normal; font-size: 0.85714286em; font-style: normal; margin: 0em 0em 0em 0.5em; padding: 0em; color: rgba(0, 0, 0, 0.4); } /*-------------- Extra Summary ---------------*/ .ui.feed > .event > .content .extra { margin: 0.5em 0em 0em; background: none; padding: 0em; color: rgba(0, 0, 0, 0.87); } /* Images */ .ui.feed > .event > .content .extra.images img { display: inline-block; margin: 0em 0.25em 0em 0em; width: 6em; } /* Text */ .ui.feed > .event > .content .extra.text { padding: 0em; border-left: none; font-size: 1em; max-width: 500px; line-height: 1.4285em; } /*-------------- Meta ---------------*/ .ui.feed > .event > .content .meta { display: inline-block; font-size: 0.85714286em; margin: 0.5em 0em 0em; background: none; border: none; border-radius: 0; box-shadow: none; padding: 0em; color: rgba(0, 0, 0, 0.6); } .ui.feed > .event > .content .meta > * { position: relative; margin-left: 0.75em; } .ui.feed > .event > .content .meta > *:after { content: ''; color: rgba(0, 0, 0, 0.2); top: 0em; left: -1em; opacity: 1; position: absolute; vertical-align: top; } .ui.feed > .event > .content .meta .like { color: ''; -webkit-transition: 0.2s color ease; transition: 0.2s color ease; } .ui.feed > .event > .content .meta .like:hover .icon { color: #ff2733; } .ui.feed > .event > .content .meta .active.like .icon { color: #ef404a; } /* First element */ .ui.feed > .event > .content .meta > :first-child { margin-left: 0em; } .ui.feed > .event > .content .meta > :first-child::after { display: none; } /* Action */ .ui.feed > .event > .content .meta a, .ui.feed > .event > .content .meta > .icon { cursor: pointer; opacity: 1; color: rgba(0, 0, 0, 0.5); -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.feed > .event > .content .meta a:hover, .ui.feed > .event > .content .meta a:hover .icon, .ui.feed > .event > .content .meta > .icon:hover { color: rgba(0, 0, 0, 0.95); } /******************************* Variations *******************************/ .ui.small.feed { font-size: 0.92857143rem; } .ui.feed { font-size: 1rem; } .ui.large.feed { font-size: 1.14285714rem; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Item * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Standard *******************************/ /*-------------- Item ---------------*/ .ui.items > .item { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 1em 0em; width: 100%; min-height: 0px; background: transparent; padding: 0em; border: none; border-radius: 0rem; box-shadow: none; -webkit-transition: box-shadow 0.1s ease; transition: box-shadow 0.1s ease; z-index: ''; } .ui.items > .item a { cursor: pointer; } /*-------------- Items ---------------*/ .ui.items { margin: 1.5em 0em; } .ui.items:first-child { margin-top: 0em !important; } .ui.items:last-child { margin-bottom: 0em !important; } /*-------------- Item ---------------*/ .ui.items > .item:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } .ui.items > .item:first-child { margin-top: 0em; } .ui.items > .item:last-child { margin-bottom: 0em; } /*-------------- Images ---------------*/ .ui.items > .item > .image { position: relative; -webkit-box-flex: 0; -webkit-flex: 0 0 auto; -ms-flex: 0 0 auto; flex: 0 0 auto; display: block; float: none; margin: 0em; padding: 0em; max-height: ''; -webkit-align-self: top; -ms-flex-item-align: top; align-self: top; } .ui.items > .item > .image > img { display: block; width: 100%; height: auto; border-radius: 0.125rem; border: none; } .ui.items > .item > .image:only-child > img { border-radius: 0rem; } /*-------------- Content ---------------*/ .ui.items > .item > .content { display: block; -webkit-box-flex: 1; -webkit-flex: 1 1 auto; -ms-flex: 1 1 auto; flex: 1 1 auto; background: none; margin: 0em; padding: 0em; box-shadow: none; font-size: 1em; border: none; border-radius: 0em; } .ui.items > .item > .content:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } .ui.items > .item > .image + .content { min-width: 0; width: auto; display: block; margin-left: 0em; -webkit-align-self: top; -ms-flex-item-align: top; align-self: top; padding-left: 1.5em; } .ui.items > .item > .content > .header { display: inline-block; margin: -0.21425em 0em 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold; color: rgba(0, 0, 0, 0.85); } /* Default Header Size */ .ui.items > .item > .content > .header:not(.ui) { font-size: 1.28571429em; } /*-------------- Floated ---------------*/ .ui.items > .item [class*="left floated"] { float: left; } .ui.items > .item [class*="right floated"] { float: right; } /*-------------- Content Image ---------------*/ .ui.items > .item .content img { -webkit-align-self: middle; -ms-flex-item-align: middle; align-self: middle; width: ''; } .ui.items > .item img.avatar, .ui.items > .item .avatar img { width: ''; height: ''; border-radius: 500rem; } /*-------------- Description ---------------*/ .ui.items > .item > .content > .description { margin-top: 0.6em; max-width: auto; font-size: 1em; line-height: 1.4285em; color: rgba(0, 0, 0, 0.87); } /*-------------- Paragraph ---------------*/ .ui.items > .item > .content p { margin: 0em 0em 0.5em; } .ui.items > .item > .content p:last-child { margin-bottom: 0em; } /*-------------- Meta ---------------*/ .ui.items > .item .meta { margin: 0.5em 0em 0.5em; font-size: 1em; line-height: 1em; color: rgba(0, 0, 0, 0.6); } .ui.items > .item .meta * { margin-right: 0.3em; } .ui.items > .item .meta :last-child { margin-right: 0em; } .ui.items > .item .meta [class*="right floated"] { margin-right: 0em; margin-left: 0.3em; } /*-------------- Links ---------------*/ /* Generic */ .ui.items > .item > .content a:not(.ui) { color: ''; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.items > .item > .content a:not(.ui):hover { color: ''; } /* Header */ .ui.items > .item > .content > a.header { color: rgba(0, 0, 0, 0.85); } .ui.items > .item > .content > a.header:hover { color: #1e70bf; } /* Meta */ .ui.items > .item .meta > a:not(.ui) { color: rgba(0, 0, 0, 0.4); } .ui.items > .item .meta > a:not(.ui):hover { color: rgba(0, 0, 0, 0.87); } /*-------------- Labels ---------------*/ /*-----Star----- */ /* Icon */ .ui.items > .item > .content .favorite.icon { cursor: pointer; opacity: 0.75; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.items > .item > .content .favorite.icon:hover { opacity: 1; color: #ffb70a; } .ui.items > .item > .content .active.favorite.icon { color: #ffe623; } /*-----Like----- */ /* Icon */ .ui.items > .item > .content .like.icon { cursor: pointer; opacity: 0.75; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } .ui.items > .item > .content .like.icon:hover { opacity: 1; color: #ff2733; } .ui.items > .item > .content .active.like.icon { color: #ff2733; } /*---------------- Extra Content -----------------*/ .ui.items > .item .extra { display: block; position: relative; background: none; margin: 0.5rem 0em 0em; width: 100%; padding: 0em 0em 0em; top: 0em; left: 0em; color: rgba(0, 0, 0, 0.4); box-shadow: none; -webkit-transition: color 0.1s ease; transition: color 0.1s ease; border-top: none; } .ui.items > .item .extra > * { margin: 0.25rem 0.5rem 0.25rem 0em; } .ui.items > .item .extra > [class*="right floated"] { margin: 0.25rem 0em 0.25rem 0.5rem; } .ui.items > .item .extra:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } /******************************* Responsive *******************************/ /* Default Image Width */ .ui.items > .item > .image:not(.ui) { width: 175px; } /* Tablet Only */ @media only screen and (min-width: 768px) and (max-width: 991px) { .ui.items > .item { margin: 1em 0em; } .ui.items > .item > .image:not(.ui) { width: 150px; } .ui.items > .item > .image + .content { display: block; padding: 0em 0em 0em 1em; } } /* Mobily Only */ @media only screen and (max-width: 767px) { .ui.items > .item { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; margin: 2em 0em; } .ui.items > .item > .image { display: block; margin-left: auto; margin-right: auto; } .ui.items > .item > .image, .ui.items > .item > .image > img { max-width: 100% !important; width: auto !important; max-height: 250px !important; } .ui.items > .item > .image + .content { display: block; padding: 1.5em 0em 0em; } } /******************************* Variations *******************************/ /*------------------- Aligned --------------------*/ .ui.items > .item > .image + [class*="top aligned"].content { -webkit-align-self: flex-start; -ms-flex-item-align: start; align-self: flex-start; } .ui.items > .item > .image + [class*="middle aligned"].content { -webkit-align-self: center; -ms-flex-item-align: center; align-self: center; } .ui.items > .item > .image + [class*="bottom aligned"].content { -webkit-align-self: flex-end; -ms-flex-item-align: end; align-self: flex-end; } /*-------------- Relaxed ---------------*/ .ui.relaxed.items > .item { margin: 1.5em 0em; } .ui[class*="very relaxed"].items > .item { margin: 2em 0em; } /*------------------- Divided --------------------*/ .ui.divided.items > .item { border-top: 1px solid rgba(34, 36, 38, 0.15); margin: 0em; padding: 1em 0em; } .ui.divided.items > .item:first-child { border-top: none; margin-top: 0em !important; padding-top: 0em !important; } .ui.divided.items > .item:last-child { margin-bottom: 0em !important; padding-bottom: 0em !important; } /* Relaxed Divided */ .ui.relaxed.divided.items > .item { margin: 0em; padding: 1.5em 0em; } .ui[class*="very relaxed"].divided.items > .item { margin: 0em; padding: 2em 0em; } /*------------------- Link --------------------*/ .ui.items a.item:hover, .ui.link.items > .item:hover { cursor: pointer; } .ui.items a.item:hover .content .header, .ui.link.items > .item:hover .content .header { color: #1e70bf; } /*-------------- Size ---------------*/ .ui.items > .item { font-size: 1em; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Statistic * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Statistic *******************************/ /* Standalone */ .ui.statistic { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; margin: 1em 0em; max-width: auto; } .ui.statistic + .ui.statistic { margin: 0em 0em 0em 1.5em; } .ui.statistic:first-child { margin-top: 0em; } .ui.statistic:last-child { margin-bottom: 0em; } /******************************* Group *******************************/ /* Grouped */ .ui.statistics { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-align: start; -webkit-align-items: flex-start; -ms-flex-align: start; align-items: flex-start; -webkit-flex-wrap: wrap; -ms-flex-wrap: wrap; flex-wrap: wrap; } .ui.statistics > .statistic { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; margin: 0em 1.5em 2em; max-width: auto; } .ui.statistics { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 1em -1.5em -2em; } /* Clearing */ .ui.statistics:after { display: block; content: ' '; height: 0px; clear: both; overflow: hidden; visibility: hidden; } .ui.statistics:first-child { margin-top: 0em; } .ui.statistics:last-child { margin-bottom: 0em; } /******************************* Content *******************************/ /*-------------- Value ---------------*/ .ui.statistics .statistic > .value, .ui.statistic > .value { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 4rem; font-weight: normal; line-height: 1em; color: #1b1c1d; text-transform: uppercase; text-align: center; } /*-------------- Label ---------------*/ .ui.statistics .statistic > .label, .ui.statistic > .label { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1em; font-weight: bold; color: rgba(0, 0, 0, 0.87); text-transform: uppercase; text-align: center; } /* Top Label */ .ui.statistics .statistic > .label ~ .value, .ui.statistic > .label ~ .value { margin-top: 0rem; } /* Bottom Label */ .ui.statistics .statistic > .value ~ .label, .ui.statistic > .value ~ .label { margin-top: 0rem; } /******************************* Types *******************************/ /*-------------- Icon Value ---------------*/ .ui.statistics .statistic > .value .icon, .ui.statistic > .value .icon { opacity: 1; width: auto; margin: 0em; } /*-------------- Text Value ---------------*/ .ui.statistics .statistic > .text.value, .ui.statistic > .text.value { line-height: 1em; min-height: 2em; font-weight: bold; text-align: center; } .ui.statistics .statistic > .text.value + .label, .ui.statistic > .text.value + .label { text-align: center; } /*-------------- Image Value ---------------*/ .ui.statistics .statistic > .value img, .ui.statistic > .value img { max-height: 3rem; vertical-align: baseline; } /******************************* Variations *******************************/ /*-------------- Count ---------------*/ .ui.ten.statistics { margin: 0em 0em -2em; } .ui.ten.statistics .statistic { min-width: 10%; margin: 0em 0em 2em; } .ui.nine.statistics { margin: 0em 0em -2em; } .ui.nine.statistics .statistic { min-width: 11.11111111%; margin: 0em 0em 2em; } .ui.eight.statistics { margin: 0em 0em -2em; } .ui.eight.statistics .statistic { min-width: 12.5%; margin: 0em 0em 2em; } .ui.seven.statistics { margin: 0em 0em -2em; } .ui.seven.statistics .statistic { min-width: 14.28571429%; margin: 0em 0em 2em; } .ui.six.statistics { margin: 0em 0em -2em; } .ui.six.statistics .statistic { min-width: 16.66666667%; margin: 0em 0em 2em; } .ui.five.statistics { margin: 0em 0em -2em; } .ui.five.statistics .statistic { min-width: 20%; margin: 0em 0em 2em; } .ui.four.statistics { margin: 0em 0em -2em; } .ui.four.statistics .statistic { min-width: 25%; margin: 0em 0em 2em; } .ui.three.statistics { margin: 0em 0em -2em; } .ui.three.statistics .statistic { min-width: 33.33333333%; margin: 0em 0em 2em; } .ui.two.statistics { margin: 0em 0em -2em; } .ui.two.statistics .statistic { min-width: 50%; margin: 0em 0em 2em; } .ui.one.statistics { margin: 0em 0em -2em; } .ui.one.statistics .statistic { min-width: 100%; margin: 0em 0em 2em; } /*-------------- Horizontal ---------------*/ .ui.horizontal.statistic { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; } .ui.horizontal.statistics { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; margin: 0em; max-width: none; } .ui.horizontal.statistics .statistic { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-box-align: center; -webkit-align-items: center; -ms-flex-align: center; align-items: center; max-width: none; margin: 1em 0em; } .ui.horizontal.statistic > .text.value, .ui.horizontal.statistics > .statistic > .text.value { min-height: 0em !important; } .ui.horizontal.statistics .statistic > .value .icon, .ui.horizontal.statistic > .value .icon { width: 1.18em; } .ui.horizontal.statistics .statistic > .value, .ui.horizontal.statistic > .value { display: inline-block; vertical-align: middle; } .ui.horizontal.statistics .statistic > .label, .ui.horizontal.statistic > .label { display: inline-block; vertical-align: middle; margin: 0em 0em 0em 0.75em; } /*-------------- Colors ---------------*/ .ui.red.statistics .statistic > .value, .ui.statistics .red.statistic > .value, .ui.red.statistic > .value { color: #db2828; } .ui.orange.statistics .statistic > .value, .ui.statistics .orange.statistic > .value, .ui.orange.statistic > .value { color: #f2711c; } .ui.yellow.statistics .statistic > .value, .ui.statistics .yellow.statistic > .value, .ui.yellow.statistic > .value { color: #fbbd08; } .ui.olive.statistics .statistic > .value, .ui.statistics .olive.statistic > .value, .ui.olive.statistic > .value { color: #b5cc18; } .ui.green.statistics .statistic > .value, .ui.statistics .green.statistic > .value, .ui.green.statistic > .value { color: #21ba45; } .ui.teal.statistics .statistic > .value, .ui.statistics .teal.statistic > .value, .ui.teal.statistic > .value { color: #00b5ad; } .ui.blue.statistics .statistic > .value, .ui.statistics .blue.statistic > .value, .ui.blue.statistic > .value { color: #2185d0; } .ui.violet.statistics .statistic > .value, .ui.statistics .violet.statistic > .value, .ui.violet.statistic > .value { color: #6435c9; } .ui.purple.statistics .statistic > .value, .ui.statistics .purple.statistic > .value, .ui.purple.statistic > .value { color: #a333c8; } .ui.pink.statistics .statistic > .value, .ui.statistics .pink.statistic > .value, .ui.pink.statistic > .value { color: #e03997; } .ui.brown.statistics .statistic > .value, .ui.statistics .brown.statistic > .value, .ui.brown.statistic > .value { color: #a5673f; } .ui.grey.statistics .statistic > .value, .ui.statistics .grey.statistic > .value, .ui.grey.statistic > .value { color: #767676; } /*-------------- Inverted ---------------*/ .ui.inverted.statistics .statistic > .value, .ui.inverted.statistic .value { color: #ffffff; } .ui.inverted.statistics .statistic > .label, .ui.inverted.statistic .label { color: rgba(255, 255, 255, 0.9); } .ui.inverted.red.statistics .statistic > .value, .ui.statistics .inverted.red.statistic > .value, .ui.inverted.red.statistic > .value { color: #ff695e; } .ui.inverted.orange.statistics .statistic > .value, .ui.statistics .inverted.orange.statistic > .value, .ui.inverted.orange.statistic > .value { color: #ff851b; } .ui.inverted.yellow.statistics .statistic > .value, .ui.statistics .inverted.yellow.statistic > .value, .ui.inverted.yellow.statistic > .value { color: #ffe21f; } .ui.inverted.olive.statistics .statistic > .value, .ui.statistics .inverted.olive.statistic > .value, .ui.inverted.olive.statistic > .value { color: #d9e778; } .ui.inverted.green.statistics .statistic > .value, .ui.statistics .inverted.green.statistic > .value, .ui.inverted.green.statistic > .value { color: #2ecc40; } .ui.inverted.teal.statistics .statistic > .value, .ui.statistics .inverted.teal.statistic > .value, .ui.inverted.teal.statistic > .value { color: #6dffff; } .ui.inverted.blue.statistics .statistic > .value, .ui.statistics .inverted.blue.statistic > .value, .ui.inverted.blue.statistic > .value { color: #54c8ff; } .ui.inverted.violet.statistics .statistic > .value, .ui.statistics .inverted.violet.statistic > .value, .ui.inverted.violet.statistic > .value { color: #a291fb; } .ui.inverted.purple.statistics .statistic > .value, .ui.statistics .inverted.purple.statistic > .value, .ui.inverted.purple.statistic > .value { color: #dc73ff; } .ui.inverted.pink.statistics .statistic > .value, .ui.statistics .inverted.pink.statistic > .value, .ui.inverted.pink.statistic > .value { color: #ff8edf; } .ui.inverted.brown.statistics .statistic > .value, .ui.statistics .inverted.brown.statistic > .value, .ui.inverted.brown.statistic > .value { color: #d67c1c; } .ui.inverted.grey.statistics .statistic > .value, .ui.statistics .inverted.grey.statistic > .value, .ui.inverted.grey.statistic > .value { color: #dcddde; } /*-------------- Floated ---------------*/ .ui[class*="left floated"].statistic { float: left; margin: 0em 2em 1em 0em; } .ui[class*="right floated"].statistic { float: right; margin: 0em 0em 1em 2em; } .ui.floated.statistic:last-child { margin-bottom: 0em; } /*-------------- Sizes ---------------*/ /* Mini */ .ui.mini.statistics .statistic > .value, .ui.mini.statistic > .value { font-size: 1.5rem; } .ui.mini.horizontal.statistics .statistic > .value, .ui.mini.horizontal.statistic > .value { font-size: 1.5rem; } .ui.mini.statistics .statistic > .text.value, .ui.mini.statistic > .text.value { font-size: 1rem; } /* Tiny */ .ui.tiny.statistics .statistic > .value, .ui.tiny.statistic > .value { font-size: 2rem; } .ui.tiny.horizontal.statistics .statistic > .value, .ui.tiny.horizontal.statistic > .value { font-size: 2rem; } .ui.tiny.statistics .statistic > .text.value, .ui.tiny.statistic > .text.value { font-size: 1rem; } /* Small */ .ui.small.statistics .statistic > .value, .ui.small.statistic > .value { font-size: 3rem; } .ui.small.horizontal.statistics .statistic > .value, .ui.small.horizontal.statistic > .value { font-size: 2rem; } .ui.small.statistics .statistic > .text.value, .ui.small.statistic > .text.value { font-size: 1rem; } /* Medium */ .ui.statistics .statistic > .value, .ui.statistic > .value { font-size: 4rem; } .ui.horizontal.statistics .statistic > .value, .ui.horizontal.statistic > .value { font-size: 3rem; } .ui.statistics .statistic > .text.value, .ui.statistic > .text.value { font-size: 2rem; } /* Large */ .ui.large.statistics .statistic > .value, .ui.large.statistic > .value { font-size: 5rem; } .ui.large.horizontal.statistics .statistic > .value, .ui.large.horizontal.statistic > .value { font-size: 4rem; } .ui.large.statistics .statistic > .text.value, .ui.large.statistic > .text.value { font-size: 2.5rem; } /* Huge */ .ui.huge.statistics .statistic > .value, .ui.huge.statistic > .value { font-size: 6rem; } .ui.huge.horizontal.statistics .statistic > .value, .ui.huge.horizontal.statistic > .value { font-size: 5rem; } .ui.huge.statistics .statistic > .text.value, .ui.huge.statistic > .text.value { font-size: 2.5rem; } /******************************* Theme Overrides *******************************/ /******************************* User Variable Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Accordion * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Accordion *******************************/ .ui.accordion, .ui.accordion .accordion { max-width: 100%; } .ui.accordion .accordion { margin: 1em 0em 0em; padding: 0em; } /* Title */ .ui.accordion .title, .ui.accordion .accordion .title { cursor: pointer; } /* Default Styling */ .ui.accordion .title:not(.ui) { padding: 0.5em 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1em; color: rgba(0, 0, 0, 0.87); } /* Content */ .ui.accordion .title ~ .content, .ui.accordion .accordion .title ~ .content { display: none; } /* Default Styling */ .ui.accordion:not(.styled) .title ~ .content:not(.ui), .ui.accordion:not(.styled) .accordion .title ~ .content:not(.ui) { margin: ''; padding: 0.5em 0em 1em; } .ui.accordion:not(.styled) .title ~ .content:not(.ui):last-child { padding-bottom: 0em; } /* Arrow */ .ui.accordion .title .dropdown.icon, .ui.accordion .accordion .title .dropdown.icon { display: inline-block; float: none; opacity: 1; width: 1.25em; height: 1em; margin: 0em 0.25rem 0em 0rem; padding: 0em; font-size: 1em; -webkit-transition: -webkit-transform 0.1s ease, opacity 0.1s ease; transition: transform 0.1s ease, opacity 0.1s ease; vertical-align: baseline; -webkit-transform: none; -ms-transform: none; transform: none; } /*-------------- Coupling ---------------*/ /* Menu */ .ui.accordion.menu .item .title { display: block; padding: 0em; } .ui.accordion.menu .item .title > .dropdown.icon { float: right; margin: 0.21425em 0em 0em 1em; -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } /* Header */ .ui.accordion .ui.header .dropdown.icon { font-size: 1em; margin: 0em 0.25rem 0em 0rem; } /******************************* States *******************************/ .ui.accordion .active.title .dropdown.icon, .ui.accordion .accordion .active.title .dropdown.icon { -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .ui.accordion.menu .item .active.title > .dropdown.icon { -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } /******************************* Types *******************************/ /*-------------- Styled ---------------*/ .ui.styled.accordion { width: 600px; } .ui.styled.accordion, .ui.styled.accordion .accordion { border-radius: 0.28571429rem; background: #ffffff; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15); } .ui.styled.accordion .title, .ui.styled.accordion .accordion .title { margin: 0em; padding: 0.75em 1em; color: rgba(0, 0, 0, 0.4); font-weight: bold; border-top: 1px solid rgba(34, 36, 38, 0.15); -webkit-transition: background 0.1s ease, color 0.1s ease; transition: background 0.1s ease, color 0.1s ease; } .ui.styled.accordion > .title:first-child, .ui.styled.accordion .accordion .title:first-child { border-top: none; } /* Content */ .ui.styled.accordion .content, .ui.styled.accordion .accordion .content { margin: 0em; padding: 0.5em 1em 1.5em; } .ui.styled.accordion .accordion .content { padding: 0em; padding: 0.5em 1em 1.5em; } /* Hover */ .ui.styled.accordion .title:hover, .ui.styled.accordion .active.title, .ui.styled.accordion .accordion .title:hover, .ui.styled.accordion .accordion .active.title { background: transparent; color: rgba(0, 0, 0, 0.87); } .ui.styled.accordion .accordion .title:hover, .ui.styled.accordion .accordion .active.title { background: transparent; color: rgba(0, 0, 0, 0.87); } /* Active */ .ui.styled.accordion .active.title { background: transparent; color: rgba(0, 0, 0, 0.95); } .ui.styled.accordion .accordion .active.title { background: transparent; color: rgba(0, 0, 0, 0.95); } /******************************* States *******************************/ /*-------------- Active ---------------*/ .ui.accordion .active.content, .ui.accordion .accordion .active.content { display: block; } /******************************* Variations *******************************/ /*-------------- Fluid ---------------*/ .ui.fluid.accordion, .ui.fluid.accordion .accordion { width: 100%; } /*-------------- Inverted ---------------*/ .ui.inverted.accordion .title:not(.ui) { color: rgba(255, 255, 255, 0.9); } /******************************* Theme Overrides *******************************/ @font-face { font-family: 'Accordion'; src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfOIKAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zryj6HgAAAFwAAAAyGhlYWT/0IhHAAACOAAAADZoaGVhApkB5wAAAnAAAAAkaG10eAJuABIAAAKUAAAAGGxvY2EAjABWAAACrAAAAA5tYXhwAAgAFgAAArwAAAAgbmFtZfC1n04AAALcAAABPHBvc3QAAwAAAAAEGAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQASAEkAtwFuABMAADc0PwE2FzYXFh0BFAcGJwYvASY1EgaABQgHBQYGBQcIBYAG2wcGfwcBAQcECf8IBAcBAQd/BgYAAAAAAQAAAEkApQFuABMAADcRNDc2MzIfARYVFA8BBiMiJyY1AAUGBwgFgAYGgAUIBwYFWwEACAUGBoAFCAcFgAYGBQcAAAABAAAAAQAAqWYls18PPPUACwIAAAAAAM/9o+4AAAAAz/2j7gAAAAAAtwFuAAAACAACAAAAAAAAAAEAAAHg/+AAAAIAAAAAAAC3AAEAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAQAAAAC3ABIAtwAAAAAAAAAKABQAHgBCAGQAAAABAAAABgAUAAEAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") format('truetype'), url("data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAASwAAoAAAAABGgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAS0AAAEtFpovuE9TLzIAAAIkAAAAYAAAAGAIIweQY21hcAAAAoQAAABMAAAATA984gpnYXNwAAAC0AAAAAgAAAAIAAAAEGhlYWQAAALYAAAANgAAADb/0IhHaGhlYQAAAxAAAAAkAAAAJAKZAedobXR4AAADNAAAABgAAAAYAm4AEm1heHAAAANMAAAABgAAAAYABlAAbmFtZQAAA1QAAAE8AAABPPC1n05wb3N0AAAEkAAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLa/iU+HQFHQAAAHkPHQAAAH4RHQAAAAkdAAABJBIABwEBBw0PERQZHnJhdGluZ3JhdGluZ3UwdTF1MjB1RjBEOXVGMERBAAACAYkABAAGAQEEBwoNVp38lA78lA78lA77lA773Z33bxWLkI2Qj44I9xT3FAWOj5CNkIuQi4+JjoePiI2Gi4YIi/uUBYuGiYeHiIiHh4mGi4aLho2Ijwj7FPcUBYeOiY+LkAgO+92L5hWL95QFi5CNkI6Oj4+PjZCLkIuQiY6HCPcU+xQFj4iNhouGi4aJh4eICPsU+xQFiIeGiYaLhouHjYePiI6Jj4uQCA74lBT4lBWLDAoAAAAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDZ//3//wAB/+MPKwADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAADfYOJZfDzz1AAsCAAAAAADP/aPuAAAAAM/9o+4AAAAAALcBbgAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAAAtwABAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAEAAAAAtwASALcAAAAAUAAABgAAAAAADgCuAAEAAAAAAAEADAAAAAEAAAAAAAIADgBAAAEAAAAAAAMADAAiAAEAAAAAAAQADABOAAEAAAAAAAUAFgAMAAEAAAAAAAYABgAuAAEAAAAAAAoANABaAAMAAQQJAAEADAAAAAMAAQQJAAIADgBAAAMAAQQJAAMADAAiAAMAAQQJAAQADABOAAMAAQQJAAUAFgAMAAMAAQQJAAYADAA0AAMAAQQJAAoANABaAHIAYQB0AGkAbgBnAFYAZQByAHMAaQBvAG4AIAAxAC4AMAByAGEAdABpAG4AZ3JhdGluZwByAGEAdABpAG4AZwBSAGUAZwB1AGwAYQByAHIAYQB0AGkAbgBnAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") format('woff'); font-weight: normal; font-style: normal; } /* Dropdown Icon */ .ui.accordion .title .dropdown.icon, .ui.accordion .accordion .title .dropdown.icon { font-family: Accordion; line-height: 1; -webkit-backface-visibility: hidden; backface-visibility: hidden; font-weight: normal; font-style: normal; text-align: center; } .ui.accordion .title .dropdown.icon:before, .ui.accordion .accordion .title .dropdown.icon:before { content: '\f0da' ; } /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Checkbox *******************************/ /*-------------- Content ---------------*/ .ui.checkbox { position: relative; display: inline-block; -webkit-backface-visibility: hidden; backface-visibility: hidden; outline: none; vertical-align: baseline; font-style: normal; min-height: 17px; font-size: 1rem; line-height: 17px; min-width: 17px; } /* HTML Checkbox */ .ui.checkbox input[type="checkbox"], .ui.checkbox input[type="radio"] { cursor: pointer; position: absolute; top: 0px; left: 0px; opacity: 0 !important; outline: none; z-index: 3; width: 17px; height: 17px; } /*-------------- Box ---------------*/ .ui.checkbox .box, .ui.checkbox label { cursor: auto; position: relative; display: block; padding-left: 1.85714em; outline: none; font-size: 1em; } .ui.checkbox .box:before, .ui.checkbox label:before { position: absolute; top: 0px; left: 0px; width: 17px; height: 17px; content: ''; background: #ffffff; border-radius: 0.21428571rem; -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, box-shadow 0.1s ease; transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease; border: 1px solid #d4d4d5; } /*-------------- Checkmark ---------------*/ .ui.checkbox .box:after, .ui.checkbox label:after { position: absolute; font-size: 14px; top: 0px; left: 0px; width: 17px; height: 17px; text-align: center; opacity: 0; color: rgba(0, 0, 0, 0.87); -webkit-transition: border 0.1s ease, opacity 0.1s ease, -webkit-transform 0.1s ease, box-shadow 0.1s ease; transition: border 0.1s ease, opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease; } /*-------------- Label ---------------*/ /* Inside */ .ui.checkbox label, .ui.checkbox + label { color: rgba(0, 0, 0, 0.87); -webkit-transition: color 0.1s ease; transition: color 0.1s ease; } /* Outside */ .ui.checkbox + label { vertical-align: middle; } /******************************* States *******************************/ /*-------------- Hover ---------------*/ .ui.checkbox .box:hover::before, .ui.checkbox label:hover::before { background: #ffffff; border-color: rgba(34, 36, 38, 0.35); } .ui.checkbox label:hover, .ui.checkbox + label:hover { color: rgba(0, 0, 0, 0.8); } /*-------------- Down ---------------*/ .ui.checkbox .box:active::before, .ui.checkbox label:active::before { background: #f9fafb; border-color: rgba(34, 36, 38, 0.35); } .ui.checkbox .box:active::after, .ui.checkbox label:active::after { color: rgba(0, 0, 0, 0.95); } .ui.checkbox input:active ~ label { color: rgba(0, 0, 0, 0.95); } /*-------------- Focus ---------------*/ .ui.checkbox input:focus ~ .box:before, .ui.checkbox input:focus ~ label:before { background: #ffffff; border-color: #96c8da; } .ui.checkbox input:focus ~ .box:after, .ui.checkbox input:focus ~ label:after { color: rgba(0, 0, 0, 0.95); } .ui.checkbox input:focus ~ label { color: rgba(0, 0, 0, 0.95); } /*-------------- Active ---------------*/ .ui.checkbox input:checked ~ .box:before, .ui.checkbox input:checked ~ label:before { background: #ffffff; border-color: rgba(34, 36, 38, 0.35); } .ui.checkbox input:checked ~ .box:after, .ui.checkbox input:checked ~ label:after { opacity: 1; color: rgba(0, 0, 0, 0.95); } /*-------------- Indeterminate ---------------*/ .ui.checkbox input:indeterminate ~ .box:before, .ui.checkbox input:indeterminate ~ label:before { background: #ffffff; border-color: rgba(34, 36, 38, 0.35); } .ui.checkbox input:indeterminate ~ .box:after, .ui.checkbox input:indeterminate ~ label:after { opacity: 1; color: rgba(0, 0, 0, 0.95); } /*-------------- Active Focus ---------------*/ .ui.checkbox input:indeterminate:focus ~ .box:before, .ui.checkbox input:indeterminate:focus ~ label:before, .ui.checkbox input:checked:focus ~ .box:before, .ui.checkbox input:checked:focus ~ label:before { background: #ffffff; border-color: #96c8da; } .ui.checkbox input:indeterminate:focus ~ .box:after, .ui.checkbox input:indeterminate:focus ~ label:after, .ui.checkbox input:checked:focus ~ .box:after, .ui.checkbox input:checked:focus ~ label:after { color: rgba(0, 0, 0, 0.95); } /*-------------- Read-Only ---------------*/ .ui.read-only.checkbox, .ui.read-only.checkbox label { cursor: default; } /*-------------- Disabled ---------------*/ .ui.disabled.checkbox .box:after, .ui.disabled.checkbox label, .ui.checkbox input[disabled] ~ .box:after, .ui.checkbox input[disabled] ~ label { cursor: default; opacity: 0.5; color: #000000; } /*-------------- Hidden ---------------*/ /* Initialized checkbox moves input below element to prevent manually triggering */ .ui.checkbox input.hidden { z-index: -1; } /* Selectable Label */ .ui.checkbox input.hidden + label { cursor: pointer; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /******************************* Types *******************************/ /*-------------- Radio ---------------*/ .ui.radio.checkbox { min-height: 15px; } .ui.radio.checkbox .box, .ui.radio.checkbox label { padding-left: 1.85714em; } /* Box */ .ui.radio.checkbox .box:before, .ui.radio.checkbox label:before { content: ''; -webkit-transform: none; -ms-transform: none; transform: none; width: 15px; height: 15px; border-radius: 500rem; top: 1px; left: 0px; } /* Bullet */ .ui.radio.checkbox .box:after, .ui.radio.checkbox label:after { border: none; content: '' !important; width: 15px; height: 15px; line-height: 15px; } /* Radio Checkbox */ .ui.radio.checkbox .box:after, .ui.radio.checkbox label:after { top: 1px; left: 0px; width: 15px; height: 15px; border-radius: 500rem; -webkit-transform: scale(0.46666667); -ms-transform: scale(0.46666667); transform: scale(0.46666667); background-color: rgba(0, 0, 0, 0.87); } /* Focus */ .ui.radio.checkbox input:focus ~ .box:before, .ui.radio.checkbox input:focus ~ label:before { background-color: #ffffff; } .ui.radio.checkbox input:focus ~ .box:after, .ui.radio.checkbox input:focus ~ label:after { background-color: rgba(0, 0, 0, 0.95); } /* Indeterminate */ .ui.radio.checkbox input:indeterminate ~ .box:after, .ui.radio.checkbox input:indeterminate ~ label:after { opacity: 0; } /* Active */ .ui.radio.checkbox input:checked ~ .box:before, .ui.radio.checkbox input:checked ~ label:before { background-color: #ffffff; } .ui.radio.checkbox input:checked ~ .box:after, .ui.radio.checkbox input:checked ~ label:after { background-color: rgba(0, 0, 0, 0.95); } /* Active Focus */ .ui.radio.checkbox input:focus:checked ~ .box:before, .ui.radio.checkbox input:focus:checked ~ label:before { background-color: #ffffff; } .ui.radio.checkbox input:focus:checked ~ .box:after, .ui.radio.checkbox input:focus:checked ~ label:after { background-color: rgba(0, 0, 0, 0.95); } /*-------------- Slider ---------------*/ .ui.slider.checkbox { min-height: 1.25rem; } /* Input */ .ui.slider.checkbox input { width: 3.5rem; height: 1.25rem; } /* Label */ .ui.slider.checkbox .box, .ui.slider.checkbox label { padding-left: 4.5rem; line-height: 1rem; color: rgba(0, 0, 0, 0.4); } /* Line */ .ui.slider.checkbox .box:before, .ui.slider.checkbox label:before { display: block; position: absolute; content: ''; border: none !important; left: 0em; z-index: 1; top: 0.4rem; background-color: rgba(0, 0, 0, 0.05); width: 3.5rem; height: 0.21428571rem; -webkit-transform: none; -ms-transform: none; transform: none; border-radius: 500rem; -webkit-transition: background 0.3s ease; transition: background 0.3s ease; } /* Handle */ .ui.slider.checkbox .box:after, .ui.slider.checkbox label:after { background: #ffffff -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: #ffffff linear-gradient(transparent, rgba(0, 0, 0, 0.05)); position: absolute; content: '' !important; opacity: 1; z-index: 2; border: none; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; width: 1.5rem; height: 1.5rem; top: -0.25rem; left: 0em; -webkit-transform: none; -ms-transform: none; transform: none; border-radius: 500rem; -webkit-transition: left 0.3s ease; transition: left 0.3s ease; } /* Focus */ .ui.slider.checkbox input:focus ~ .box:before, .ui.slider.checkbox input:focus ~ label:before { background-color: rgba(0, 0, 0, 0.15); border: none; } /* Hover */ .ui.slider.checkbox .box:hover, .ui.slider.checkbox label:hover { color: rgba(0, 0, 0, 0.8); } .ui.slider.checkbox .box:hover::before, .ui.slider.checkbox label:hover::before { background: rgba(0, 0, 0, 0.15); } /* Active */ .ui.slider.checkbox input:checked ~ .box, .ui.slider.checkbox input:checked ~ label { color: rgba(0, 0, 0, 0.95) !important; } .ui.slider.checkbox input:checked ~ .box:before, .ui.slider.checkbox input:checked ~ label:before { background-color: #545454 !important; } .ui.slider.checkbox input:checked ~ .box:after, .ui.slider.checkbox input:checked ~ label:after { left: 2rem; } /* Active Focus */ .ui.slider.checkbox input:focus:checked ~ .box, .ui.slider.checkbox input:focus:checked ~ label { color: rgba(0, 0, 0, 0.95) !important; } .ui.slider.checkbox input:focus:checked ~ .box:before, .ui.slider.checkbox input:focus:checked ~ label:before { background-color: #000000 !important; } /*-------------- Toggle ---------------*/ .ui.toggle.checkbox { min-height: 1.5rem; } /* Input */ .ui.toggle.checkbox input { width: 3.5rem; height: 1.5rem; } /* Label */ .ui.toggle.checkbox .box, .ui.toggle.checkbox label { min-height: 1.5rem; padding-left: 4.5rem; color: rgba(0, 0, 0, 0.87); } .ui.toggle.checkbox label { padding-top: 0.15em; } /* Switch */ .ui.toggle.checkbox .box:before, .ui.toggle.checkbox label:before { display: block; position: absolute; content: ''; z-index: 1; -webkit-transform: none; -ms-transform: none; transform: none; border: none; top: 0rem; background: rgba(0, 0, 0, 0.05); width: 3.5rem; height: 1.5rem; border-radius: 500rem; } /* Handle */ .ui.toggle.checkbox .box:after, .ui.toggle.checkbox label:after { background: #ffffff -webkit-linear-gradient(transparent, rgba(0, 0, 0, 0.05)); background: #ffffff linear-gradient(transparent, rgba(0, 0, 0, 0.05)); position: absolute; content: '' !important; opacity: 1; z-index: 2; border: none; box-shadow: 0px 1px 2px 0 rgba(34, 36, 38, 0.15), 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; width: 1.5rem; height: 1.5rem; top: 0rem; left: 0em; border-radius: 500rem; -webkit-transition: background 0.3s ease, left 0.3s ease; transition: background 0.3s ease, left 0.3s ease; } .ui.toggle.checkbox input ~ .box:after, .ui.toggle.checkbox input ~ label:after { left: -0.05rem; } /* Focus */ .ui.toggle.checkbox input:focus ~ .box:before, .ui.toggle.checkbox input:focus ~ label:before { background-color: rgba(0, 0, 0, 0.15); border: none; } /* Hover */ .ui.toggle.checkbox .box:hover::before, .ui.toggle.checkbox label:hover::before { background-color: rgba(0, 0, 0, 0.15); border: none; } /* Active */ .ui.toggle.checkbox input:checked ~ .box, .ui.toggle.checkbox input:checked ~ label { color: rgba(0, 0, 0, 0.95) !important; } .ui.toggle.checkbox input:checked ~ .box:before, .ui.toggle.checkbox input:checked ~ label:before { background-color: #2185d0 !important; } .ui.toggle.checkbox input:checked ~ .box:after, .ui.toggle.checkbox input:checked ~ label:after { left: 2.15rem; } /* Active Focus */ .ui.toggle.checkbox input:focus:checked ~ .box, .ui.toggle.checkbox input:focus:checked ~ label { color: rgba(0, 0, 0, 0.95) !important; } .ui.toggle.checkbox input:focus:checked ~ .box:before, .ui.toggle.checkbox input:focus:checked ~ label:before { background-color: #0d71bb !important; } /******************************* Variations *******************************/ /*-------------- Fitted ---------------*/ .ui.fitted.checkbox .box, .ui.fitted.checkbox label { padding-left: 0em !important; } .ui.fitted.toggle.checkbox, .ui.fitted.toggle.checkbox { width: 3.5rem; } .ui.fitted.slider.checkbox, .ui.fitted.slider.checkbox { width: 3.5rem; } /******************************* Theme Overrides *******************************/ @font-face { font-family: 'Checkbox'; src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBD8AAAC8AAAAYGNtYXAYVtCJAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zn4huwUAAAF4AAABYGhlYWQGPe1ZAAAC2AAAADZoaGVhB30DyAAAAxAAAAAkaG10eBBKAEUAAAM0AAAAHGxvY2EAmgESAAADUAAAABBtYXhwAAkALwAAA2AAAAAgbmFtZSC8IugAAAOAAAABknBvc3QAAwAAAAAFFAAAACAAAwMTAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADoAgPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6AL//f//AAAAAAAg6AD//f//AAH/4xgEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAEUAUQO7AvgAGgAAARQHAQYjIicBJjU0PwE2MzIfAQE2MzIfARYVA7sQ/hQQFhcQ/uMQEE4QFxcQqAF2EBcXEE4QAnMWEP4UEBABHRAXFhBOEBCoAXcQEE4QFwAAAAABAAABbgMlAkkAFAAAARUUBwYjISInJj0BNDc2MyEyFxYVAyUQEBf9SRcQEBAQFwK3FxAQAhJtFxAQEBAXbRcQEBAQFwAAAAABAAAASQMlA24ALAAAARUUBwYrARUUBwYrASInJj0BIyInJj0BNDc2OwE1NDc2OwEyFxYdATMyFxYVAyUQEBfuEBAXbhYQEO4XEBAQEBfuEBAWbhcQEO4XEBACEm0XEBDuFxAQEBAX7hAQF20XEBDuFxAQEBAX7hAQFwAAAQAAAAIAAHRSzT9fDzz1AAsEAAAAAADRsdR3AAAAANGx1HcAAAAAA7sDbgAAAAgAAgAAAAAAAAABAAADwP/AAAAEAAAAAAADuwABAAAAAAAAAAAAAAAAAAAABwQAAAAAAAAAAAAAAAIAAAAEAABFAyUAAAMlAAAAAAAAAAoAFAAeAE4AcgCwAAEAAAAHAC0AAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAIAAAAAQAAAAAAAgAHAGkAAQAAAAAAAwAIADkAAQAAAAAABAAIAH4AAQAAAAAABQALABgAAQAAAAAABgAIAFEAAQAAAAAACgAaAJYAAwABBAkAAQAQAAgAAwABBAkAAgAOAHAAAwABBAkAAwAQAEEAAwABBAkABAAQAIYAAwABBAkABQAWACMAAwABBAkABgAQAFkAAwABBAkACgA0ALBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhWZXJzaW9uIDIuMABWAGUAcgBzAGkAbwBuACAAMgAuADBDaGVja2JveABDAGgAZQBjAGsAYgBvAHhDaGVja2JveABDAGgAZQBjAGsAYgBvAHhSZWd1bGFyAFIAZQBnAHUAbABhAHJDaGVja2JveABDAGgAZQBjAGsAYgBvAHhGb250IGdlbmVyYXRlZCBieSBJY29Nb29uLgBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") format('truetype'); } /* Checkmark */ .ui.checkbox label:after, .ui.checkbox .box:after { font-family: 'Checkbox'; } /* Checked */ .ui.checkbox input:checked ~ .box:after, .ui.checkbox input:checked ~ label:after { content: '\e800'; } /* Indeterminate */ .ui.checkbox input:indeterminate ~ .box:after, .ui.checkbox input:indeterminate ~ label:after { font-size: 12px; content: '\e801'; } /* UTF Reference .check:before { content: '\e800'; } .dash:before { content: '\e801'; } .plus:before { content: '\e802'; } */ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Dimmer * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Dimmer *******************************/ .dimmable { position: relative; } .ui.dimmer { display: none; position: absolute; top: 0em !important; left: 0em !important; width: 100%; height: 100%; text-align: center; vertical-align: middle; background-color: rgba(0, 0, 0, 0.85); opacity: 0; line-height: 1; -webkit-animation-fill-mode: both; animation-fill-mode: both; -webkit-animation-duration: 0.5s; animation-duration: 0.5s; -webkit-transition: background-color 0.5s linear; transition: background-color 0.5s linear; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; will-change: opacity; z-index: 1000; } /* Dimmer Content */ .ui.dimmer > .content { width: 100%; height: 100%; display: table; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } .ui.dimmer > .content > * { display: table-cell; vertical-align: middle; color: #ffffff; } /* Loose Coupling */ .ui.segment > .ui.dimmer { border-radius: inherit !important; } /******************************* States *******************************/ .animating.dimmable:not(body), .dimmed.dimmable:not(body) { overflow: hidden; } .dimmed.dimmable > .ui.animating.dimmer, .dimmed.dimmable > .ui.visible.dimmer, .ui.active.dimmer { display: block; opacity: 1; } .ui.disabled.dimmer { width: 0 !important; height: 0 !important; } /******************************* Variations *******************************/ /*-------------- Page ---------------*/ .ui.page.dimmer { position: fixed; -webkit-transform-style: ''; transform-style: ''; -webkit-perspective: 2000px; perspective: 2000px; -webkit-transform-origin: center center; -ms-transform-origin: center center; transform-origin: center center; } body.animating.in.dimmable, body.dimmed.dimmable { overflow: hidden; } body.dimmable > .dimmer { position: fixed; } /*-------------- Blurring ---------------*/ .blurring.dimmable > :not(.dimmer) { -webkit-filter: blur(0px) grayscale(0); filter: blur(0px) grayscale(0); -webkit-transition: 800ms -webkit-filter ease, 800ms filter ease; transition: 800ms filter ease; } .blurring.dimmed.dimmable > :not(.dimmer) { -webkit-filter: blur(5px) grayscale(0.7); filter: blur(5px) grayscale(0.7); } /* Dimmer Color */ .blurring.dimmable > .dimmer { background-color: rgba(0, 0, 0, 0.6); } .blurring.dimmable > .inverted.dimmer { background-color: rgba(255, 255, 255, 0.6); } /*-------------- Aligned ---------------*/ .ui.dimmer > .top.aligned.content > * { vertical-align: top; } .ui.dimmer > .bottom.aligned.content > * { vertical-align: bottom; } /*-------------- Inverted ---------------*/ .ui.inverted.dimmer { background-color: rgba(255, 255, 255, 0.85); } .ui.inverted.dimmer > .content > * { color: #ffffff; } /*-------------- Simple ---------------*/ /* Displays without javascript */ .ui.simple.dimmer { display: block; overflow: hidden; opacity: 1; width: 0%; height: 0%; z-index: -100; background-color: rgba(0, 0, 0, 0); } .dimmed.dimmable > .ui.simple.dimmer { overflow: visible; opacity: 1; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.85); z-index: 1; } .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0); } .dimmed.dimmable > .ui.simple.inverted.dimmer { background-color: rgba(255, 255, 255, 0.85); } /******************************* Theme Overrides *******************************/ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Dropdown * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Dropdown *******************************/ .ui.dropdown { cursor: pointer; position: relative; display: inline-block; outline: none; text-align: left; -webkit-transition: box-shadow 0.1s ease, width 0.1s ease; transition: box-shadow 0.1s ease, width 0.1s ease; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /******************************* Content *******************************/ /*-------------- Menu ---------------*/ .ui.dropdown .menu { cursor: auto; position: absolute; display: none; outline: none; top: 100%; min-width: -webkit-max-content; min-width: -moz-max-content; min-width: max-content; margin: 0em; padding: 0em 0em; background: #ffffff; font-size: 1em; text-shadow: none; text-align: left; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); border: 1px solid rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; z-index: 11; will-change: transform, opacity; } .ui.dropdown .menu > * { white-space: nowrap; } /*-------------- Hidden Input ---------------*/ .ui.dropdown > input:not(.search):first-child, .ui.dropdown > select { display: none !important; } /*-------------- Dropdown Icon ---------------*/ .ui.dropdown > .dropdown.icon { position: relative; width: auto; font-size: 0.85714286em; margin: 0em 0em 0em 1em; } .ui.dropdown .menu > .item .dropdown.icon { width: auto; float: right; margin: 0em 0em 0em 1em; } .ui.dropdown .menu > .item .dropdown.icon + .text { margin-right: 1em; } /*-------------- Text ---------------*/ .ui.dropdown > .text { display: inline-block; -webkit-transition: none; transition: none; } /*-------------- Menu Item ---------------*/ .ui.dropdown .menu > .item { position: relative; cursor: pointer; display: block; border: none; height: auto; text-align: left; border-top: none; line-height: 1em; color: rgba(0, 0, 0, 0.87); padding: 0.71428571rem 1.14285714rem !important; font-size: 1rem; text-transform: none; font-weight: normal; box-shadow: none; -webkit-touch-callout: none; } .ui.dropdown .menu > .item:first-child { border-top-width: 0px; } /*-------------- Floated Content ---------------*/ .ui.dropdown > .text > [class*="right floated"], .ui.dropdown .menu .item > [class*="right floated"] { float: right !important; margin-right: 0em !important; margin-left: 1em !important; } .ui.dropdown > .text > [class*="left floated"], .ui.dropdown .menu .item > [class*="left floated"] { float: left !important; margin-left: 0em !important; margin-right: 1em !important; } .ui.dropdown .menu .item > .icon.floated, .ui.dropdown .menu .item > .flag.floated, .ui.dropdown .menu .item > .image.floated, .ui.dropdown .menu .item > img.floated { margin-top: 0em; } /*-------------- Menu Divider ---------------*/ .ui.dropdown .menu > .header { margin: 1rem 0rem 0.75rem; padding: 0em 1.14285714rem; color: rgba(0, 0, 0, 0.85); font-size: 0.78571429em; font-weight: bold; text-transform: uppercase; } .ui.dropdown .menu > .divider { border-top: 1px solid rgba(34, 36, 38, 0.1); height: 0em; margin: 0.5em 0em; } .ui.dropdown .menu > .input { width: auto; display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; margin: 1.14285714rem 0.71428571rem; min-width: 10rem; } .ui.dropdown .menu > .header + .input { margin-top: 0em; } .ui.dropdown .menu > .input:not(.transparent) input { padding: 0.5em 1em; } .ui.dropdown .menu > .input:not(.transparent) .button, .ui.dropdown .menu > .input:not(.transparent) .icon, .ui.dropdown .menu > .input:not(.transparent) .label { padding-top: 0.5em; padding-bottom: 0.5em; } /*----------------- Item Description -------------------*/ .ui.dropdown > .text > .description, .ui.dropdown .menu > .item > .description { float: right; margin: 0em 0em 0em 1em; color: rgba(0, 0, 0, 0.4); } /*----------------- Message -------------------*/ .ui.dropdown .menu > .message { padding: 0.71428571rem 1.14285714rem; font-weight: normal; } .ui.dropdown .menu > .message:not(.ui) { color: rgba(0, 0, 0, 0.4); } /*-------------- Sub Menu ---------------*/ .ui.dropdown .menu .menu { top: 0% !important; left: 100% !important; right: auto !important; margin: 0em 0em 0em -0.5em !important; border-radius: 0.28571429rem !important; z-index: 21 !important; } /* Hide Arrow */ .ui.dropdown .menu .menu:after { display: none; } /*-------------- Sub Elements ---------------*/ /* Icons / Flags / Labels / Image */ .ui.dropdown > .text > .icon, .ui.dropdown > .text > .label, .ui.dropdown > .text > .flag, .ui.dropdown > .text > img, .ui.dropdown > .text > .image { margin-top: 0em; } .ui.dropdown .menu > .item > .icon, .ui.dropdown .menu > .item > .label, .ui.dropdown .menu > .item > .flag, .ui.dropdown .menu > .item > .image, .ui.dropdown .menu > .item > img { margin-top: 0em; } .ui.dropdown > .text > .icon, .ui.dropdown > .text > .label, .ui.dropdown > .text > .flag, .ui.dropdown > .text > img, .ui.dropdown > .text > .image, .ui.dropdown .menu > .item > .icon, .ui.dropdown .menu > .item > .label, .ui.dropdown .menu > .item > .flag, .ui.dropdown .menu > .item > .image, .ui.dropdown .menu > .item > img { margin-left: 0em; float: none; margin-right: 0.71428571rem; } /*-------------- Image ---------------*/ .ui.dropdown > .text > img, .ui.dropdown > .text > .image, .ui.dropdown .menu > .item > .image, .ui.dropdown .menu > .item > img { display: inline-block; vertical-align: middle; width: auto; max-height: 2em; } /******************************* Coupling *******************************/ /*-------------- Menu ---------------*/ /* Remove Menu Item Divider */ .ui.dropdown .ui.menu > .item:before, .ui.menu .ui.dropdown .menu > .item:before { display: none; } /* Prevent Menu Item Border */ .ui.menu .ui.dropdown .menu .active.item { border-left: none; } /* Automatically float dropdown menu right on last menu item */ .ui.menu .right.menu .dropdown:last-child .menu, .ui.menu .right.dropdown.item .menu, .ui.buttons > .ui.dropdown:last-child .menu { left: auto; right: 0em; } /*-------------- Label ---------------*/ /* Dropdown Menu */ .ui.label.dropdown .menu { min-width: 100%; } /*-------------- Button ---------------*/ /* No Margin On Icon Button */ .ui.dropdown.icon.button > .dropdown.icon { margin: 0em; } .ui.button.dropdown .menu { min-width: 100%; } /******************************* Types *******************************/ /*-------------- Selection ---------------*/ /* Displays like a select box */ .ui.selection.dropdown { cursor: pointer; word-wrap: break-word; line-height: 1em; white-space: normal; outline: 0; -webkit-transform: rotateZ(0deg); transform: rotateZ(0deg); min-width: 14em; min-height: 2.7142em; background: #ffffff; display: inline-block; padding: 0.78571429em 2.6em 0.78571429em 1em; color: rgba(0, 0, 0, 0.87); box-shadow: none; border: 1px solid rgba(34, 36, 38, 0.15); border-radius: 0.28571429rem; -webkit-transition: box-shadow 0.1s ease, width 0.1s ease; transition: box-shadow 0.1s ease, width 0.1s ease; } .ui.selection.dropdown.visible, .ui.selection.dropdown.active { z-index: 10; } select.ui.dropdown { height: 38px; padding: 0.5em; border: 1px solid rgba(34, 36, 38, 0.15); visibility: visible; } .ui.selection.dropdown > .search.icon, .ui.selection.dropdown > .delete.icon, .ui.selection.dropdown > .dropdown.icon { cursor: pointer; position: absolute; top: auto; width: auto; z-index: 3; margin: -0.78571429em; padding: 0.78571429em; right: 1em; opacity: 0.8; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } /* Compact */ .ui.compact.selection.dropdown { min-width: 0px; } /* Selection Menu */ .ui.selection.dropdown .menu { overflow-x: hidden; overflow-y: auto; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-overflow-scrolling: touch; border-top-width: 0px !important; width: auto; outline: none; margin: 0px -1px; min-width: calc(100% + 2px ); width: calc(100% + 2px ); border-radius: 0em 0em 0.28571429rem 0.28571429rem; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } .ui.selection.dropdown .menu:after, .ui.selection.dropdown .menu:before { display: none; } /*-------------- Message ---------------*/ .ui.selection.dropdown .menu > .message { padding: 0.71428571rem 1.14285714rem; } @media only screen and (max-width: 767px) { .ui.selection.dropdown .menu { max-height: 7.58571429rem; } } @media only screen and (min-width: 768px) { .ui.selection.dropdown .menu { max-height: 10.11428571rem; } } @media only screen and (min-width: 992px) { .ui.selection.dropdown .menu { max-height: 15.17142857rem; } } @media only screen and (min-width: 1920px) { .ui.selection.dropdown .menu { max-height: 20.22857143rem; } } /* Menu Item */ .ui.selection.dropdown .menu > .item { border-top: 1px solid #fafafa; padding: 0.71428571rem 1.14285714rem !important; white-space: normal; word-wrap: normal; } /* Hover */ .ui.selection.dropdown:hover { border-color: rgba(34, 36, 38, 0.35); box-shadow: none; } /* Active */ .ui.selection.active.dropdown { border-color: #96c8da; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); } .ui.selection.active.dropdown .menu { border-color: #96c8da; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); } /* Focus */ .ui.selection.dropdown:focus { border-color: #96c8da; box-shadow: none; } .ui.selection.dropdown:focus .menu { border-color: #96c8da; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); } /* Visible */ .ui.selection.visible.dropdown > .text:not(.default) { font-weight: normal; color: rgba(0, 0, 0, 0.8); } /* Visible Hover */ .ui.selection.active.dropdown:hover { border-color: #96c8da; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); } .ui.selection.active.dropdown:hover .menu { border-color: #96c8da; box-shadow: 0px 2px 3px 0px rgba(34, 36, 38, 0.15); } /* Dropdown Icon */ .ui.active.selection.dropdown > .dropdown.icon, .ui.visible.selection.dropdown > .dropdown.icon { opacity: 1; z-index: 3; } /* Connecting Border */ .ui.active.selection.dropdown { border-bottom-left-radius: 0em !important; border-bottom-right-radius: 0em !important; } /*-------------- Searchable ---------------*/ /* Search Selection */ .ui.search.dropdown { min-width: ''; } /* Search Dropdown */ .ui.search.dropdown > input.search { background: none transparent !important; border: none !important; box-shadow: none !important; cursor: pointer; top: 0em; left: 0em; width: 100%; outline: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); padding: inherit; } /* Text Layering */ .ui.search.dropdown > input.search { position: absolute; z-index: 2; } .ui.search.dropdown > .text { cursor: text; position: relative; z-index: 3; } /* Search Selection */ .ui.search.selection.dropdown > input.search { line-height: 1.2142em; padding: 0.67861429em 2.6em 0.67861429em 1em; } /* Active/Visible Search */ .ui.search.dropdown.active > input.search, .ui.search.dropdown.visible > input.search { cursor: auto; } .ui.search.dropdown.active > .text, .ui.search.dropdown.visible > .text { pointer-events: none; } /* Filtered Text */ .ui.active.search.dropdown input.search:focus + .text .icon, .ui.active.search.dropdown input.search:focus + .text .flag { opacity: 0.45; } .ui.active.search.dropdown input.search:focus + .text { color: rgba(0, 0, 0, 0.4) !important; } /* Search Menu */ .ui.search.dropdown .menu { overflow-x: hidden; overflow-y: auto; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-overflow-scrolling: touch; } @media only screen and (max-width: 767px) { .ui.search.dropdown .menu { max-height: 7.58571429rem; } } @media only screen and (min-width: 768px) { .ui.search.dropdown .menu { max-height: 10.11428571rem; } } @media only screen and (min-width: 992px) { .ui.search.dropdown .menu { max-height: 15.17142857rem; } } @media only screen and (min-width: 1920px) { .ui.search.dropdown .menu { max-height: 20.22857143rem; } } /*-------------- Multiple ---------------*/ /* Multiple Selection */ .ui.multiple.dropdown { padding: 0.22620476em 2.6em 0.22620476em 0.28571429em; } .ui.multiple.dropdown .menu { cursor: auto; } /* Multiple Search Selection */ .ui.multiple.search.dropdown, .ui.multiple.search.dropdown > input.search { cursor: text; } /* Selection Label */ .ui.multiple.dropdown > .label { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; display: inline-block; vertical-align: top; white-space: normal; font-size: 1em; padding: 0.35714286em 0.71428571em; margin: 0.21428571em 0.28571429rem 0.21428571em 0em; box-shadow: 0px 0px 0px 1px rgba(34, 36, 38, 0.15) inset; } /* Dropdown Icon */ .ui.multiple.dropdown .dropdown.icon { margin: 0em -0.71428571em 0em 0em; padding: 0.5em; } /* Text */ .ui.multiple.dropdown > .text { position: static; padding: 0; max-width: 100%; margin: 0.45240952em 0em 0.45240952em 0.71428571em; line-height: 1.2142em; } .ui.multiple.dropdown > .label ~ .text { display: none; } /*----------------- Multiple Search -----------------*/ /* Prompt Text */ .ui.multiple.search.dropdown > .text { display: inline-block; position: absolute; top: 0; left: 0; padding: inherit; margin: 0.45240952em 0em 0.45240952em 0.71428571em; line-height: 1.2142em; } .ui.multiple.search.dropdown > .label ~ .text { display: none; } /* Search */ .ui.multiple.search.dropdown > input.search { position: static; padding: 0; max-width: 100%; margin: 0.45240952em 0em 0.45240952em 0.71428571em; width: 2.2em; line-height: 1.2142em; } /*-------------- Inline ---------------*/ .ui.inline.dropdown { cursor: pointer; display: inline-block; color: inherit; } .ui.inline.dropdown .dropdown.icon { margin: 0em 0.5em 0em 0.25em; vertical-align: baseline; } .ui.inline.dropdown > .text { font-weight: bold; } .ui.inline.dropdown .menu { cursor: auto; margin-top: 0.25em; border-radius: 0.28571429rem; } /******************************* States *******************************/ /*-------------------- Active ----------------------*/ /* Menu Item Active */ .ui.dropdown .menu .active.item { background: transparent; font-weight: bold; color: rgba(0, 0, 0, 0.95); box-shadow: none; z-index: 12; } /*-------------------- Hover ----------------------*/ /* Menu Item Hover */ .ui.dropdown .menu > .item:hover { background: rgba(0, 0, 0, 0.05); color: rgba(0, 0, 0, 0.95); z-index: 13; } /*-------------------- Loading ---------------------*/ /* Positioning */ .ui.loading.dropdown > i.icon:before, .ui.loading.dropdown > i.icon:after { left: 30% !important; } .ui.loading.dropdown > i.icon { top: 50% !important; } .ui.multiple.loading.dropdown > i.icon:before, .ui.multiple.loading.dropdown > i.icon:after { top: 0% !important; left: 0% !important; } .ui.loading.dropdown > i.icon:before { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.1); } .ui.loading.dropdown > i.icon:after { position: absolute; content: ''; top: 50%; left: 50%; box-shadow: 0px 0px 0px 1px transparent; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; -webkit-animation: dropdown-spin 0.6s linear; animation: dropdown-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 transparent transparent; border-style: solid; border-width: 0.2em; } /* Coupling */ .ui.loading.dropdown.button > i.icon:before, .ui.loading.dropdown.button > i.icon:after { display: none; } @-webkit-keyframes dropdown-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes dropdown-spin { from { -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); transform: rotate(360deg); } } /*-------------------- Default Text ----------------------*/ .ui.dropdown > .default.text, .ui.default.dropdown > .text { color: rgba(179, 179, 179, 0.7); } .ui.dropdown:hover > .default.text, .ui.default.dropdown:hover > .text { color: rgba(179, 179, 179, 0.7); } /*-------------------- Loading ----------------------*/ .ui.loading.dropdown > .text { -webkit-transition: none; transition: none; } /* Used To Check Position */ .ui.dropdown .loading.menu { display: block; visibility: hidden; z-index: -1; } /*-------------------- Keyboard Select ----------------------*/ /* Selected Item */ .ui.dropdown.selected, .ui.dropdown .menu .selected.item { background: rgba(0, 0, 0, 0.03); color: rgba(0, 0, 0, 0.95); } /*-------------------- Search Filtered ----------------------*/ /* Filtered Item */ .ui.dropdown > .filtered.text { visibility: hidden; } .ui.dropdown .filtered.item { display: none !important; } /*-------------------- Error ----------------------*/ .ui.dropdown.error, .ui.dropdown.error > .text, .ui.dropdown.error > .default.text { color: #9f3a38; } .ui.selection.dropdown.error { background: #fff6f6; border-color: #e0b4b4; } .ui.selection.dropdown.error:hover { border-color: #e0b4b4; } .ui.dropdown.error > .menu, .ui.dropdown.error > .menu .menu { border-color: #e0b4b4; } .ui.dropdown.error > .menu > .item { color: #9f3a38; } .ui.multiple.selection.error.dropdown > .label { border-color: #e0b4b4; } /* Item Hover */ .ui.dropdown.error > .menu > .item:hover { background-color: #fff2f2; } /* Item Active */ .ui.dropdown.error > .menu .active.item { background-color: #fdcfcf; } /*-------------------- Disabled ----------------------*/ /* Disabled */ .ui.disabled.dropdown, .ui.dropdown .menu > .disabled.item { cursor: default; pointer-events: none; opacity: 0.45; } /******************************* Variations *******************************/ /*-------------- Direction ---------------*/ /* Flyout Direction */ .ui.dropdown .menu { left: 0px; } /* Default Side (Right) */ .ui.dropdown .right.menu > .menu, .ui.dropdown .menu .right.menu { left: 100% !important; right: auto !important; border-radius: 0.28571429rem !important; } /* Left Flyout Menu */ .ui.dropdown > .left.menu .menu, .ui.dropdown .menu .left.menu { left: auto !important; right: 100% !important; border-radius: 0.28571429rem !important; } .ui.dropdown .item .left.dropdown.icon, .ui.dropdown .left.menu .item .dropdown.icon { width: auto; float: left; margin: 0em 0.71428571rem 0em 0em; } .ui.dropdown .item .left.dropdown.icon, .ui.dropdown .left.menu .item .dropdown.icon { width: auto; float: left; margin: 0em 0.71428571rem 0em 0em; } .ui.dropdown .item .left.dropdown.icon + .text, .ui.dropdown .left.menu .item .dropdown.icon + .text { margin-left: 1em; } /*-------------- Upward ---------------*/ /* Upward Main Menu */ .ui.upward.dropdown > .menu { top: auto; bottom: 100%; box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); border-radius: 0.28571429rem 0.28571429rem 0em 0em; } /* Upward Sub Menu */ .ui.dropdown .upward.menu { top: auto !important; bottom: 0 !important; } /* Active Upward */ .ui.simple.upward.active.dropdown, .ui.simple.upward.dropdown:hover { border-radius: 0.28571429rem 0.28571429rem 0em 0em !important; } .ui.upward.dropdown.button:not(.pointing):not(.floating).active { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } /* Selection */ .ui.upward.selection.dropdown .menu { border-top-width: 1px !important; border-bottom-width: 0px !important; box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); } .ui.upward.selection.dropdown:hover { box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.05); } /* Active Upward */ .ui.active.upward.selection.dropdown { border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; } /* Visible Upward */ .ui.upward.selection.dropdown.visible { box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.08); border-radius: 0em 0em 0.28571429rem 0.28571429rem !important; } /* Visible Hover Upward */ .ui.upward.active.selection.dropdown:hover { box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, 0.05); } .ui.upward.active.selection.dropdown:hover .menu { box-shadow: 0px -2px 3px 0px rgba(0, 0, 0, 0.08); } /*-------------- Simple ---------------*/ /* Selection Menu */ .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { overflow-x: hidden; overflow-y: auto; } .ui.scrolling.dropdown .menu { overflow-x: hidden; overflow-y: auto; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-overflow-scrolling: touch; min-width: 100% !important; width: auto !important; } .ui.dropdown .scrolling.menu { position: static; overflow-y: auto; border: none; box-shadow: none !important; border-radius: 0 !important; margin: 0 !important; min-width: 100% !important; width: auto !important; border-top: 1px solid rgba(34, 36, 38, 0.15); } .ui.scrolling.dropdown .menu .item.item.item, .ui.dropdown .scrolling.menu > .item.item.item { border-top: none; padding-right: calc( 1.14285714rem + 17px ) !important; } .ui.scrolling.dropdown .menu .item:first-child, .ui.dropdown .scrolling.menu .item:first-child { border-top: none; } .ui.dropdown > .animating.menu .scrolling.menu, .ui.dropdown > .visible.menu .scrolling.menu { display: block; } /* Scrollbar in IE */ @media all and (-ms-high-contrast: none) { .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { min-width: calc(100% - 17px ); } } @media only screen and (max-width: 767px) { .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { max-height: 9.71428571rem; } } @media only screen and (min-width: 768px) { .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { max-height: 14.57142857rem; } } @media only screen and (min-width: 992px) { .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { max-height: 19.42857143rem; } } @media only screen and (min-width: 1920px) { .ui.scrolling.dropdown .menu, .ui.dropdown .scrolling.menu { max-height: 19.42857143rem; } } /*-------------- Simple ---------------*/ /* Displays without javascript */ .ui.simple.dropdown .menu:before, .ui.simple.dropdown .menu:after { display: none; } .ui.simple.dropdown .menu { position: absolute; display: block; overflow: hidden; top: -9999px !important; opacity: 0; width: 0; height: 0; -webkit-transition: opacity 0.1s ease; transition: opacity 0.1s ease; } .ui.simple.active.dropdown, .ui.simple.dropdown:hover { border-bottom-left-radius: 0em !important; border-bottom-right-radius: 0em !important; } .ui.simple.active.dropdown > .menu, .ui.simple.dropdown:hover > .menu { overflow: visible; width: auto; height: auto; top: 100% !important; opacity: 1; } .ui.simple.dropdown > .menu > .item:active > .menu, .ui.simple.dropdown:hover > .menu > .item:hover > .menu { overflow: visible; width: auto; height: auto; top: 0% !important; left: 100% !important; opacity: 1; } .ui.simple.disabled.dropdown:hover .menu { display: none; height: 0px; width: 0px; overflow: hidden; } /* Visible */ .ui.simple.visible.dropdown > .menu { display: block; } /*-------------- Fluid ---------------*/ .ui.fluid.dropdown { display: block; width: 100%; min-width: 0em; } .ui.fluid.dropdown > .dropdown.icon { float: right; } /*-------------- Floating ---------------*/ .ui.floating.dropdown .menu { left: 0; right: auto; box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.08) !important; border-radius: 0.28571429rem !important; } .ui.floating.dropdown > .menu { margin-top: 0.5em !important; border-radius: 0.28571429rem !important; } /*-------------- Pointing ---------------*/ .ui.pointing.dropdown > .menu { top: 100%; margin-top: 0.71428571rem; border-radius: 0.28571429rem; } .ui.pointing.dropdown > .menu:after { display: block; position: absolute; pointer-events: none; content: ''; visibility: visible; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); width: 0.5em; height: 0.5em; box-shadow: -1px -1px 0px 1px rgba(34, 36, 38, 0.15); background: #ffffff; z-index: 2; } .ui.pointing.dropdown > .menu:after { top: -0.25em; left: 50%; margin: 0em 0em 0em -0.25em; } /* Top Left Pointing */ .ui.top.left.pointing.dropdown > .menu { top: 100%; bottom: auto; left: 0%; right: auto; margin: 1em 0em 0em; } .ui.top.left.pointing.dropdown > .menu { top: 100%; bottom: auto; left: 0%; right: auto; margin: 1em 0em 0em; } .ui.top.left.pointing.dropdown > .menu:after { top: -0.25em; left: 1em; right: auto; margin: 0em; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } /* Top Right Pointing */ .ui.top.right.pointing.dropdown > .menu { top: 100%; bottom: auto; right: 0%; left: auto; margin: 1em 0em 0em; } .ui.top.right.pointing.dropdown > .menu:after { top: -0.25em; left: auto; right: 1em; margin: 0em; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); } /* Left Pointing */ .ui.left.pointing.dropdown > .menu { top: 0%; left: 100%; right: auto; margin: 0em 0em 0em 1em; } .ui.left.pointing.dropdown > .menu:after { top: 1em; left: -0.25em; margin: 0em 0em 0em 0em; -webkit-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } /* Right Pointing */ .ui.right.pointing.dropdown > .menu { top: 0%; left: auto; right: 100%; margin: 0em 1em 0em 0em; } .ui.right.pointing.dropdown > .menu:after { top: 1em; left: auto; right: -0.25em; margin: 0em 0em 0em 0em; -webkit-transform: rotate(135deg); -ms-transform: rotate(135deg); transform: rotate(135deg); } /* Bottom Pointing */ .ui.bottom.pointing.dropdown > .menu { top: auto; bottom: 100%; left: 0%; right: auto; margin: 0em 0em 1em; } .ui.bottom.pointing.dropdown > .menu:after { top: auto; bottom: -0.25em; right: auto; margin: 0em; -webkit-transform: rotate(-135deg); -ms-transform: rotate(-135deg); transform: rotate(-135deg); } /* Reverse Sub-Menu Direction */ .ui.bottom.pointing.dropdown > .menu .menu { top: auto !important; bottom: 0px !important; } /* Bottom Left */ .ui.bottom.left.pointing.dropdown > .menu { left: 0%; right: auto; } .ui.bottom.left.pointing.dropdown > .menu:after { left: 1em; right: auto; } /* Bottom Right */ .ui.bottom.right.pointing.dropdown > .menu { right: 0%; left: auto; } .ui.bottom.right.pointing.dropdown > .menu:after { left: auto; right: 1em; } /* Upward pointing */ .ui.upward.pointing.dropdown > .menu, .ui.upward.top.pointing.dropdown > .menu { top: auto; bottom: 100%; margin: 0em 0em 0.71428571rem; border-radius: 0.28571429rem; } .ui.upward.pointing.dropdown > .menu:after, .ui.upward.top.pointing.dropdown > .menu:after { top: 100%; bottom: auto; box-shadow: 1px 1px 0px 1px rgba(34, 36, 38, 0.15); margin: -0.25em 0em 0em; } /******************************* Theme Overrides *******************************/ /* Dropdown Carets */ @font-face { font-family: 'Dropdown'; src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjB5AAAAC8AAAAYGNtYXAPfuIIAAABHAAAAExnYXNwAAAAEAAAAWgAAAAIZ2x5Zjo82LgAAAFwAAABVGhlYWQAQ88bAAACxAAAADZoaGVhAwcB6QAAAvwAAAAkaG10eAS4ABIAAAMgAAAAIGxvY2EBNgDeAAADQAAAABJtYXhwAAoAFgAAA1QAAAAgbmFtZVcZpu4AAAN0AAABRXBvc3QAAwAAAAAEvAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADw2gHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEADgAAAAKAAgAAgACAAEAIPDa//3//wAAAAAAIPDX//3//wAB/+MPLQADAAEAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAIABJQElABMAABM0NzY3BTYXFhUUDwEGJwYvASY1AAUGBwEACAUGBoAFCAcGgAUBEgcGBQEBAQcECQYHfwYBAQZ/BwYAAQAAAG4BJQESABMAADc0PwE2MzIfARYVFAcGIyEiJyY1AAWABgcIBYAGBgUI/wAHBgWABwaABQWABgcHBgUFBgcAAAABABIASQC3AW4AEwAANzQ/ATYXNhcWHQEUBwYnBi8BJjUSBoAFCAcFBgYFBwgFgAbbBwZ/BwEBBwQJ/wgEBwEBB38GBgAAAAABAAAASQClAW4AEwAANxE0NzYzMh8BFhUUDwEGIyInJjUABQYHCAWABgaABQgHBgVbAQAIBQYGgAUIBwWABgYFBwAAAAEAAAABAADZuaKOXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAAAAACgAUAB4AQgBkAIgAqgAAAAEAAAAIABQAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAOAK4AAQAAAAAAAQAOAAAAAQAAAAAAAgAOAEcAAQAAAAAAAwAOACQAAQAAAAAABAAOAFUAAQAAAAAABQAWAA4AAQAAAAAABgAHADIAAQAAAAAACgA0AGMAAwABBAkAAQAOAAAAAwABBAkAAgAOAEcAAwABBAkAAwAOACQAAwABBAkABAAOAFUAAwABBAkABQAWAA4AAwABBAkABgAOADkAAwABBAkACgA0AGMAaQBjAG8AbQBvAG8AbgBWAGUAcgBzAGkAbwBuACAAMQAuADAAaQBjAG8AbQBvAG8Abmljb21vb24AaQBjAG8AbQBvAG8AbgBSAGUAZwB1AGwAYQByAGkAYwBvAG0AbwBvAG4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=") format('truetype'), url("data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AAAVwAAoAAAAABSgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAAdkAAAHZLDXE/09TLzIAAALQAAAAYAAAAGAIIweQY21hcAAAAzAAAABMAAAATA9+4ghnYXNwAAADfAAAAAgAAAAIAAAAEGhlYWQAAAOEAAAANgAAADYAQ88baGhlYQAAA7wAAAAkAAAAJAMHAelobXR4AAAD4AAAACAAAAAgBLgAEm1heHAAAAQAAAAABgAAAAYACFAAbmFtZQAABAgAAAFFAAABRVcZpu5wb3N0AAAFUAAAACAAAAAgAAMAAAEABAQAAQEBCGljb21vb24AAQIAAQA6+BwC+BsD+BgEHgoAGVP/i4seCgAZU/+LiwwHi2v4lPh0BR0AAACIDx0AAACNER0AAAAJHQAAAdASAAkBAQgPERMWGyAlKmljb21vb25pY29tb29udTB1MXUyMHVGMEQ3dUYwRDh1RjBEOXVGMERBAAACAYkABgAIAgABAAQABwAKAA0AVgCfAOgBL/yUDvyUDvyUDvuUDvtvi/emFYuQjZCOjo+Pj42Qiwj3lIsFkIuQiY6Hj4iNhouGi4aJh4eHCPsU+xQFiIiGiYaLhouHjYeOCPsU9xQFiI+Jj4uQCA77b4v3FBWLkI2Pjo8I9xT3FAWPjo+NkIuQi5CJjogI9xT7FAWPh42Hi4aLhomHh4eIiIaJhosI+5SLBYaLh42HjoiPiY+LkAgO+92d928Vi5CNkI+OCPcU9xQFjo+QjZCLkIuPiY6Hj4iNhouGCIv7lAWLhomHh4iIh4eJhouGi4aNiI8I+xT3FAWHjomPi5AIDvvdi+YVi/eUBYuQjZCOjo+Pj42Qi5CLkImOhwj3FPsUBY+IjYaLhouGiYeHiAj7FPsUBYiHhomGi4aLh42Hj4iOiY+LkAgO+JQU+JQViwwKAAAAAAMCAAGQAAUAAAFMAWYAAABHAUwBZgAAAPUAGQCEAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAA8NoB4P/g/+AB4AAgAAAAAQAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAA4AAAACgAIAAIAAgABACDw2v/9//8AAAAAACDw1//9//8AAf/jDy0AAwABAAAAAAAAAAAAAAABAAH//wAPAAEAAAABAAA5emozXw889QALAgAAAAAA0ABHWAAAAADQAEdYAAAAAAElAW4AAAAIAAIAAAAAAAAAAQAAAeD/4AAAAgAAAAAAASUAAQAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAABAAAAASUAAAElAAAAtwASALcAAAAAUAAACAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoANABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoANABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADEALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4ALgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") format('woff'); font-weight: normal; font-style: normal; } .ui.dropdown > .dropdown.icon { font-family: 'Dropdown'; line-height: 1; height: 1em; width: 1.23em; -webkit-backface-visibility: hidden; backface-visibility: hidden; font-weight: normal; font-style: normal; text-align: center; } .ui.dropdown > .dropdown.icon { width: auto; } .ui.dropdown > .dropdown.icon:before { content: '\f0d7'; } /* Sub Menu */ .ui.dropdown .menu .item .dropdown.icon:before { content: '\f0da' ; } .ui.dropdown .item .left.dropdown.icon:before, .ui.dropdown .left.menu .item .dropdown.icon:before { content: "\f0d9" ; } /* Vertical Menu Dropdown */ .ui.vertical.menu .dropdown.item > .dropdown.icon:before { content: "\f0da" ; } /* Icons for Reference .dropdown.down.icon { content: "\f0d7"; } .dropdown.up.icon { content: "\f0d8"; } .dropdown.left.icon { content: "\f0d9"; } .dropdown.icon.icon { content: "\f0da"; } */ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Video * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Types *******************************/ .ui.embed { position: relative; max-width: 100%; height: 0px; overflow: hidden; background: #dcddde; padding-bottom: 56.25%; } /*----------------- Embedded Content ------------------*/ .ui.embed iframe, .ui.embed embed, .ui.embed object { position: absolute; border: none; width: 100%; height: 100%; top: 0px; left: 0px; margin: 0em; padding: 0em; } /*----------------- Embed ------------------*/ .ui.embed > .embed { display: none; } /*-------------- Placeholder ---------------*/ .ui.embed > .placeholder { position: absolute; cursor: pointer; top: 0px; left: 0px; display: block; width: 100%; height: 100%; background-color: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); } /*-------------- Icon ---------------*/ .ui.embed > .icon { cursor: pointer; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 2; } .ui.embed > .icon:after { position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; z-index: 3; content: ''; background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); opacity: 0.5; -webkit-transition: opacity 0.5s ease; transition: opacity 0.5s ease; } .ui.embed > .icon:before { position: absolute; top: 50%; left: 50%; z-index: 4; -webkit-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); color: #ffffff; font-size: 6rem; text-shadow: 0px 2px 10px rgba(34, 36, 38, 0.2); -webkit-transition: opacity 0.5s ease, color 0.5s ease; transition: opacity 0.5s ease, color 0.5s ease; z-index: 10; } /******************************* States *******************************/ /*-------------- Hover ---------------*/ .ui.embed .icon:hover:after { background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); opacity: 1; } .ui.embed .icon:hover:before { color: #ffffff; } /*-------------- Active ---------------*/ .ui.active.embed > .icon, .ui.active.embed > .placeholder { display: none; } .ui.active.embed > .embed { display: block; } /******************************* Video Overrides *******************************/ /******************************* Site Overrides *******************************/ /******************************* Variations *******************************/ .ui.square.embed { padding-bottom: 100%; } .ui[class*="4:3"].embed { padding-bottom: 75%; } .ui[class*="16:9"].embed { padding-bottom: 56.25%; } .ui[class*="21:9"].embed { padding-bottom: 42.85714286%; } /*! * # Semantic UI 2.1.7 - Modal * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Modal *******************************/ .ui.modal { display: none; position: fixed; z-index: 1001; top: 50%; left: 50%; text-align: left; background: #ffffff; border: none; box-shadow: 1px 3px 3px 0px rgba(0, 0, 0, 0.2), 1px 3px 15px 2px rgba(0, 0, 0, 0.2); -webkit-transform-origin: 50% 25%; -ms-transform-origin: 50% 25%; transform-origin: 50% 25%; border-radius: 0.28571429rem; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; will-change: top, left, margin, transform, opacity; } .ui.modal > :first-child:not(.icon), .ui.modal > .icon:first-child + * { border-top-left-radius: 0.28571429rem; border-top-right-radius: 0.28571429rem; } .ui.modal > :last-child { border-bottom-left-radius: 0.28571429rem; border-bottom-right-radius: 0.28571429rem; } /******************************* Content *******************************/ /*-------------- Close ---------------*/ .ui.modal > .close { cursor: pointer; position: absolute; top: -2.5rem; right: -2.5rem; z-index: 1; opacity: 0.8; font-size: 1.25em; color: #ffffff; width: 2.25rem; height: 2.25rem; padding: 0.625rem 0rem 0rem 0rem; } .ui.modal > .close:hover { opacity: 1; } /*-------------- Header ---------------*/ .ui.modal > .header { display: block; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; background: #ffffff; margin: 0em; padding: 1.25rem 1.5rem; box-shadow: none; color: rgba(0, 0, 0, 0.85); border-bottom: 1px solid rgba(34, 36, 38, 0.15); } .ui.modal > .header:not(.ui) { font-size: 1.42857143rem; line-height: 1.2857em; font-weight: bold; } /*-------------- Content ---------------*/ .ui.modal > .content { display: block; width: 100%; font-size: 1em; line-height: 1.4; padding: 1.5rem; background: #ffffff; } .ui.modal > .image.content { display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; } /* Image */ .ui.modal > .content > .image { display: block; -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; width: ''; -webkit-align-self: top; -ms-flex-item-align: top; align-self: top; } .ui.modal > [class*="top aligned"] { -webkit-align-self: top; -ms-flex-item-align: top; align-self: top; } .ui.modal > [class*="middle aligned"] { -webkit-align-self: middle; -ms-flex-item-align: middle; align-self: middle; } .ui.modal > [class*="stretched"] { -webkit-align-self: stretch; -ms-flex-item-align: stretch; align-self: stretch; } /* Description */ .ui.modal > .content > .description { display: block; -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; min-width: 0px; -webkit-align-self: top; -ms-flex-item-align: top; align-self: top; } .ui.modal > .content > .icon + .description, .ui.modal > .content > .image + .description { -webkit-box-flex: 0; -webkit-flex: 0 1 auto; -ms-flex: 0 1 auto; flex: 0 1 auto; min-width: ''; width: auto; padding-left: 2em; } /*rtl:ignore*/ .ui.modal > .content > .image > i.icon { margin: 0em; opacity: 1; width: auto; line-height: 1; font-size: 8rem; } /*-------------- Actions ---------------*/ .ui.modal > .actions { background: #f9fafb; padding: 1rem 1rem; border-top: 1px solid rgba(34, 36, 38, 0.15); text-align: right; } .ui.modal .actions > .button { margin-left: 0.75em; } /*------------------- Responsive --------------------*/ /* Modal Width */ @media only screen and (max-width: 767px) { .ui.modal { width: 95%; margin: 0em 0em 0em -47.5%; } } @media only screen and (min-width: 768px) { .ui.modal { width: 88%; margin: 0em 0em 0em -44%; } } @media only screen and (min-width: 992px) { .ui.modal { width: 850px; margin: 0em 0em 0em -425px; } } @media only screen and (min-width: 1200px) { .ui.modal { width: 900px; margin: 0em 0em 0em -450px; } } @media only screen and (min-width: 1920px) { .ui.modal { width: 950px; margin: 0em 0em 0em -475px; } } /* Tablet and Mobile */ @media only screen and (max-width: 991px) { .ui.modal > .header { padding-right: 2.25rem; } .ui.modal > .close { top: 1.0535rem; right: 1rem; color: rgba(0, 0, 0, 0.87); } } /* Mobile */ @media only screen and (max-width: 767px) { .ui.modal > .header { padding: 0.75rem 1rem !important; padding-right: 2.25rem !important; } .ui.modal > .content { display: block; padding: 1rem !important; } .ui.modal > .close { top: 0.5rem !important; right: 0.5rem !important; } /*rtl:ignore*/ .ui.modal .image.content { -webkit-box-orient: vertical; -webkit-box-direction: normal; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; } .ui.modal .content > .image { display: block; max-width: 100%; margin: 0em auto !important; text-align: center; padding: 0rem 0rem 1rem !important; } .ui.modal > .content > .image > i.icon { font-size: 5rem; text-align: center; } /*rtl:ignore*/ .ui.modal .content > .description { display: block; width: 100% !important; margin: 0em !important; padding: 1rem 0rem !important; box-shadow: none; } /* Let Buttons Stack */ .ui.modal > .actions { padding: 1rem 1rem 0rem !important; } .ui.modal .actions > .buttons, .ui.modal .actions > .button { margin-bottom: 1rem; } } /*-------------- Coupling ---------------*/ .ui.inverted.dimmer > .ui.modal { box-shadow: 1px 3px 10px 2px rgba(0, 0, 0, 0.2); } /******************************* Types *******************************/ .ui.basic.modal { background-color: transparent; border: none; border-radius: 0em; box-shadow: none !important; color: #ffffff; } .ui.basic.modal > .header, .ui.basic.modal > .content, .ui.basic.modal > .actions { background-color: transparent; } .ui.basic.modal > .header { color: #ffffff; } .ui.basic.modal > .close { top: 1rem; right: 1.5rem; } .ui.inverted.dimmer > .basic.modal { color: rgba(0, 0, 0, 0.87); } .ui.inverted.dimmer > .ui.basic.modal > .header { color: rgba(0, 0, 0, 0.85); } /* Tablet and Mobile */ @media only screen and (max-width: 991px) { .ui.basic.modal > .close { color: #ffffff; } } /******************************* States *******************************/ .ui.active.modal { display: block; } /******************************* Variations *******************************/ /*-------------- Scrolling ---------------*/ /* A modal that cannot fit on the page */ .scrolling.dimmable.dimmed { overflow: hidden; } .scrolling.dimmable.dimmed > .dimmer { overflow: auto; -webkit-overflow-scrolling: touch; } .scrolling.dimmable > .dimmer { position: fixed; } .modals.dimmer .ui.scrolling.modal { position: static !important; margin: 3.5rem auto !important; } /* undetached scrolling */ .scrolling.undetached.dimmable.dimmed { overflow: auto; -webkit-overflow-scrolling: touch; } .scrolling.undetached.dimmable.dimmed > .dimmer { overflow: hidden; } .scrolling.undetached.dimmable .ui.scrolling.modal { position: absolute; left: 50%; margin-top: 3.5rem !important; } /* Coupling with Sidebar */ .undetached.dimmable.dimmed > .pusher { z-index: auto; } @media only screen and (max-width: 991px) { .modals.dimmer .ui.scrolling.modal { margin-top: 1rem !important; margin-bottom: 1rem !important; } } /*-------------- Full Screen ---------------*/ .ui.fullscreen.modal { width: 95% !important; left: 2.5% !important; margin: 1em auto; } .ui.fullscreen.scrolling.modal { left: 0em !important; } .ui.fullscreen.modal > .header { padding-right: 2.25rem; } .ui.fullscreen.modal > .close { top: 1.0535rem; right: 1rem; color: rgba(0, 0, 0, 0.87); } /*-------------- Size ---------------*/ .ui.modal { font-size: 1rem; } /* Small */ .ui.small.modal > .header:not(.ui) { font-size: 1.3em; } /* Small Modal Width */ @media only screen and (max-width: 767px) { .ui.small.modal { width: 95%; margin: 0em 0em 0em -47.5%; } } @media only screen and (min-width: 768px) { .ui.small.modal { width: 70.4%; margin: 0em 0em 0em -35.2%; } } @media only screen and (min-width: 992px) { .ui.small.modal { width: 680px; margin: 0em 0em 0em -340px; } } @media only screen and (min-width: 1200px) { .ui.small.modal { width: 720px; margin: 0em 0em 0em -360px; } } @media only screen and (min-width: 1920px) { .ui.small.modal { width: 760px; margin: 0em 0em 0em -380px; } } /* Large Modal Width */ .ui.large.modal > .header { font-size: 1.6em; } @media only screen and (max-width: 767px) { .ui.large.modal { width: 95%; margin: 0em 0em 0em -47.5%; } } @media only screen and (min-width: 768px) { .ui.large.modal { width: 88%; margin: 0em 0em 0em -44%; } } @media only screen and (min-width: 992px) { .ui.large.modal { width: 1020px; margin: 0em 0em 0em -510px; } } @media only screen and (min-width: 1200px) { .ui.large.modal { width: 1080px; margin: 0em 0em 0em -540px; } } @media only screen and (min-width: 1920px) { .ui.large.modal { width: 1140px; margin: 0em 0em 0em -570px; } } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Nag * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Nag *******************************/ .ui.nag { display: none; opacity: 0.95; position: relative; top: 0em; left: 0px; z-index: 999; min-height: 0em; width: 100%; margin: 0em; padding: 0.75em 1em; background: #555555; box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); font-size: 1rem; text-align: center; color: rgba(0, 0, 0, 0.87); border-radius: 0em 0em 0.28571429rem 0.28571429rem; -webkit-transition: 0.2s background ease; transition: 0.2s background ease; } a.ui.nag { cursor: pointer; } .ui.nag > .title { display: inline-block; margin: 0em 0.5em; color: #ffffff; } .ui.nag > .close.icon { cursor: pointer; opacity: 0.4; position: absolute; top: 50%; right: 1em; font-size: 1em; margin: -0.5em 0em 0em; color: #ffffff; -webkit-transition: opacity 0.2s ease; transition: opacity 0.2s ease; } /******************************* States *******************************/ /* Hover */ .ui.nag:hover { background: #555555; opacity: 1; } .ui.nag .close:hover { opacity: 1; } /******************************* Variations *******************************/ /*-------------- Static ---------------*/ .ui.overlay.nag { position: absolute; display: block; } /*-------------- Fixed ---------------*/ .ui.fixed.nag { position: fixed; } /*-------------- Bottom ---------------*/ .ui.bottom.nags, .ui.bottom.nag { border-radius: 0.28571429rem 0.28571429rem 0em 0em; top: auto; bottom: 0em; } /*-------------- White ---------------*/ .ui.inverted.nags .nag, .ui.inverted.nag { background-color: #f3f4f5; color: rgba(0, 0, 0, 0.85); } .ui.inverted.nags .nag .close, .ui.inverted.nags .nag .title, .ui.inverted.nag .close, .ui.inverted.nag .title { color: rgba(0, 0, 0, 0.4); } /******************************* Groups *******************************/ .ui.nags .nag { border-radius: 0em !important; } .ui.nags .nag:last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.bottom.nags .nag:last-child { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } /******************************* Theme Overrides *******************************/ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Popup * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Popup *******************************/ .ui.popup { display: none; position: absolute; top: 0px; right: 0px; /* Fixes content being squished when inline (moz only) */ min-width: -webkit-min-content; min-width: -moz-min-content; min-width: min-content; z-index: 1900; border: 1px solid #d4d4d5; line-height: 1.4285em; max-width: 250px; background: #ffffff; padding: 0.833em 1em; font-weight: normal; font-style: normal; color: rgba(0, 0, 0, 0.87); border-radius: 0.28571429rem; box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.08); } .ui.popup > .header { padding: 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1.125em; line-height: 1.2; font-weight: bold; } .ui.popup > .header + .content { padding-top: 0.5em; } .ui.popup:before { position: absolute; content: ''; width: 0.75em; height: 0.75em; background: #ffffff; -webkit-transform: rotate(45deg); -ms-transform: rotate(45deg); transform: rotate(45deg); z-index: 2; box-shadow: 1px 1px 0px 0px #bababc; } /******************************* Types *******************************/ /*-------------- Spacing ---------------*/ .ui.popup { margin: 0em; } /* Extending from Top */ .ui.top.popup { margin: 0em 0em 0.75em; } .ui.top.left.popup { -webkit-transform-origin: left bottom; -ms-transform-origin: left bottom; transform-origin: left bottom; } .ui.top.center.popup { -webkit-transform-origin: center bottom; -ms-transform-origin: center bottom; transform-origin: center bottom; } .ui.top.right.popup { -webkit-transform-origin: right bottom; -ms-transform-origin: right bottom; transform-origin: right bottom; } /* Extending from Vertical Center */ .ui.left.center.popup { margin: 0em 0.75em 0em 0em; -webkit-transform-origin: right 50%; -ms-transform-origin: right 50%; transform-origin: right 50%; } .ui.right.center.popup { margin: 0em 0em 0em 0.75em; -webkit-transform-origin: left 50%; -ms-transform-origin: left 50%; transform-origin: left 50%; } /* Extending from Bottom */ .ui.bottom.popup { margin: 0.75em 0em 0em; } .ui.bottom.left.popup { -webkit-transform-origin: left top; -ms-transform-origin: left top; transform-origin: left top; } .ui.bottom.center.popup { -webkit-transform-origin: center top; -ms-transform-origin: center top; transform-origin: center top; } .ui.bottom.right.popup { -webkit-transform-origin: right top; -ms-transform-origin: right top; transform-origin: right top; } /*-------------- Pointer ---------------*/ /*--- Below ---*/ .ui.bottom.center.popup:before { margin-left: -0.325em; top: -0.325em; left: 50%; right: auto; bottom: auto; box-shadow: -1px -1px 0px 0px #bababc; } .ui.bottom.left.popup { margin-left: 0em; } /*rtl:rename*/ .ui.bottom.left.popup:before { top: -0.325em; left: 1em; right: auto; bottom: auto; margin-left: 0em; box-shadow: -1px -1px 0px 0px #bababc; } .ui.bottom.right.popup { margin-right: 0em; } /*rtl:rename*/ .ui.bottom.right.popup:before { top: -0.325em; right: 1em; bottom: auto; left: auto; margin-left: 0em; box-shadow: -1px -1px 0px 0px #bababc; } /*--- Above ---*/ .ui.top.center.popup:before { top: auto; right: auto; bottom: -0.325em; left: 50%; margin-left: -0.325em; } .ui.top.left.popup { margin-left: 0em; } /*rtl:rename*/ .ui.top.left.popup:before { bottom: -0.325em; left: 1em; top: auto; right: auto; margin-left: 0em; } .ui.top.right.popup { margin-right: 0em; } /*rtl:rename*/ .ui.top.right.popup:before { bottom: -0.325em; right: 1em; top: auto; left: auto; margin-left: 0em; } /*--- Left Center ---*/ /*rtl:rename*/ .ui.left.center.popup:before { top: 50%; right: -0.325em; bottom: auto; left: auto; margin-top: -0.325em; box-shadow: 1px -1px 0px 0px #bababc; } /*--- Right Center ---*/ /*rtl:rename*/ .ui.right.center.popup:before { top: 50%; left: -0.325em; bottom: auto; right: auto; margin-top: -0.325em; box-shadow: -1px 1px 0px 0px #bababc; } /* Arrow Color By Location */ .ui.bottom.popup:before { background: #ffffff; } .ui.right.center.popup:before, .ui.left.center.popup:before { background: #ffffff; } .ui.top.popup:before { background: #ffffff; } /* Inverted Arrow Color */ .ui.inverted.bottom.popup:before { background: #1b1c1d; } .ui.inverted.right.center.popup:before, .ui.inverted.left.center.popup:before { background: #1b1c1d; } .ui.inverted.top.popup:before { background: #1b1c1d; } /******************************* Coupling *******************************/ /* Immediate Nested Grid */ .ui.popup > .ui.grid:not(.padded) { width: calc(100% + 1.75rem); margin: -0.7rem -0.875rem; } /******************************* States *******************************/ .ui.loading.popup { display: block; visibility: hidden; z-index: -1; } .ui.animating.popup, .ui.visible.popup { display: block; } .ui.visible.popup { -webkit-transform: translateZ(0px); transform: translateZ(0px); -webkit-backface-visibility: hidden; backface-visibility: hidden; } /******************************* Variations *******************************/ /*-------------- Basic ---------------*/ .ui.basic.popup:before { display: none; } /*-------------- Wide ---------------*/ .ui.wide.popup { max-width: 350px; } .ui[class*="very wide"].popup { max-width: 550px; } @media only screen and (max-width: 767px) { .ui.wide.popup, .ui[class*="very wide"].popup { max-width: 250px; } } /*-------------- Fluid ---------------*/ .ui.fluid.popup { width: 100%; max-width: none; } /*-------------- Colors ---------------*/ /* Inverted colors */ .ui.inverted.popup { background: #1b1c1d; color: #ffffff; border: none; box-shadow: none; } .ui.inverted.popup .header { background-color: none; color: #ffffff; } .ui.inverted.popup:before { background-color: #1b1c1d; box-shadow: none !important; } /*-------------- Flowing ---------------*/ .ui.flowing.popup { max-width: none; } /*-------------- Sizes ---------------*/ .ui.mini.popup { font-size: 0.71428571rem; } .ui.tiny.popup { font-size: 0.85714286rem; } .ui.small.popup { font-size: 0.92857143rem; } .ui.popup { font-size: 1rem; } .ui.large.popup { font-size: 1.14285714rem; } .ui.huge.popup { font-size: 1.42857143rem; } /******************************* Theme Overrides *******************************/ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Progress Bar * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Progress *******************************/ .ui.progress { position: relative; display: block; max-width: 100%; border: none; margin: 1em 0em 2.5em; box-shadow: none; background: rgba(0, 0, 0, 0.1); padding: 0em; border-radius: 0.28571429rem; } .ui.progress:first-child { margin: 0em 0em 2.5em; } .ui.progress:last-child { margin: 0em 0em 1.5em; } /******************************* Content *******************************/ /* Activity Bar */ .ui.progress .bar { display: block; line-height: 1; position: relative; width: 0%; min-width: 2em; background: #888888; border-radius: 0.28571429rem; -webkit-transition: width 0.1s ease, background-color 0.1s ease; transition: width 0.1s ease, background-color 0.1s ease; } /* Percent Complete */ .ui.progress .bar > .progress { white-space: nowrap; position: absolute; width: auto; font-size: 0.92857143em; top: 50%; right: 0.5em; left: auto; bottom: auto; color: rgba(255, 255, 255, 0.7); text-shadow: none; margin-top: -0.5em; font-weight: bold; text-align: left; } /* Label */ .ui.progress > .label { position: absolute; width: 100%; font-size: 1em; top: 100%; right: auto; left: 0%; bottom: auto; color: rgba(0, 0, 0, 0.87); font-weight: bold; text-shadow: none; margin-top: 0.2em; text-align: center; -webkit-transition: color 0.4s ease; transition: color 0.4s ease; } /******************************* Types *******************************/ /* Indicating */ .ui.indicating.progress[data-percent^="1"] .bar, .ui.indicating.progress[data-percent^="2"] .bar { background-color: #d95c5c; } .ui.indicating.progress[data-percent^="3"] .bar { background-color: #efbc72; } .ui.indicating.progress[data-percent^="4"] .bar, .ui.indicating.progress[data-percent^="5"] .bar { background-color: #e6bb48; } .ui.indicating.progress[data-percent^="6"] .bar { background-color: #ddc928; } .ui.indicating.progress[data-percent^="7"] .bar, .ui.indicating.progress[data-percent^="8"] .bar { background-color: #b4d95c; } .ui.indicating.progress[data-percent^="9"] .bar, .ui.indicating.progress[data-percent^="100"] .bar { background-color: #66da81; } /* Indicating Label */ .ui.indicating.progress[data-percent^="1"] .label, .ui.indicating.progress[data-percent^="2"] .label { color: rgba(0, 0, 0, 0.87); } .ui.indicating.progress[data-percent^="3"] .label { color: rgba(0, 0, 0, 0.87); } .ui.indicating.progress[data-percent^="4"] .label, .ui.indicating.progress[data-percent^="5"] .label { color: rgba(0, 0, 0, 0.87); } .ui.indicating.progress[data-percent^="6"] .label { color: rgba(0, 0, 0, 0.87); } .ui.indicating.progress[data-percent^="7"] .label, .ui.indicating.progress[data-percent^="8"] .label { color: rgba(0, 0, 0, 0.87); } .ui.indicating.progress[data-percent^="9"] .label, .ui.indicating.progress[data-percent^="100"] .label { color: rgba(0, 0, 0, 0.87); } /* Single Digits */ .ui.indicating.progress[data-percent="1"] .bar, .ui.indicating.progress[data-percent="2"] .bar, .ui.indicating.progress[data-percent="3"] .bar, .ui.indicating.progress[data-percent="4"] .bar, .ui.indicating.progress[data-percent="5"] .bar, .ui.indicating.progress[data-percent="6"] .bar, .ui.indicating.progress[data-percent="7"] .bar, .ui.indicating.progress[data-percent="8"] .bar, .ui.indicating.progress[data-percent="9"] .bar { background-color: #d95c5c; } .ui.indicating.progress[data-percent="1"] .label, .ui.indicating.progress[data-percent="2"] .label, .ui.indicating.progress[data-percent="3"] .label, .ui.indicating.progress[data-percent="4"] .label, .ui.indicating.progress[data-percent="5"] .label, .ui.indicating.progress[data-percent="6"] .label, .ui.indicating.progress[data-percent="7"] .label, .ui.indicating.progress[data-percent="8"] .label, .ui.indicating.progress[data-percent="9"] .label { color: rgba(0, 0, 0, 0.87); } /* Indicating Success */ .ui.indicating.progress.success .label { color: #1a531b; } /******************************* States *******************************/ /*-------------- Success ---------------*/ .ui.progress.success .bar { background-color: #21ba45 !important; } .ui.progress.success .bar, .ui.progress.success .bar::after { -webkit-animation: none !important; animation: none !important; } .ui.progress.success > .label { color: #1a531b; } /*-------------- Warning ---------------*/ .ui.progress.warning .bar { background-color: #f2c037 !important; } .ui.progress.warning .bar, .ui.progress.warning .bar::after { -webkit-animation: none !important; animation: none !important; } .ui.progress.warning > .label { color: #794b02; } /*-------------- Error ---------------*/ .ui.progress.error .bar { background-color: #db2828 !important; } .ui.progress.error .bar, .ui.progress.error .bar::after { -webkit-animation: none !important; animation: none !important; } .ui.progress.error > .label { color: #912d2b; } /*-------------- Active ---------------*/ .ui.active.progress .bar { position: relative; min-width: 2em; } .ui.active.progress .bar::after { content: ''; opacity: 0; position: absolute; top: 0px; left: 0px; right: 0px; bottom: 0px; background: #ffffff; border-radius: 0.28571429rem; -webkit-animation: progress-active 2s ease infinite; animation: progress-active 2s ease infinite; } @-webkit-keyframes progress-active { 0% { opacity: 0.3; width: 0; } 100% { opacity: 0; width: 100%; } } @keyframes progress-active { 0% { opacity: 0.3; width: 0; } 100% { opacity: 0; width: 100%; } } /*-------------- Disabled ---------------*/ .ui.disabled.progress { opacity: 0.35; } .ui.disabled.progress .bar, .ui.disabled.progress .bar::after { -webkit-animation: none !important; animation: none !important; } /******************************* Variations *******************************/ /*-------------- Inverted ---------------*/ .ui.inverted.progress { background: rgba(255, 255, 255, 0.08); border: none; } .ui.inverted.progress .bar { background: #888888; } .ui.inverted.progress .bar > .progress { color: #f9fafb; } .ui.inverted.progress > .label { color: #ffffff; } .ui.inverted.progress.success > .label { color: #21ba45; } .ui.inverted.progress.warning > .label { color: #f2c037; } .ui.inverted.progress.error > .label { color: #db2828; } /*-------------- Attached ---------------*/ /* bottom attached */ .ui.progress.attached { background: transparent; position: relative; border: none; margin: 0em; } .ui.progress.attached, .ui.progress.attached .bar { display: block; height: 0.2rem; padding: 0px; overflow: hidden; border-radius: 0em 0em 0.28571429rem 0.28571429rem; } .ui.progress.attached .bar { border-radius: 0em; } /* top attached */ .ui.progress.top.attached, .ui.progress.top.attached .bar { top: 0px; border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.progress.top.attached .bar { border-radius: 0em; } /* Coupling */ .ui.segment > .ui.attached.progress, .ui.card > .ui.attached.progress { position: absolute; top: auto; left: 0; bottom: 100%; width: 100%; } .ui.segment > .ui.bottom.attached.progress, .ui.card > .ui.bottom.attached.progress { top: 100%; bottom: auto; } /*-------------- Colors ---------------*/ /* Red */ .ui.red.progress .bar { background-color: #db2828; } .ui.red.inverted.progress .bar { background-color: #ff695e; } /* Orange */ .ui.orange.progress .bar { background-color: #f2711c; } .ui.orange.inverted.progress .bar { background-color: #ff851b; } /* Yellow */ .ui.yellow.progress .bar { background-color: #fbbd08; } .ui.yellow.inverted.progress .bar { background-color: #ffe21f; } /* Olive */ .ui.olive.progress .bar { background-color: #b5cc18; } .ui.olive.inverted.progress .bar { background-color: #d9e778; } /* Green */ .ui.green.progress .bar { background-color: #21ba45; } .ui.green.inverted.progress .bar { background-color: #2ecc40; } /* Teal */ .ui.teal.progress .bar { background-color: #00b5ad; } .ui.teal.inverted.progress .bar { background-color: #6dffff; } /* Blue */ .ui.blue.progress .bar { background-color: #2185d0; } .ui.blue.inverted.progress .bar { background-color: #54c8ff; } /* Violet */ .ui.violet.progress .bar { background-color: #6435c9; } .ui.violet.inverted.progress .bar { background-color: #a291fb; } /* Purple */ .ui.purple.progress .bar { background-color: #a333c8; } .ui.purple.inverted.progress .bar { background-color: #dc73ff; } /* Pink */ .ui.pink.progress .bar { background-color: #e03997; } .ui.pink.inverted.progress .bar { background-color: #ff8edf; } /* Brown */ .ui.brown.progress .bar { background-color: #a5673f; } .ui.brown.inverted.progress .bar { background-color: #d67c1c; } /* Grey */ .ui.grey.progress .bar { background-color: #767676; } .ui.grey.inverted.progress .bar { background-color: #dcddde; } /* Black */ .ui.black.progress .bar { background-color: #1b1c1d; } .ui.black.inverted.progress .bar { background-color: #545454; } /*-------------- Sizes ---------------*/ .ui.tiny.progress { font-size: 0.85714286rem; } .ui.tiny.progress .bar { height: 0.5em; } .ui.small.progress { font-size: 0.92857143rem; } .ui.small.progress .bar { height: 1em; } .ui.progress { font-size: 1rem; } .ui.progress .bar { height: 1.75em; } .ui.large.progress { font-size: 1.14285714rem; } .ui.large.progress .bar { height: 2.5em; } .ui.big.progress { font-size: 1.28571429rem; } .ui.big.progress .bar { height: 3.5em; } /******************************* Progress *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Rating * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Rating *******************************/ .ui.rating { display: -webkit-inline-box; display: -webkit-inline-flex; display: -ms-inline-flexbox; display: inline-flex; white-space: nowrap; vertical-align: baseline; } .ui.rating:last-child { margin-right: 0em; } /* Icon */ .ui.rating .icon { padding: 0em; margin: 0em; text-align: center; font-weight: normal; font-style: normal; -webkit-box-flex: 1; -webkit-flex: 1 0 auto; -ms-flex: 1 0 auto; flex: 1 0 auto; cursor: pointer; width: 1.25em; height: auto; -webkit-transition: opacity 0.1s ease, background 0.1s ease, text-shadow 0.1s ease, color 0.1s ease; transition: opacity 0.1s ease, background 0.1s ease, text-shadow 0.1s ease, color 0.1s ease; } /******************************* Types *******************************/ /*------------------- Standard --------------------*/ /* Inactive Icon */ .ui.rating .icon { background: transparent; color: rgba(0, 0, 0, 0.15); } /* Active Icon */ .ui.rating .active.icon { background: transparent; color: rgba(0, 0, 0, 0.85); } /* Selected Icon */ .ui.rating .icon.selected, .ui.rating .icon.selected.active { background: transparent; color: rgba(0, 0, 0, 0.87); } /*------------------- Star --------------------*/ /* Inactive */ .ui.star.rating .icon { width: 1.25em; height: auto; background: transparent; color: rgba(0, 0, 0, 0.15); text-shadow: none; } /* Active Star */ .ui.star.rating .active.icon { background: transparent !important; color: #ffe623 !important; text-shadow: 0px -1px 0px #ddc507, -1px 0px 0px #ddc507, 0px 1px 0px #ddc507, 1px 0px 0px #ddc507 !important; } /* Selected Star */ .ui.star.rating .icon.selected, .ui.star.rating .icon.selected.active { background: transparent !important; color: #ffcc00 !important; text-shadow: 0px -1px 0px #e6a200, -1px 0px 0px #e6a200, 0px 1px 0px #e6a200, 1px 0px 0px #e6a200 !important; } /*------------------- Heart --------------------*/ .ui.heart.rating .icon { width: 1.4em; height: auto; background: transparent; color: rgba(0, 0, 0, 0.15); text-shadow: none !important; } /* Active Heart */ .ui.heart.rating .active.icon { background: transparent !important; color: #ff6d75 !important; text-shadow: 0px -1px 0px #cd0707, -1px 0px 0px #cd0707, 0px 1px 0px #cd0707, 1px 0px 0px #cd0707 !important; } /* Selected Heart */ .ui.heart.rating .icon.selected, .ui.heart.rating .icon.selected.active { background: transparent !important; color: #ff3000 !important; text-shadow: 0px -1px 0px #aa0101, -1px 0px 0px #aa0101, 0px 1px 0px #aa0101, 1px 0px 0px #aa0101 !important; } /******************************* States *******************************/ /*------------------- Disabled --------------------*/ /* disabled rating */ .ui.disabled.rating .icon { cursor: default; } /*------------------- User Interactive --------------------*/ /* Selected Rating */ .ui.rating.selected .active.icon { opacity: 1; } .ui.rating.selected .icon.selected, .ui.rating .icon.selected { opacity: 1; } /******************************* Variations *******************************/ .ui.mini.rating { font-size: 0.71428571rem; } .ui.tiny.rating { font-size: 0.85714286rem; } .ui.small.rating { font-size: 0.92857143rem; } .ui.rating { font-size: 1rem; } .ui.large.rating { font-size: 1.14285714rem; } .ui.huge.rating { font-size: 1.42857143rem; } .ui.massive.rating { font-size: 2rem; } /******************************* Theme Overrides *******************************/ @font-face { font-family: 'Rating'; src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMggjCBsAAAC8AAAAYGNtYXCj2pm8AAABHAAAAKRnYXNwAAAAEAAAAcAAAAAIZ2x5ZlJbXMYAAAHIAAARnGhlYWQBGAe5AAATZAAAADZoaGVhA+IB/QAAE5wAAAAkaG10eCzgAEMAABPAAAAAcGxvY2EwXCxOAAAUMAAAADptYXhwACIAnAAAFGwAAAAgbmFtZfC1n04AABSMAAABPHBvc3QAAwAAAAAVyAAAACAAAwIAAZAABQAAAUwBZgAAAEcBTAFmAAAA9QAZAIQAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADxZQHg/+D/4AHgACAAAAABAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEAJAAAAAgACAABAAAAAEAIOYF8AbwDfAj8C7wbvBw8Irwl/Cc8SPxZf/9//8AAAAAACDmAPAE8AzwI/Au8G7wcPCH8JfwnPEj8WT//f//AAH/4xoEEAYQAQ/sD+IPow+iD4wPgA98DvYOtgADAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAIAAP/tAgAB0wAKABUAAAEvAQ8BFwc3Fyc3BQc3Jz8BHwEHFycCALFPT7GAHp6eHoD/AHAWW304OH1bFnABGRqgoBp8sFNTsHyyOnxYEnFxElh8OgAAAAACAAD/7QIAAdMACgASAAABLwEPARcHNxcnNwUxER8BBxcnAgCxT0+xgB6enh6A/wA4fVsWcAEZGqCgGnywU1OwfLIBHXESWHw6AAAAAQAA/+0CAAHTAAoAAAEvAQ8BFwc3Fyc3AgCxT0+xgB6enh6AARkaoKAafLBTU7B8AAAAAAEAAAAAAgABwAArAAABFA4CBzEHDgMjIi4CLwEuAzU0PgIzMh4CFz4DMzIeAhUCAAcMEgugBgwMDAYGDAwMBqALEgwHFyg2HhAfGxkKChkbHxAeNigXAS0QHxsZCqAGCwkGBQkLBqAKGRsfEB42KBcHDBILCxIMBxcoNh4AAAAAAgAAAAACAAHAACsAWAAAATQuAiMiDgIHLgMjIg4CFRQeAhcxFx4DMzI+Aj8BPgM1DwEiFCIGMTAmIjQjJy4DNTQ+AjMyHgIfATc+AzMyHgIVFA4CBwIAFyg2HhAfGxkKChkbHxAeNigXBwwSC6AGDAwMBgYMDAwGoAsSDAdbogEBAQEBAaIGCgcEDRceEQkREA4GLy8GDhARCREeFw0EBwoGAS0eNigXBwwSCwsSDAcXKDYeEB8bGQqgBgsJBgUJCwagChkbHxA+ogEBAQGiBg4QEQkRHhcNBAcKBjQ0BgoHBA0XHhEJERAOBgABAAAAAAIAAcAAMQAAARQOAgcxBw4DIyIuAi8BLgM1ND4CMzIeAhcHFwc3Jzc+AzMyHgIVAgAHDBILoAYMDAwGBgwMDAagCxIMBxcoNh4KFRMSCC9wQLBwJwUJCgkFHjYoFwEtEB8bGQqgBgsJBgUJCwagChkbHxAeNigXAwUIBUtAoMBAOwECAQEXKDYeAAABAAAAAAIAAbcAKgAAEzQ3NjMyFxYXFhcWFzY3Njc2NzYzMhcWFRQPAQYjIi8BJicmJyYnJicmNQAkJUARExIQEAsMCgoMCxAQEhMRQCUkQbIGBwcGsgMFBQsKCQkGBwExPyMkBgYLCgkKCgoKCQoLBgYkIz8/QawFBawCBgUNDg4OFRQTAAAAAQAAAA0B2wHSACYAABM0PwI2FzYfAhYVFA8BFxQVFAcGByYvAQcGByYnJjU0PwEnJjUAEI9BBQkIBkCPEAdoGQMDBgUGgIEGBQYDAwEYaAcBIwsCFoEMAQEMgRYCCwYIZJABBQUFAwEBAkVFAgEBAwUFAwOQZAkFAAAAAAIAAAANAdsB0gAkAC4AABM0PwI2FzYfAhYVFA8BFxQVFAcmLwEHBgcmJyY1ND8BJyY1HwEHNxcnNy8BBwAQj0EFCQgGQI8QB2gZDAUGgIEGBQYDAwEYaAc/WBVsaxRXeDY2ASMLAhaBDAEBDIEWAgsGCGSQAQUNAQECRUUCAQEDBQUDA5BkCQURVXg4OHhVEW5uAAABACMAKQHdAXwAGgAANzQ/ATYXNh8BNzYXNh8BFhUUDwEGByYvASY1IwgmCAwLCFS8CAsMCCYICPUIDAsIjgjSCwkmCQEBCVS7CQEBCSYJCg0H9gcBAQePBwwAAAEAHwAfAXMBcwAsAAA3ND8BJyY1ND8BNjMyHwE3NjMyHwEWFRQPARcWFRQPAQYjIi8BBwYjIi8BJjUfCFRUCAgnCAwLCFRUCAwLCCcICFRUCAgnCAsMCFRUCAsMCCcIYgsIVFQIDAsIJwgIVFQICCcICwwIVFQICwwIJwgIVFQICCcIDAAAAAACAAAAJQFJAbcAHwArAAA3NTQ3NjsBNTQ3NjMyFxYdATMyFxYdARQHBiMhIicmNTczNTQnJiMiBwYdAQAICAsKJSY1NCYmCQsICAgIC/7tCwgIW5MWFR4fFRZApQsICDc0JiYmJjQ3CAgLpQsICAgIC8A3HhYVFRYeNwAAAQAAAAcBbgG3ACEAADcRNDc2NzYzITIXFhcWFREUBwYHBiMiLwEHBiMiJyYnJjUABgUKBgYBLAYGCgUGBgUKBQcOCn5+Cg4GBgoFBicBcAoICAMDAwMICAr+kAoICAQCCXl5CQIECAgKAAAAAwAAACUCAAFuABgAMQBKAAA3NDc2NzYzMhcWFxYVFAcGBwYjIicmJyY1MxYXFjMyNzY3JicWFRQHBiMiJyY1NDcGBzcUFxYzMjc2NTQ3NjMyNzY1NCcmIyIHBhUABihDREtLREMoBgYoQ0RLS0RDKAYlJjk5Q0M5OSYrQREmJTU1JSYRQSuEBAQGBgQEEREZBgQEBAQGJBkayQoKQSgoKChBCgoKCkEoJycoQQoKOiMjIyM6RCEeIjUmJSUmNSIeIUQlBgQEBAQGGBIRBAQGBgQEGhojAAAABQAAAAkCAAGJACwAOABRAGgAcAAANzQ3Njc2MzIXNzYzMhcWFxYXFhcWFxYVFDEGBwYPAQYjIicmNTQ3JicmJyY1MxYXNyYnJjU0NwYHNxQXFjMyNzY1NDc2MzI3NjU0JyYjIgcGFRc3Njc2NyYnNxYXFhcWFRQHBgcGBwYjPwEWFRQHBgcABitBQU0ZGhADBQEEBAUFBAUEBQEEHjw8Hg4DBQQiBQ0pIyIZBiUvSxYZDg4RQSuEBAQGBgQEEREZBgQEBAQGJBkaVxU9MzQiIDASGxkZEAYGCxQrODk/LlACFxYlyQsJQycnBRwEAgEDAwIDAwIBAwUCNmxsNhkFFAMFBBUTHh8nCQtKISgSHBsfIh4hRCUGBAQEBAYYEhEEBAYGBAQaGiPJJQUiIjYzISASGhkbCgoKChIXMRsbUZANCyghIA8AAAMAAAAAAbcB2wA5AEoAlAAANzU0NzY7ATY3Njc2NzY3Njc2MzIXFhcWFRQHMzIXFhUUBxYVFAcUFRQHFgcGKwEiJyYnJisBIicmNTcUFxYzMjc2NTQnJiMiBwYVFzMyFxYXFhcWFxYXFhcWOwEyNTQnNjc2NTQnNjU0JyYnNjc2NTQnJisBNDc2NTQnJiMGBwYHBgcGBwYHBgcGBwYHBgcGBwYrARUACwoQTgodEQ4GBAMFBgwLDxgTEwoKDjMdFhYOAgoRARkZKCUbGxsjIQZSEAoLJQUFCAcGBQUGBwgFBUkJBAUFBAQHBwMDBwcCPCUjNwIJBQUFDwMDBAkGBgsLDmUODgoJGwgDAwYFDAYQAQUGAwQGBgYFBgUGBgQJSbcPCwsGJhUPCBERExMMCgkJFBQhGxwWFR4ZFQoKFhMGBh0WKBcXBgcMDAoLDxIHBQYGBQcIBQYGBQgSAQEBAQICAQEDAgEULwgIBQoLCgsJDhQHCQkEAQ0NCg8LCxAdHREcDQ4IEBETEw0GFAEHBwUECAgFBQUFAgO3AAADAAD/2wG3AbcAPABNAJkAADc1NDc2OwEyNzY3NjsBMhcWBxUWFRQVFhUUBxYVFAcGKwEWFRQHBgcGIyInJicmJyYnJicmJyYnIyInJjU3FBcWMzI3NjU0JyYjIgcGFRczMhcWFxYXFhcWFxYXFhcWFxYXFhcWFzI3NjU0JyY1MzI3NjU0JyYjNjc2NTQnNjU0JyYnNjU0JyYrASIHIgcGBwYHBgcGIwYrARUACwoQUgYhJRsbHiAoGRkBEQoCDhYWHTMOCgoTExgPCwoFBgIBBAMFDhEdCk4QCgslBQUIBwYFBQYHCAUFSQkEBgYFBgUGBgYEAwYFARAGDAUGAwMIGwkKDg5lDgsLBgYJBAMDDwUFBQkCDg4ZJSU8AgcHAwMHBwQEBQUECbe3DwsKDAwHBhcWJwIWHQYGExYKChUZHhYVHRoiExQJCgsJDg4MDAwNBg4WJQcLCw+kBwUGBgUHCAUGBgUIpAMCBQYFBQcIBAUHBwITBwwTExERBw0OHBEdHRALCw8KDQ0FCQkHFA4JCwoLCgUICBgMCxUDAgEBAgMBAQG3AAAAAQAAAA0A7gHSABQAABM0PwI2FxEHBgcmJyY1ND8BJyY1ABCPQQUJgQYFBgMDARhoBwEjCwIWgQwB/oNFAgEBAwUFAwOQZAkFAAAAAAIAAAAAAgABtwAqAFkAABM0NzYzMhcWFxYXFhc2NzY3Njc2MzIXFhUUDwEGIyIvASYnJicmJyYnJjUzFB8BNzY1NCcmJyYnJicmIyIHBgcGBwYHBiMiJyYnJicmJyYjIgcGBwYHBgcGFQAkJUARExIQEAsMCgoMCxAQEhMRQCUkQbIGBwcGsgMFBQsKCQkGByU1pqY1BgYJCg4NDg0PDhIRDg8KCgcFCQkFBwoKDw4REg4PDQ4NDgoJBgYBMT8jJAYGCwoJCgoKCgkKCwYGJCM/P0GsBQWsAgYFDQ4ODhUUEzA1oJ82MBcSEgoLBgcCAgcHCwsKCQgHBwgJCgsLBwcCAgcGCwoSEhcAAAACAAAABwFuAbcAIQAoAAA3ETQ3Njc2MyEyFxYXFhURFAcGBwYjIi8BBwYjIicmJyY1PwEfAREhEQAGBQoGBgEsBgYKBQYGBQoFBw4Kfn4KDgYGCgUGJZIZef7cJwFwCggIAwMDAwgICv6QCggIBAIJeXkJAgQICAoIjRl0AWP+nQAAAAABAAAAJQHbAbcAMgAANzU0NzY7ATU0NzYzMhcWHQEUBwYrASInJj0BNCcmIyIHBh0BMzIXFh0BFAcGIyEiJyY1AAgIC8AmJjQ1JiUFBQgSCAUFFhUfHhUWHAsICAgIC/7tCwgIQKULCAg3NSUmJiU1SQgFBgYFCEkeFhUVFh43CAgLpQsICAgICwAAAAIAAQANAdsB0gAiAC0AABM2PwI2MzIfAhYXFg8BFxYHBiMiLwEHBiMiJyY/AScmNx8CLwE/AS8CEwEDDJBABggJBUGODgIDCmcYAgQCCAMIf4IFBgYEAgEZaQgC7hBbEgINSnkILgEBJggCFYILC4IVAggICWWPCgUFA0REAwUFCo9lCQipCTBmEw1HEhFc/u0AAAADAAAAAAHJAbcAFAAlAHkAADc1NDc2OwEyFxYdARQHBisBIicmNTcUFxYzMjc2NTQnJiMiBwYVFzU0NzYzNjc2NzY3Njc2NzY3Njc2NzY3NjMyFxYXFhcWFxYXFhUUFRQHBgcGBxQHBgcGBzMyFxYVFAcWFRYHFgcGBxYHBgcjIicmJyYnJiciJyY1AAUGB1MHBQYGBQdTBwYFJQUFCAcGBQUGBwgFBWQFBQgGDw8OFAkFBAQBAQMCAQIEBAYFBw4KCgcHBQQCAwEBAgMDAgYCAgIBAU8XEBAQBQEOBQUECwMREiYlExYXDAwWJAoHBQY3twcGBQUGB7cIBQUFBQgkBwYFBQYHCAUGBgUIJLcHBQYBEBATGQkFCQgGBQwLBgcICQUGAwMFBAcHBgYICQQEBwsLCwYGCgIDBAMCBBEQFhkSDAoVEhAREAsgFBUBBAUEBAcMAQUFCAAAAAADAAD/2wHJAZIAFAAlAHkAADcUFxYXNxY3Nj0BNCcmBycGBwYdATc0NzY3FhcWFRQHBicGJyY1FzU0NzY3Fjc2NzY3NjcXNhcWBxYXFgcWBxQHFhUUBwYHJxYXFhcWFRYXFhcWFRQVFAcGBwYHBgcGBwYnBicmJyYnJicmJyYnJicmJyYnJiciJyY1AAUGB1MHBQYGBQdTBwYFJQUFCAcGBQUGBwgFBWQGBQcKJBYMDBcWEyUmEhEDCwQFBQ4BBRAQEBdPAQECAgIGAgMDAgEBAwIEBQcHCgoOBwUGBAQCAQIDAQEEBAUJFA4PDwYIBQWlBwYFAQEBBwQJtQkEBwEBAQUGB7eTBwYEAQEEBgcJBAYBAQYECZS4BwYEAgENBwUCBgMBAQEXEyEJEhAREBcIDhAaFhEPAQEFAgQCBQELBQcKDAkIBAUHCgUGBwgDBgIEAQEHBQkIBwUMCwcECgcGCRoREQ8CBgQIAAAAAQAAAAEAAJth57dfDzz1AAsCAAAAAADP/GODAAAAAM/8Y4MAAP/bAgAB2wAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAdwAAAHcAAACAAAjAZMAHwFJAAABbgAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAW4AAAHcAAAB3AABAdwAAAHcAAAAAAAAAAoAFAAeAEoAcACKAMoBQAGIAcwCCgJUAoICxgMEAzoDpgRKBRgF7AYSBpgG2gcgB2oIGAjOAAAAAQAAABwAmgAFAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAAwAAAABAAAAAAACAA4AQAABAAAAAAADAAwAIgABAAAAAAAEAAwATgABAAAAAAAFABYADAABAAAAAAAGAAYALgABAAAAAAAKADQAWgADAAEECQABAAwAAAADAAEECQACAA4AQAADAAEECQADAAwAIgADAAEECQAEAAwATgADAAEECQAFABYADAADAAEECQAGAAwANAADAAEECQAKADQAWgByAGEAdABpAG4AZwBWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBhAHQAaQBuAGdyYXRpbmcAcgBhAHQAaQBuAGcAUgBlAGcAdQBsAGEAcgByAGEAdABpAG4AZwBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format('truetype'), url("data:application/font-woff;charset=utf-8;base64,d09GRk9UVE8AABcUAAoAAAAAFswAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABDRkYgAAAA9AAAEuEAABLho6TvIE9TLzIAABPYAAAAYAAAAGAIIwgbY21hcAAAFDgAAACkAAAApKPambxnYXNwAAAU3AAAAAgAAAAIAAAAEGhlYWQAABTkAAAANgAAADYBGAe5aGhlYQAAFRwAAAAkAAAAJAPiAf1obXR4AAAVQAAAAHAAAABwLOAAQ21heHAAABWwAAAABgAAAAYAHFAAbmFtZQAAFbgAAAE8AAABPPC1n05wb3N0AAAW9AAAACAAAAAgAAMAAAEABAQAAQEBB3JhdGluZwABAgABADr4HAL4GwP4GAQeCgAZU/+Lix4KABlT/4uLDAeLZviU+HQFHQAAAP0PHQAAAQIRHQAAAAkdAAAS2BIAHQEBBw0PERQZHiMoLTI3PEFGS1BVWl9kaW5zeH2Ch4xyYXRpbmdyYXRpbmd1MHUxdTIwdUU2MDB1RTYwMXVFNjAydUU2MDN1RTYwNHVFNjA1dUYwMDR1RjAwNXVGMDA2dUYwMEN1RjAwRHVGMDIzdUYwMkV1RjA2RXVGMDcwdUYwODd1RjA4OHVGMDg5dUYwOEF1RjA5N3VGMDlDdUYxMjN1RjE2NHVGMTY1AAACAYkAGgAcAgABAAQABwAKAA0AVgCWAL0BAgGMAeQCbwLwA4cD5QR0BQMFdgZgB8MJkQtxC7oM2Q1jDggOmRAYEZr8lA78lA78lA77lA74lPetFftFpTz3NDz7NPtFcfcU+xBt+0T3Mt73Mjht90T3FPcQBfuU+0YV+wRRofcQMOP3EZ3D9wXD+wX3EXkwM6H7EPsExQUO+JT3rRX7RaU89zQ8+zT7RXH3FPsQbftE9zLe9zI4bfdE9xT3EAX7lPtGFYuLi/exw/sF9xF5MDOh+xD7BMUFDviU960V+0WlPPc0PPs0+0Vx9xT7EG37RPcy3vcyOG33RPcU9xAFDviU98EVi2B4ZG5wCIuL+zT7NAV7e3t7e4t7i3ube5sI+zT3NAVupniyi7aL3M3N3Iu2i7J4pm6mqLKetovci81JizoIDviU98EVi9xJzTqLYItkeHBucKhknmCLOotJSYs6i2CeZKhwCIuL9zT7NAWbe5t7m4ubi5ubm5sI9zT3NAWopp6yi7YIME0V+zb7NgWKioqKiouKi4qMiowI+zb3NgV6m4Ghi6OLubCwuYuji6GBm3oIule6vwWbnKGVo4u5i7Bmi12Lc4F1ensIDviU98EVi2B4ZG5wCIuL+zT7NAV7e3t7e4t7i3ube5sI+zT3NAVupniyi7aL3M3N3Iuni6WDoX4IXED3BEtL+zT3RPdU+wTLssYFl46YjZiL3IvNSYs6CA6L98UVi7WXrKOio6Otl7aLlouXiZiHl4eWhZaEloSUhZKFk4SShZKEkpKSkZOSkpGUkZaSCJaSlpGXj5iPl42Wi7aLrX+jc6N0l2qLYYthdWBgYAj7RvtABYeIh4mGi4aLh42Hjgj7RvdABYmNiY2Hj4iOhpGDlISUhZWFlIWVhpaHmYaYiZiLmAgOZ4v3txWLkpCPlo0I9yOgzPcWBY6SkI+Ri5CLkIePhAjL+xb3I3YFlomQh4uEi4aJh4aGCCMmpPsjBYuKi4mLiIuHioiJiImIiIqHi4iLh4yHjQj7FM/7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOZ4v3txWLkpCPlo0I9yOgzPcWBY6SkI+Ri5CLkIePhAjL+xb3I3YFlomQh4uEi4aJh4aGCCMmpPsjBYuKi4mLiIuCh4aDi4iLh4yHjQj7FM/7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwjKeRXjN3b7DfcAxPZSd/cN4t/7DJ1V9wFV+wEFDq73ZhWLk42RkZEIsbIFkZCRjpOLkouSiJCGCN8291D3UAWQkJKOkouTi5GIkYYIsWQFkYaNhIuEi4OJhYWFCPuJ+4kFhYWFiYOLhIuEjYaRCPsi9yIFhZCJkouSCA77AartFYuSjpKQkAjf3zffBYaQiJKLk4uSjpKQkAiysgWRkJGOk4uSi5KIkIYI3zff3wWQkJKOk4uSi5KIkIYIsmQFkIaOhIuEi4OIhIaGCDc33zcFkIaOhIuEi4OIhYaFCGRkBYaGhIiEi4OLhI6GkAg33zc3BYaGhIiEi4OLhY6FkAhksgWGkYiRi5MIDvtLi8sVi/c5BYuSjpKQkJCQko6SiwiVi4vCBYuul6mkpKSkqpiui66LqX6kcqRymG2LaAiLVJSLBZKLkoiQhpCGjoSLhAiL+zkFi4OIhYaGhoWEiYSLCPuniwWEi4SNhpGGkIiRi5MI5vdUFfcni4vCBYufhJx8mn2ZepJ3i3aLeoR9fX18g3qLdwiLVAUO+yaLshWL+AQFi5GNkY+RjpCQj5KNj42PjI+LCPfAiwWPi4+Kj4mRiZCHj4aPhY2Fi4UIi/wEBYuEiYWHhoeGhoeFiIiKhoqHi4GLhI6EkQj7EvcN+xL7DQWEhYOIgouHi4eLh42EjoaPiJCHkImRi5IIDov3XRWLko2Rj5Kltq+vuKW4pbuZvYu9i7t9uHG4ca9npWCPhI2Fi4SLhYmEh4RxYGdoXnAIXnFbflmLWYtbmF6lXqZnrnG2h5KJkouRCLCLFaRkq2yxdLF0tH+4i7iLtJexorGiq6qksm64Z61goZZ3kXaLdItnfm1ycnJybX9oiwhoi22XcqRypH6pi6+LopGglp9gdWdpbl4I9xiwFYuHjIiOiI6IjoqPi4+LjoyOjo2OjY6Lj4ubkJmXl5eWmZGbi4+LjoyOjo2OjY6LjwiLj4mOiY6IjYiNh4tzi3eCenp6eoJ3i3MIDov3XRWLko2Sj5GouK+utqW3pbqYvouci5yJnIgIm6cFjY6NjI+LjIuNi42JjYqOio+JjomOiY6KjomOiY6JjoqNioyKjomMiYuHi4qLiouLCHdnbVVjQ2NDbVV3Zwh9cgWJiIiJiIuJi36SdJiIjYmOi46LjY+UlJlvl3KcdJ90oHeie6WHkYmSi5IIsIsVqlq0Z711CKGzBXqXfpqCnoKdhp6LoIuikaCWn2B1Z2luXgj3GLAVi4eMiI6IjoiOio+Lj4uOjI6OjY6NjouPi5uQmZeXl5aZkZuLj4uOjI6OjY6NjouPCIuPiY6JjoiNiI2Hi3OLd4J6enp6gneLcwji+10VoLAFtI+wmK2hrqKnqKKvdq1wp2uhCJ2rBZ1/nHycepx6mHqWeY+EjYWLhIuEiYWHhIR/gH1+fG9qaXJmeWV5Y4Jhiwi53BXb9yQFjIKMg4uEi3CDc3x1fHV3fHOBCA6L1BWL90sFi5WPlJKSkpKTj5aLCNmLBZKPmJqepJaZlZeVlY+Qj5ONl42WjpeOmI+YkZWTk5OSk46Vi5uLmYiYhZiFlIGSfgiSfo55i3WLeYd5gXgIvosFn4uchJl8mn2Seot3i3qGfIJ9jYSLhYuEi3yIfoR+i4eLh4uHi3eGen99i3CDdnt8CHt8dYNwiwhmiwV5i3mNeY95kHeRc5N1k36Ph4sIOYsFgIuDjoSShJKHlIuVCLCdFYuGjIePiI+Hj4mQi5CLj42Pj46OjY+LkIuQiZCIjoePh42Gi4aLh4mHh4eIioaLhgjUeRWUiwWNi46Lj4qOi4+KjYqOi4+Kj4mQio6KjYqNio+Kj4mQio6KjIqzfquEpIsIrosFr4uemouri5CKkYqQkY6QkI6SjpKNkouSi5KJkoiRlZWQlouYi5CKkImRiZGJj4iOCJGMkI+PlI+UjZKLkouViJODk4SSgo+CiwgmiwWLlpCalJ6UnpCbi5aLnoiYhJSFlH+QeYuGhoeDiYCJf4h/h3+IfoWBg4KHh4SCgH4Ii4qIiYiGh4aIh4mIiIiIh4eGh4aHh4eHiIiHiIeHiIiHiIeKh4mIioiLCIKLi/tLBQ6L90sVi/dLBYuVj5OSk5KSk46WiwjdiwWPi5iPoZOkk6CRnZCdj56Nn4sIq4sFpougg5x8m3yTd4txCIuJBZd8kHuLd4uHi4eLh5J+jn6LfIuEi4SJhZR9kHyLeot3hHp8fH19eoR3iwhYiwWVeI95i3mLdIh6hH6EfoKBfoV+hX2He4uBi4OPg5KFkYaTh5SHlYiTipOKk4qTiJMIiZSIkYiPgZSBl4CaeKR+moSPCD2LBYCLg4+EkoSSh5SLlQiw9zgVi4aMh4+Ij4ePiZCLkIuPjY+Pjo6Nj4uQi5CJkIiOh4+HjYaLhouHiYeHh4iKhouGCNT7OBWUiwWOi46Kj4mPio+IjoiPh4+IjoePiI+Hj4aPho6HjoiNiI6Hj4aOho6Ii4qWfpKDj4YIk4ORgY5+j36OgI1/jYCPg5CGnYuXj5GUkpSOmYuei5aGmoKfgp6GmouWCPCLBZSLlI+SkpOTjpOLlYuSiZKHlIeUho+Fi46PjY+NkY2RjJCLkIuYhpaBlY6RjZKLkgiLkomSiJKIkoaQhY6MkIyRi5CLm4aXgpOBkn6Pe4sIZosFcotrhGN9iouIioaJh4qHiomKiYqIioaKh4mHioiKiYuHioiLh4qIi4mLCIKLi/tLBQ77lIv3txWLkpCPlo0I9yOgzPcWBY6SkI+RiwiL/BL7FUcFh4mHioiLh4uIjImOiY6KjouPi4yLjYyOCKP3IyPwBYaQiZCLjwgOi/fFFYu1l6yjoqOjrZe2i5aLl4mYh5eHloWWhJaElIWShZOEkoWShJKSkpGTkpKRlJGWkgiWkpaRl4+Yj5eNlou2i61/o3OjdJdqi2GLYXVgYGAI+0b7QAWHiIeJhouGi4eNh44I+0b3QAWJjYmNh4+IjoaRg5SElIWVhZSFlYaWh5mGmImYi5gIsIsVi2ucaa9oCPc6+zT3OvczBa+vnK2Lq4ubiZiHl4eXhpSFkoSSg5GCj4KQgo2CjYONgYuBi4KLgIl/hoCGgIWChAiBg4OFhISEhYaFhoaIhoaJhYuFi4aNiJCGkIaRhJGEkoORgZOCkoCRgJB/kICNgosIgYuBi4OJgomCiYKGgoeDhYSEhYSGgod/h3+Jfot7CA77JouyFYv4BAWLkY2Rj5GOkJCPko2PjY+Mj4sI98CLBY+Lj4qPiZGJkIePho+FjYWLhQiL/AQFi4SJhYeGh4aGh4WIiIqGioeLgYuEjoSRCPsS9w37EvsNBYSFg4iCi4eLh4uHjYSOho+IkIeQiZGLkgiwkxX3JvchpHL3DfsIi/f3+7iLi/v3BQ5ni8sVi/c5BYuSjpKQkJCQko6Siwj3VIuLwgWLrpippKSkpKmYrouvi6l+pHKkcpdti2gIi0IFi4aKhoeIh4eHiYaLCHmLBYaLh42Hj4eOipCLkAiL1AWLn4OcfZp9mXqSdot3i3qEfX18fIR6i3cIi1SniwWSi5KIkIaQho6Ei4QIi/s5BYuDiIWGhoaFhImEiwj7p4sFhIuEjYaRhpCIkYuTCA5njPe6FYyQkI6UjQj3I6DM9xYFj5KPj5GLkIuQh4+ECMv7FvcjdgWUiZCIjYaNhoiFhYUIIyak+yMFjIWKhomHiYiIiYaLiIuHjIeNCPsUz/sVRwWHiYeKiIuHi4eNiY6Jj4uQjJEIo/cjI/AFhZGJkY2QCPeB+z0VnILlW3rxiJ6ZmNTS+wydgpxe54v7pwUOZ4vCFYv3SwWLkI2Pjo+Pjo+NkIsI3osFkIuPiY6Ij4eNh4uGCIv7SwWLhomHh4eIh4eKhosIOIsFhouHjIePiI+Jj4uQCLCvFYuGjIePh46IkImQi5CLj42Pjo6PjY+LkIuQiZCIjoePh42Gi4aLhomIh4eIioaLhgjvZxWL90sFi5CNj46Oj4+PjZCLj4ySkJWWlZaVl5SXmJuVl5GRjo6OkI6RjZCNkIyPjI6MkY2TCIySjJGMj4yPjZCOkY6RjpCPjo6Pj42Qi5SLk4qSiZKJkYiPiJCIjoiPho6GjYeMhwiNh4yGjIaMhYuHi4iLiIuHi4eLg4uEiYSJhImFiYeJh4mFh4WLioqJiomJiIqJiokIi4qKiIqJCNqLBZqLmIWWgJaAkH+LfIt6hn2Af46DjYSLhIt9h36Cf4+Bi3+HgImAhYKEhI12hnmAfgh/fXiDcosIZosFfot+jHyOfI5/joOOg41/j32Qc5N8j4SMhouHjYiOh4+Jj4uQCA5ni/c5FYuGjYaOiI+Hj4mQiwjeiwWQi4+Njo+Pjo2Qi5AIi/dKBYuQiZCHjoiPh42Giwg4iwWGi4eJh4eIiImGi4YIi/tKBbD3JhWLkIyPj4+OjpCNkIuQi4+Jj4iOh42Hi4aLhomHiIeHh4eKhouGi4aMiI+Hj4qPi5AI7/snFYv3SwWLkI2Qj46Oj4+NkIuSi5qPo5OZkJePk46TjZeOmo6ajpiMmIsIsIsFpIueg5d9ln6Qeol1koSRgo2Aj4CLgIeAlH+Pfot9i4WJhIiCloCQfIt7i3yFfoGACICAfoZ8iwg8iwWMiIyJi4mMiYyJjYmMiIyKi4mPhI2GjYeNh42GjYOMhIyEi4SLhouHi4iLiYuGioYIioWKhomHioeJh4iGh4eIh4aIh4iFiISJhImDioKLhouHjYiPh4+Ij4iRiJGJkIqPCIqPipGKkomTipGKj4qOiZCJkYiQiJCIjoWSgZZ+nIKXgZaBloGWhJGHi4aLh42HjwiIjomQi48IDviUFPiUFYsMCgAAAAADAgABkAAFAAABTAFmAAAARwFMAWYAAAD1ABkAhAAAAAAAAAAAAAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAAAEAAAPFlAeD/4P/gAeAAIAAAAAEAAAAAAAAAAAAAACAAAAAAAAIAAAADAAAAFAADAAEAAAAUAAQAkAAAACAAIAAEAAAAAQAg5gXwBvAN8CPwLvBu8HDwivCX8JzxI/Fl//3//wAAAAAAIOYA8ATwDPAj8C7wbvBw8Ifwl/Cc8SPxZP/9//8AAf/jGgQQBhABD+wP4g+jD6IPjA+AD3wO9g62AAMAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAf//AA8AAQAAAAEAAJrVlLJfDzz1AAsCAAAAAADP/GODAAAAAM/8Y4MAAP/bAgAB2wAAAAgAAgAAAAAAAAABAAAB4P/gAAACAAAAAAACAAABAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAdwAAAHcAAACAAAjAZMAHwFJAAABbgAAAgAAAAIAAAACAAAAAgAAAAEAAAACAAAAAW4AAAHcAAAB3AABAdwAAAHcAAAAAFAAABwAAAAAAA4ArgABAAAAAAABAAwAAAABAAAAAAACAA4AQAABAAAAAAADAAwAIgABAAAAAAAEAAwATgABAAAAAAAFABYADAABAAAAAAAGAAYALgABAAAAAAAKADQAWgADAAEECQABAAwAAAADAAEECQACAA4AQAADAAEECQADAAwAIgADAAEECQAEAAwATgADAAEECQAFABYADAADAAEECQAGAAwANAADAAEECQAKADQAWgByAGEAdABpAG4AZwBWAGUAcgBzAGkAbwBuACAAMQAuADAAcgBhAHQAaQBuAGdyYXRpbmcAcgBhAHQAaQBuAGcAUgBlAGcAdQBsAGEAcgByAGEAdABpAG4AZwBGAG8AbgB0ACAAZwBlAG4AZQByAGEAdABlAGQAIABiAHkAIABJAGMAbwBNAG8AbwBuAC4AAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format('woff'); font-weight: normal; font-style: normal; } .ui.rating .icon { font-family: 'Rating'; line-height: 1; -webkit-backface-visibility: hidden; backface-visibility: hidden; font-weight: normal; font-style: normal; text-align: center; } /* Empty Star */ .ui.rating .icon:before { content: '\f006'; } /* Active Star */ .ui.rating .active.icon:before { content: '\f005'; } /*------------------- Star --------------------*/ /* Unfilled Star */ .ui.star.rating .icon:before { content: '\f005'; } /* Active Star */ .ui.star.rating .active.icon:before { content: '\f005'; } /* Partial */ .ui.star.rating .partial.icon:before { content: '\f006'; } .ui.star.rating .partial.icon { content: '\f005'; } /*------------------- Heart --------------------*/ /* Empty Heart .ui.heart.rating .icon:before { content: '\f08a'; } */ .ui.heart.rating .icon:before { content: '\f004'; } /* Active */ .ui.heart.rating .active.icon:before { content: '\f004'; } /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Search * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Search *******************************/ .ui.search { position: relative; } .ui.search > .prompt { margin: 0em; outline: none; -webkit-appearance: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0); text-shadow: none; font-style: normal; font-weight: normal; line-height: 1.2142em; padding: 0.67861429em 1em; font-size: 1em; background: #ffffff; border: 1px solid rgba(34, 36, 38, 0.15); color: rgba(0, 0, 0, 0.87); box-shadow: 0em 0em 0em 0em transparent inset; -webkit-transition: background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease; transition: background-color 0.1s ease, color 0.1s ease, box-shadow 0.1s ease, border-color 0.1s ease; } .ui.search .prompt { border-radius: 500rem; } /*-------------- Icon ---------------*/ .ui.search .prompt ~ .search.icon { cursor: pointer; } /*-------------- Results ---------------*/ .ui.search > .results { display: none; position: absolute; top: 100%; left: 0%; -webkit-transform-origin: center top; -ms-transform-origin: center top; transform-origin: center top; background: #ffffff; margin-top: 0.5em; width: 18em; border-radius: 0.28571429rem; box-shadow: 0px 2px 4px 0px rgba(34, 36, 38, 0.12), 0px 2px 10px 0px rgba(34, 36, 38, 0.08); border: 1px solid #d4d4d5; z-index: 998; } .ui.search > .results > :first-child { border-radius: 0.28571429rem 0.28571429rem 0em 0em; } .ui.search > .results > :last-child { border-radius: 0em 0em 0.28571429rem 0.28571429rem; } /*-------------- Result ---------------*/ .ui.search > .results .result { cursor: pointer; display: block; overflow: hidden; font-size: 1em; padding: 0.85714286em 1.14285714em; color: rgba(0, 0, 0, 0.87); line-height: 1.33; border-bottom: 1px solid rgba(34, 36, 38, 0.1); } .ui.search > .results .result:last-child { border-bottom: none !important; } /* Image */ .ui.search > .results .result .image { float: right; overflow: hidden; background: none; width: 5em; height: 3em; border-radius: 0.25em; } .ui.search > .results .result .image img { display: block; width: auto; height: 100%; } /*-------------- Info ---------------*/ .ui.search > .results .result .image + .content { margin: 0em 6em 0em 0em; } .ui.search > .results .result .title { margin: -0.14285em 0em 0em; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold; font-size: 1em; color: rgba(0, 0, 0, 0.85); } .ui.search > .results .result .description { margin-top: 0; font-size: 0.92857143em; color: rgba(0, 0, 0, 0.4); } .ui.search > .results .result .price { float: right; color: #21ba45; } /*-------------- Message ---------------*/ .ui.search > .results > .message { padding: 1em 1em; } .ui.search > .results > .message .header { font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1rem; font-weight: bold; color: rgba(0, 0, 0, 0.87); } .ui.search > .results > .message .description { margin-top: 0.25rem; font-size: 1em; color: rgba(0, 0, 0, 0.87); } /* View All Results */ .ui.search > .results > .action { display: block; border-top: none; background: #f3f4f5; padding: 0.92857143em 1em; color: rgba(0, 0, 0, 0.87); font-weight: bold; text-align: center; } /******************************* States *******************************/ /*-------------------- Focus ---------------------*/ .ui.search > .prompt:focus { border-color: rgba(34, 36, 38, 0.35); background: #ffffff; color: rgba(0, 0, 0, 0.95); } /*-------------------- Loading ---------------------*/ .ui.loading.search .input > i.icon:before { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.1); } .ui.loading.search .input > i.icon:after { position: absolute; content: ''; top: 50%; left: 50%; margin: -0.64285714em 0em 0em -0.64285714em; width: 1.28571429em; height: 1.28571429em; -webkit-animation: button-spin 0.6s linear; animation: button-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 transparent transparent; border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; } /*-------------- Hover ---------------*/ .ui.search > .results .result:hover, .ui.category.search > .results .category .result:hover { background: #f9fafb; } .ui.search .action:hover { background: #e0e0e0; } /*-------------- Active ---------------*/ .ui.category.search > .results .category.active { background: #f3f4f5; } .ui.category.search > .results .category.active > .name { color: rgba(0, 0, 0, 0.87); } .ui.search > .results .result.active, .ui.category.search > .results .category .result.active { position: relative; border-left-color: rgba(34, 36, 38, 0.1); background: #f3f4f5; box-shadow: none; } .ui.search > .results .result.active .title { color: rgba(0, 0, 0, 0.85); } .ui.search > .results .result.active .description { color: rgba(0, 0, 0, 0.85); } /******************************* Types *******************************/ /*-------------- Selection ---------------*/ .ui.search.selection .prompt { border-radius: 0.28571429rem; } /* Remove input */ .ui.search.selection > .icon.input > .remove.icon { pointer-events: none; position: absolute; left: auto; opacity: 0; color: ''; top: 0em; right: 0em; -webkit-transition: color 0.1s ease, opacity 0.1s ease; transition: color 0.1s ease, opacity 0.1s ease; } .ui.search.selection > .icon.input > .active.remove.icon { cursor: pointer; opacity: 0.8; pointer-events: auto; } .ui.search.selection > .icon.input:not([class*="left icon"]) > .icon ~ .remove.icon { right: 1.85714em; } .ui.search.selection > .icon.input > .remove.icon:hover { opacity: 1; color: #db2828; } /*-------------- Category ---------------*/ .ui.category.search .results { width: 28em; } /* Category */ .ui.category.search > .results .category { background: #f3f4f5; box-shadow: none; border-bottom: 1px solid rgba(34, 36, 38, 0.1); -webkit-transition: background 0.1s ease, border-color 0.1s ease; transition: background 0.1s ease, border-color 0.1s ease; } /* Last Category */ .ui.category.search > .results .category:last-child { border-bottom: none; } /* First / Last */ .ui.category.search > .results .category:first-child .name + .result { border-radius: 0em 0.28571429rem 0em 0em; } .ui.category.search > .results .category:last-child .result:last-child { border-radius: 0em 0em 0.28571429rem 0em; } /* Category Result */ .ui.category.search > .results .category .result { background: #ffffff; margin-left: 100px; border-left: 1px solid rgba(34, 36, 38, 0.15); border-bottom: 1px solid rgba(34, 36, 38, 0.1); -webkit-transition: background 0.1s ease, border-color 0.1s ease; transition: background 0.1s ease, border-color 0.1s ease; padding: 0.85714286em 1.14285714em; } .ui.category.search > .results .category:last-child .result:last-child { border-bottom: none; } /* Category Result Name */ .ui.category.search > .results .category > .name { width: 100px; background: transparent; font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: 1em; float: 1em; float: left; padding: 0.4em 1em; font-weight: bold; color: rgba(0, 0, 0, 0.4); } /******************************* Variations *******************************/ /*------------------- Left / Right --------------------*/ .ui[class*="left aligned"].search > .results { right: auto; left: 0%; } .ui[class*="right aligned"].search > .results { right: 0%; left: auto; } /*-------------- Fluid ---------------*/ .ui.fluid.search .results { width: 100%; } /*-------------- Sizes ---------------*/ .ui.mini.search { font-size: 0.71428571em; } .ui.small.search { font-size: 0.92857143em; } .ui.search { font-size: 1em; } .ui.large.search { font-size: 1.14285714em; } .ui.big.search { font-size: 1.28571429em; } .ui.huge.search { font-size: 1.42857143em; } .ui.massive.search { font-size: 1.71428571em; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Shape * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Shape *******************************/ .ui.shape { position: relative; vertical-align: top; display: inline-block; -webkit-perspective: 2000px; perspective: 2000px; -webkit-transition: -webkit-transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; } .ui.shape .sides { -webkit-transform-style: preserve-3d; transform-style: preserve-3d; } .ui.shape .side { opacity: 1; width: 100%; margin: 0em !important; -webkit-backface-visibility: hidden; backface-visibility: hidden; } .ui.shape .side { display: none; } .ui.shape .side * { -webkit-backface-visibility: visible !important; backface-visibility: visible !important; } /******************************* Types *******************************/ .ui.cube.shape .side { min-width: 15em; height: 15em; padding: 2em; background-color: #e6e6e6; color: rgba(0, 0, 0, 0.87); box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); } .ui.cube.shape .side > .content { width: 100%; height: 100%; display: table; text-align: center; -webkit-user-select: text; -moz-user-select: text; -ms-user-select: text; user-select: text; } .ui.cube.shape .side > .content > div { display: table-cell; vertical-align: middle; font-size: 2em; } /******************************* Variations *******************************/ .ui.text.shape.animating .sides { position: static; } .ui.text.shape .side { white-space: nowrap; } .ui.text.shape .side > * { white-space: normal; } /******************************* States *******************************/ /*-------------- Loading ---------------*/ .ui.loading.shape { position: absolute; top: -9999px; left: -9999px; } /*-------------- Animating ---------------*/ .ui.shape .animating.side { position: absolute; top: 0px; left: 0px; display: block; z-index: 100; } .ui.shape .hidden.side { opacity: 0.6; } /*-------------- CSS ---------------*/ .ui.shape.animating .sides { position: absolute; } .ui.shape.animating .sides { -webkit-transition: -webkit-transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; } .ui.shape.animating .side { -webkit-transition: opacity 0.6s ease-in-out; transition: opacity 0.6s ease-in-out; } /*-------------- Active ---------------*/ .ui.shape .active.side { display: block; } /******************************* Theme Overrides *******************************/ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Sidebar * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Sidebar *******************************/ /* Sidebar Menu */ .ui.sidebar { position: fixed; top: 0; left: 0; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transition: none; transition: none; will-change: transform; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); visibility: hidden; -webkit-overflow-scrolling: touch; height: 100% !important; max-height: 100%; border-radius: 0em !important; margin: 0em !important; overflow-y: auto !important; z-index: 102; } /* GPU Layers for Child Elements */ .ui.sidebar > * { -webkit-backface-visibility: hidden; backface-visibility: hidden; } /*-------------- Direction ---------------*/ .ui.left.sidebar { right: auto; left: 0px; -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .ui.right.sidebar { right: 0px !important; left: auto !important; -webkit-transform: translate3d(100%, 0%, 0); transform: translate3d(100%, 0%, 0); } .ui.top.sidebar, .ui.bottom.sidebar { width: 100% !important; height: auto !important; } .ui.top.sidebar { top: 0px !important; bottom: auto !important; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } .ui.bottom.sidebar { top: auto !important; bottom: 0px !important; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } /*-------------- Pushable ---------------*/ .pushable { height: 100%; overflow-x: hidden; padding: 0em !important; } /* Whole Page */ body.pushable { background: #545454 !important; } /* Page Context */ .pushable:not(body) { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .pushable:not(body) > .ui.sidebar, .pushable:not(body) > .fixed, .pushable:not(body) > .pusher:after { position: absolute; } /*-------------- Fixed ---------------*/ .pushable > .fixed { position: fixed; -webkit-backface-visibility: hidden; backface-visibility: hidden; -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; will-change: transform; z-index: 101; } /*-------------- Page ---------------*/ .pushable > .pusher { position: relative; -webkit-backface-visibility: hidden; backface-visibility: hidden; overflow: hidden; min-height: 100%; -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; z-index: 2; } body.pushable > .pusher { background: #ffffff; } /* Pusher should inherit background from context */ .pushable > .pusher { background: inherit; } /*-------------- Dimmer ---------------*/ .pushable > .pusher:after { position: fixed; top: 0px; right: 0px; content: ''; background-color: rgba(0, 0, 0, 0.4); overflow: hidden; opacity: 0; -webkit-transition: opacity 500ms; transition: opacity 500ms; will-change: opacity; z-index: 1000; } /*-------------- Coupling ---------------*/ .ui.sidebar.menu .item { border-radius: 0em !important; } /******************************* States *******************************/ /*-------------- Dimmed ---------------*/ .pushable > .pusher.dimmed:after { width: 100% !important; height: 100% !important; opacity: 1 !important; } /*-------------- Animating ---------------*/ .ui.animating.sidebar { visibility: visible; } /*-------------- Visible ---------------*/ .ui.visible.sidebar { visibility: visible; -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } /* Shadow Direction */ .ui.left.visible.sidebar, .ui.right.visible.sidebar { box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); } .ui.top.visible.sidebar, .ui.bottom.visible.sidebar { box-shadow: 0px 0px 20px rgba(34, 36, 38, 0.15); } /* Visible On Load */ .ui.visible.left.sidebar ~ .fixed, .ui.visible.left.sidebar ~ .pusher { -webkit-transform: translate3d(260px, 0, 0); transform: translate3d(260px, 0, 0); } .ui.visible.right.sidebar ~ .fixed, .ui.visible.right.sidebar ~ .pusher { -webkit-transform: translate3d(-260px, 0, 0); transform: translate3d(-260px, 0, 0); } .ui.visible.top.sidebar ~ .fixed, .ui.visible.top.sidebar ~ .pusher { -webkit-transform: translate3d(0, 36px, 0); transform: translate3d(0, 36px, 0); } .ui.visible.bottom.sidebar ~ .fixed, .ui.visible.bottom.sidebar ~ .pusher { -webkit-transform: translate3d(0, -36px, 0); transform: translate3d(0, -36px, 0); } /* opposite sides visible forces content overlay */ .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .fixed, .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher, .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .fixed, .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } /*-------------- iOS ---------------*/ /* iOS incorrectly sizes document when content is presented outside of view with 2Dtranslate */ html.ios { overflow-x: hidden; -webkit-overflow-scrolling: touch; } html.ios, html.ios body { height: initial !important; } /******************************* Variations *******************************/ /*-------------- Width ---------------*/ /* Left / Right */ .ui.thin.left.sidebar, .ui.thin.right.sidebar { width: 150px; } .ui[class*="very thin"].left.sidebar, .ui[class*="very thin"].right.sidebar { width: 60px; } .ui.left.sidebar, .ui.right.sidebar { width: 260px; } .ui.wide.left.sidebar, .ui.wide.right.sidebar { width: 350px; } .ui[class*="very wide"].left.sidebar, .ui[class*="very wide"].right.sidebar { width: 475px; } /* Left Visible */ .ui.visible.thin.left.sidebar ~ .fixed, .ui.visible.thin.left.sidebar ~ .pusher { -webkit-transform: translate3d(150px, 0, 0); transform: translate3d(150px, 0, 0); } .ui.visible[class*="very thin"].left.sidebar ~ .fixed, .ui.visible[class*="very thin"].left.sidebar ~ .pusher { -webkit-transform: translate3d(60px, 0, 0); transform: translate3d(60px, 0, 0); } .ui.visible.wide.left.sidebar ~ .fixed, .ui.visible.wide.left.sidebar ~ .pusher { -webkit-transform: translate3d(350px, 0, 0); transform: translate3d(350px, 0, 0); } .ui.visible[class*="very wide"].left.sidebar ~ .fixed, .ui.visible[class*="very wide"].left.sidebar ~ .pusher { -webkit-transform: translate3d(475px, 0, 0); transform: translate3d(475px, 0, 0); } /* Right Visible */ .ui.visible.thin.right.sidebar ~ .fixed, .ui.visible.thin.right.sidebar ~ .pusher { -webkit-transform: translate3d(-150px, 0, 0); transform: translate3d(-150px, 0, 0); } .ui.visible[class*="very thin"].right.sidebar ~ .fixed, .ui.visible[class*="very thin"].right.sidebar ~ .pusher { -webkit-transform: translate3d(-60px, 0, 0); transform: translate3d(-60px, 0, 0); } .ui.visible.wide.right.sidebar ~ .fixed, .ui.visible.wide.right.sidebar ~ .pusher { -webkit-transform: translate3d(-350px, 0, 0); transform: translate3d(-350px, 0, 0); } .ui.visible[class*="very wide"].right.sidebar ~ .fixed, .ui.visible[class*="very wide"].right.sidebar ~ .pusher { -webkit-transform: translate3d(-475px, 0, 0); transform: translate3d(-475px, 0, 0); } /******************************* Animations *******************************/ /*-------------- Overlay ---------------*/ /* Set-up */ .ui.overlay.sidebar { z-index: 102; } /* Initial */ .ui.left.overlay.sidebar { -webkit-transform: translate3d(-100%, 0%, 0); transform: translate3d(-100%, 0%, 0); } .ui.right.overlay.sidebar { -webkit-transform: translate3d(100%, 0%, 0); transform: translate3d(100%, 0%, 0); } .ui.top.overlay.sidebar { -webkit-transform: translate3d(0%, -100%, 0); transform: translate3d(0%, -100%, 0); } .ui.bottom.overlay.sidebar { -webkit-transform: translate3d(0%, 100%, 0); transform: translate3d(0%, 100%, 0); } /* Animation */ .animating.ui.overlay.sidebar, .ui.visible.overlay.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; } /* End - Sidebar */ .ui.visible.left.overlay.sidebar { -webkit-transform: translate3d(0%, 0%, 0); transform: translate3d(0%, 0%, 0); } .ui.visible.right.overlay.sidebar { -webkit-transform: translate3d(0%, 0%, 0); transform: translate3d(0%, 0%, 0); } .ui.visible.top.overlay.sidebar { -webkit-transform: translate3d(0%, 0%, 0); transform: translate3d(0%, 0%, 0); } .ui.visible.bottom.overlay.sidebar { -webkit-transform: translate3d(0%, 0%, 0); transform: translate3d(0%, 0%, 0); } /* End - Pusher */ .ui.visible.overlay.sidebar ~ .fixed, .ui.visible.overlay.sidebar ~ .pusher { -webkit-transform: none !important; -ms-transform: none !important; transform: none !important; } /*-------------- Push ---------------*/ /* Initial */ .ui.push.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; z-index: 102; } /* Sidebar - Initial */ .ui.left.push.sidebar { -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .ui.right.push.sidebar { -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } .ui.top.push.sidebar { -webkit-transform: translate3d(0%, -100%, 0); transform: translate3d(0%, -100%, 0); } .ui.bottom.push.sidebar { -webkit-transform: translate3d(0%, 100%, 0); transform: translate3d(0%, 100%, 0); } /* End */ .ui.visible.push.sidebar { -webkit-transform: translate3d(0%, 0, 0); transform: translate3d(0%, 0, 0); } /*-------------- Uncover ---------------*/ /* Initial */ .ui.uncover.sidebar { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); z-index: 1; } /* End */ .ui.visible.uncover.sidebar { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; } /*-------------- Slide Along ---------------*/ /* Initial */ .ui.slide.along.sidebar { z-index: 1; } /* Sidebar - Initial */ .ui.left.slide.along.sidebar { -webkit-transform: translate3d(-50%, 0, 0); transform: translate3d(-50%, 0, 0); } .ui.right.slide.along.sidebar { -webkit-transform: translate3d(50%, 0, 0); transform: translate3d(50%, 0, 0); } .ui.top.slide.along.sidebar { -webkit-transform: translate3d(0, -50%, 0); transform: translate3d(0, -50%, 0); } .ui.bottom.slide.along.sidebar { -webkit-transform: translate3d(0%, 50%, 0); transform: translate3d(0%, 50%, 0); } /* Animation */ .ui.animating.slide.along.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; } /* End */ .ui.visible.slide.along.sidebar { -webkit-transform: translate3d(0%, 0, 0); transform: translate3d(0%, 0, 0); } /*-------------- Slide Out ---------------*/ /* Initial */ .ui.slide.out.sidebar { z-index: 1; } /* Sidebar - Initial */ .ui.left.slide.out.sidebar { -webkit-transform: translate3d(50%, 0, 0); transform: translate3d(50%, 0, 0); } .ui.right.slide.out.sidebar { -webkit-transform: translate3d(-50%, 0, 0); transform: translate3d(-50%, 0, 0); } .ui.top.slide.out.sidebar { -webkit-transform: translate3d(0%, 50%, 0); transform: translate3d(0%, 50%, 0); } .ui.bottom.slide.out.sidebar { -webkit-transform: translate3d(0%, -50%, 0); transform: translate3d(0%, -50%, 0); } /* Animation */ .ui.animating.slide.out.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; } /* End */ .ui.visible.slide.out.sidebar { -webkit-transform: translate3d(0%, 0, 0); transform: translate3d(0%, 0, 0); } /*-------------- Scale Down ---------------*/ /* Initial */ .ui.scale.down.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; z-index: 102; } /* Sidebar - Initial */ .ui.left.scale.down.sidebar { -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } .ui.right.scale.down.sidebar { -webkit-transform: translate3d(100%, 0, 0); transform: translate3d(100%, 0, 0); } .ui.top.scale.down.sidebar { -webkit-transform: translate3d(0%, -100%, 0); transform: translate3d(0%, -100%, 0); } .ui.bottom.scale.down.sidebar { -webkit-transform: translate3d(0%, 100%, 0); transform: translate3d(0%, 100%, 0); } /* Pusher - Initial */ .ui.scale.down.left.sidebar ~ .pusher { -webkit-transform-origin: 75% 50%; -ms-transform-origin: 75% 50%; transform-origin: 75% 50%; } .ui.scale.down.right.sidebar ~ .pusher { -webkit-transform-origin: 25% 50%; -ms-transform-origin: 25% 50%; transform-origin: 25% 50%; } .ui.scale.down.top.sidebar ~ .pusher { -webkit-transform-origin: 50% 75%; -ms-transform-origin: 50% 75%; transform-origin: 50% 75%; } .ui.scale.down.bottom.sidebar ~ .pusher { -webkit-transform-origin: 50% 25%; -ms-transform-origin: 50% 25%; transform-origin: 50% 25%; } /* Animation */ .ui.animating.scale.down > .visible.ui.sidebar { -webkit-transition: -webkit-transform 500ms ease; transition: transform 500ms ease; } .ui.visible.scale.down.sidebar ~ .pusher, .ui.animating.scale.down.sidebar ~ .pusher { display: block !important; width: 100%; height: 100%; overflow: hidden !important; } /* End */ .ui.visible.scale.down.sidebar { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } .ui.visible.scale.down.sidebar ~ .pusher { -webkit-transform: scale(0.75); -ms-transform: scale(0.75); transform: scale(0.75); } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Sticky * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Sticky *******************************/ .ui.sticky { position: static; -webkit-transition: none; transition: none; z-index: 800; } /******************************* States *******************************/ /* Bound */ .ui.sticky.bound { position: absolute; left: auto; right: auto; } /* Fixed */ .ui.sticky.fixed { position: fixed; left: auto; right: auto; } /* Bound/Fixed Position */ .ui.sticky.bound.top, .ui.sticky.fixed.top { top: 0px; bottom: auto; } .ui.sticky.bound.bottom, .ui.sticky.fixed.bottom { top: auto; bottom: 0px; } /******************************* Types *******************************/ .ui.native.sticky { position: -webkit-sticky; position: -moz-sticky; position: -ms-sticky; position: -o-sticky; position: sticky; } /******************************* Theme Overrides *******************************/ /******************************* Site Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Tab * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* UI Tabs *******************************/ .ui.tab { display: none; } /******************************* States *******************************/ /*-------------------- Active ---------------------*/ .ui.tab.active, .ui.tab.open { display: block; } /*-------------------- Loading ---------------------*/ .ui.tab.loading { position: relative; overflow: hidden; display: block; min-height: 250px; } .ui.tab.loading * { position: relative !important; left: -10000px !important; } .ui.tab.loading:before, .ui.tab.loading.segment:before { position: absolute; content: ''; top: 100px; left: 50%; margin: -1.25em 0em 0em -1.25em; width: 2.5em; height: 2.5em; border-radius: 500rem; border: 0.2em solid rgba(0, 0, 0, 0.1); } .ui.tab.loading:after, .ui.tab.loading.segment:after { position: absolute; content: ''; top: 100px; left: 50%; margin: -1.25em 0em 0em -1.25em; width: 2.5em; height: 2.5em; -webkit-animation: button-spin 0.6s linear; animation: button-spin 0.6s linear; -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; border-radius: 500rem; border-color: #767676 transparent transparent; border-style: solid; border-width: 0.2em; box-shadow: 0px 0px 0px 1px transparent; } /******************************* Tab Overrides *******************************/ /******************************* User Overrides *******************************/ /*! * # Semantic UI 2.1.7 - Transition * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /******************************* Transitions *******************************/ .transition { -webkit-animation-iteration-count: 1; animation-iteration-count: 1; -webkit-animation-duration: 300ms; animation-duration: 300ms; -webkit-animation-timing-function: ease; animation-timing-function: ease; -webkit-animation-fill-mode: both; animation-fill-mode: both; } /******************************* States *******************************/ /* Animating */ .animating.transition { -webkit-backface-visibility: hidden; backface-visibility: hidden; visibility: visible !important; } /* Loading */ .loading.transition { position: absolute; top: -99999px; left: -99999px; } /* Hidden */ .hidden.transition { display: none; visibility: hidden; } /* Visible */ .visible.transition { display: block !important; visibility: visible !important; /* backface-visibility: @backfaceVisibility; transform: @use3DAcceleration;*/ } /* Disabled */ .disabled.transition { -webkit-animation-play-state: paused; animation-play-state: paused; } /******************************* Variations *******************************/ .looping.transition { -webkit-animation-iteration-count: infinite; animation-iteration-count: infinite; } /******************************* Transitions *******************************/ /* Some transitions adapted from Animate CSS https://github.com/daneden/animate.css Additional transitions adapted from Glide by Nick Pettit - https://github.com/nickpettit/glide */ /*-------------- Browse ---------------*/ .transition.browse { -webkit-animation-duration: 500ms; animation-duration: 500ms; } .transition.browse.in { -webkit-animation-name: browseIn; animation-name: browseIn; } .transition.browse.out, .transition.browse.left.out { -webkit-animation-name: browseOutLeft; animation-name: browseOutLeft; } .transition.browse.right.out { -webkit-animation-name: browseOutRight; animation-name: browseOutRight; } /* In */ @-webkit-keyframes browseIn { 0% { -webkit-transform: scale(0.8) translateZ(0px); transform: scale(0.8) translateZ(0px); z-index: -1; } 10% { -webkit-transform: scale(0.8) translateZ(0px); transform: scale(0.8) translateZ(0px); z-index: -1; opacity: 0.7; } 80% { -webkit-transform: scale(1.05) translateZ(0px); transform: scale(1.05) translateZ(0px); opacity: 1; z-index: 999; } 100% { -webkit-transform: scale(1) translateZ(0px); transform: scale(1) translateZ(0px); z-index: 999; } } @keyframes browseIn { 0% { -webkit-transform: scale(0.8) translateZ(0px); transform: scale(0.8) translateZ(0px); z-index: -1; } 10% { -webkit-transform: scale(0.8) translateZ(0px); transform: scale(0.8) translateZ(0px); z-index: -1; opacity: 0.7; } 80% { -webkit-transform: scale(1.05) translateZ(0px); transform: scale(1.05) translateZ(0px); opacity: 1; z-index: 999; } 100% { -webkit-transform: scale(1) translateZ(0px); transform: scale(1) translateZ(0px); z-index: 999; } } /* Out */ @-webkit-keyframes browseOutLeft { 0% { z-index: 999; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg); transform: translateX(0%) rotateY(0deg) rotateX(0deg); } 50% { z-index: -1; -webkit-transform: translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); transform: translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); } 80% { opacity: 1; } 100% { z-index: -1; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); opacity: 0; } } @keyframes browseOutLeft { 0% { z-index: 999; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg); transform: translateX(0%) rotateY(0deg) rotateX(0deg); } 50% { z-index: -1; -webkit-transform: translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); transform: translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); } 80% { opacity: 1; } 100% { z-index: -1; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); opacity: 0; } } @-webkit-keyframes browseOutRight { 0% { z-index: 999; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg); transform: translateX(0%) rotateY(0deg) rotateX(0deg); } 50% { z-index: 1; -webkit-transform: translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); transform: translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); } 80% { opacity: 1; } 100% { z-index: 1; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); opacity: 0; } } @keyframes browseOutRight { 0% { z-index: 999; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg); transform: translateX(0%) rotateY(0deg) rotateX(0deg); } 50% { z-index: 1; -webkit-transform: translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); transform: translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px); } 80% { opacity: 1; } 100% { z-index: 1; -webkit-transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); transform: translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px); opacity: 0; } } /*-------------- Drop ---------------*/ .drop.transition { -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; -webkit-animation-duration: 400ms; animation-duration: 400ms; -webkit-animation-timing-function: cubic-bezier(0.34, 1.61, 0.7, 1); animation-timing-function: cubic-bezier(0.34, 1.61, 0.7, 1); } .drop.transition.in { -webkit-animation-name: dropIn; animation-name: dropIn; } .drop.transition.out { -webkit-animation-name: dropOut; animation-name: dropOut; } /* Drop */ @-webkit-keyframes dropIn { 0% { opacity: 0; -webkit-transform: scale(0); transform: scale(0); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes dropIn { 0% { opacity: 0; -webkit-transform: scale(0); transform: scale(0); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes dropOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0); transform: scale(0); } } @keyframes dropOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0); transform: scale(0); } } /*-------------- Fade ---------------*/ .transition.fade.in { -webkit-animation-name: fadeIn; animation-name: fadeIn; } .transition[class*="fade up"].in { -webkit-animation-name: fadeInUp; animation-name: fadeInUp; } .transition[class*="fade down"].in { -webkit-animation-name: fadeInDown; animation-name: fadeInDown; } .transition[class*="fade left"].in { -webkit-animation-name: fadeInLeft; animation-name: fadeInLeft; } .transition[class*="fade right"].in { -webkit-animation-name: fadeInRight; animation-name: fadeInRight; } .transition.fade.out { -webkit-animation-name: fadeOut; animation-name: fadeOut; } .transition[class*="fade up"].out { -webkit-animation-name: fadeOutUp; animation-name: fadeOutUp; } .transition[class*="fade down"].out { -webkit-animation-name: fadeOutDown; animation-name: fadeOutDown; } .transition[class*="fade left"].out { -webkit-animation-name: fadeOutLeft; animation-name: fadeOutLeft; } .transition[class*="fade right"].out { -webkit-animation-name: fadeOutRight; animation-name: fadeOutRight; } /* In */ @-webkit-keyframes fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @keyframes fadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } @-webkit-keyframes fadeInUp { 0% { opacity: 0; -webkit-transform: translateY(10%); transform: translateY(10%); } 100% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } } @keyframes fadeInUp { 0% { opacity: 0; -webkit-transform: translateY(10%); transform: translateY(10%); } 100% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } } @-webkit-keyframes fadeInDown { 0% { opacity: 0; -webkit-transform: translateY(-10%); transform: translateY(-10%); } 100% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } } @keyframes fadeInDown { 0% { opacity: 0; -webkit-transform: translateY(-10%); transform: translateY(-10%); } 100% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } } @-webkit-keyframes fadeInLeft { 0% { opacity: 0; -webkit-transform: translateX(10%); transform: translateX(10%); } 100% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } } @keyframes fadeInLeft { 0% { opacity: 0; -webkit-transform: translateX(10%); transform: translateX(10%); } 100% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } } @-webkit-keyframes fadeInRight { 0% { opacity: 0; -webkit-transform: translateX(-10%); transform: translateX(-10%); } 100% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } } @keyframes fadeInRight { 0% { opacity: 0; -webkit-transform: translateX(-10%); transform: translateX(-10%); } 100% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } } /* Out */ @-webkit-keyframes fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @keyframes fadeOut { 0% { opacity: 1; } 100% { opacity: 0; } } @-webkit-keyframes fadeOutUp { 0% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } 100% { opacity: 0; -webkit-transform: translateY(5%); transform: translateY(5%); } } @keyframes fadeOutUp { 0% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } 100% { opacity: 0; -webkit-transform: translateY(5%); transform: translateY(5%); } } @-webkit-keyframes fadeOutDown { 0% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } 100% { opacity: 0; -webkit-transform: translateY(-5%); transform: translateY(-5%); } } @keyframes fadeOutDown { 0% { opacity: 1; -webkit-transform: translateY(0%); transform: translateY(0%); } 100% { opacity: 0; -webkit-transform: translateY(-5%); transform: translateY(-5%); } } @-webkit-keyframes fadeOutLeft { 0% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } 100% { opacity: 0; -webkit-transform: translateX(5%); transform: translateX(5%); } } @keyframes fadeOutLeft { 0% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } 100% { opacity: 0; -webkit-transform: translateX(5%); transform: translateX(5%); } } @-webkit-keyframes fadeOutRight { 0% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } 100% { opacity: 0; -webkit-transform: translateX(-5%); transform: translateX(-5%); } } @keyframes fadeOutRight { 0% { opacity: 1; -webkit-transform: translateX(0%); transform: translateX(0%); } 100% { opacity: 0; -webkit-transform: translateX(-5%); transform: translateX(-5%); } } /*-------------- Flips ---------------*/ .flip.transition.in, .flip.transition.out { -webkit-animation-duration: 600ms; animation-duration: 600ms; } .horizontal.flip.transition.in { -webkit-animation-name: horizontalFlipIn; animation-name: horizontalFlipIn; } .horizontal.flip.transition.out { -webkit-animation-name: horizontalFlipOut; animation-name: horizontalFlipOut; } .vertical.flip.transition.in { -webkit-animation-name: verticalFlipIn; animation-name: verticalFlipIn; } .vertical.flip.transition.out { -webkit-animation-name: verticalFlipOut; animation-name: verticalFlipOut; } /* In */ @-webkit-keyframes horizontalFlipIn { 0% { -webkit-transform: perspective(2000px) rotateY(-90deg); transform: perspective(2000px) rotateY(-90deg); opacity: 0; } 100% { -webkit-transform: perspective(2000px) rotateY(0deg); transform: perspective(2000px) rotateY(0deg); opacity: 1; } } @keyframes horizontalFlipIn { 0% { -webkit-transform: perspective(2000px) rotateY(-90deg); transform: perspective(2000px) rotateY(-90deg); opacity: 0; } 100% { -webkit-transform: perspective(2000px) rotateY(0deg); transform: perspective(2000px) rotateY(0deg); opacity: 1; } } @-webkit-keyframes verticalFlipIn { 0% { -webkit-transform: perspective(2000px) rotateX(-90deg); transform: perspective(2000px) rotateX(-90deg); opacity: 0; } 100% { -webkit-transform: perspective(2000px) rotateX(0deg); transform: perspective(2000px) rotateX(0deg); opacity: 1; } } @keyframes verticalFlipIn { 0% { -webkit-transform: perspective(2000px) rotateX(-90deg); transform: perspective(2000px) rotateX(-90deg); opacity: 0; } 100% { -webkit-transform: perspective(2000px) rotateX(0deg); transform: perspective(2000px) rotateX(0deg); opacity: 1; } } /* Out */ @-webkit-keyframes horizontalFlipOut { 0% { -webkit-transform: perspective(2000px) rotateY(0deg); transform: perspective(2000px) rotateY(0deg); opacity: 1; } 100% { -webkit-transform: perspective(2000px) rotateY(90deg); transform: perspective(2000px) rotateY(90deg); opacity: 0; } } @keyframes horizontalFlipOut { 0% { -webkit-transform: perspective(2000px) rotateY(0deg); transform: perspective(2000px) rotateY(0deg); opacity: 1; } 100% { -webkit-transform: perspective(2000px) rotateY(90deg); transform: perspective(2000px) rotateY(90deg); opacity: 0; } } @-webkit-keyframes verticalFlipOut { 0% { -webkit-transform: perspective(2000px) rotateX(0deg); transform: perspective(2000px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(2000px) rotateX(-90deg); transform: perspective(2000px) rotateX(-90deg); opacity: 0; } } @keyframes verticalFlipOut { 0% { -webkit-transform: perspective(2000px) rotateX(0deg); transform: perspective(2000px) rotateX(0deg); opacity: 1; } 100% { -webkit-transform: perspective(2000px) rotateX(-90deg); transform: perspective(2000px) rotateX(-90deg); opacity: 0; } } /*-------------- Scale ---------------*/ .scale.transition.in { -webkit-animation-name: scaleIn; animation-name: scaleIn; } .scale.transition.out { -webkit-animation-name: scaleOut; animation-name: scaleOut; } @-webkit-keyframes scaleIn { 0% { opacity: 0; -webkit-transform: scale(0.8); transform: scale(0.8); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes scaleIn { 0% { opacity: 0; -webkit-transform: scale(0.8); transform: scale(0.8); } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } /* Out */ @-webkit-keyframes scaleOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0.9); transform: scale(0.9); } } @keyframes scaleOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0.9); transform: scale(0.9); } } /*-------------- Fly ---------------*/ /* Inward */ .transition.fly { -webkit-animation-duration: 0.6s; animation-duration: 0.6s; -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } .transition.fly.in { -webkit-animation-name: flyIn; animation-name: flyIn; } .transition[class*="fly up"].in { -webkit-animation-name: flyInUp; animation-name: flyInUp; } .transition[class*="fly down"].in { -webkit-animation-name: flyInDown; animation-name: flyInDown; } .transition[class*="fly left"].in { -webkit-animation-name: flyInLeft; animation-name: flyInLeft; } .transition[class*="fly right"].in { -webkit-animation-name: flyInRight; animation-name: flyInRight; } /* Outward */ .transition.fly.out { -webkit-animation-name: flyOut; animation-name: flyOut; } .transition[class*="fly up"].out { -webkit-animation-name: flyOutUp; animation-name: flyOutUp; } .transition[class*="fly down"].out { -webkit-animation-name: flyOutDown; animation-name: flyOutDown; } .transition[class*="fly left"].out { -webkit-animation-name: flyOutLeft; animation-name: flyOutLeft; } .transition[class*="fly right"].out { -webkit-animation-name: flyOutRight; animation-name: flyOutRight; } /* In */ @-webkit-keyframes flyIn { 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes flyIn { 0% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } 20% { -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 40% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 60% { opacity: 1; -webkit-transform: scale3d(1.03, 1.03, 1.03); transform: scale3d(1.03, 1.03, 1.03); } 80% { -webkit-transform: scale3d(0.97, 0.97, 0.97); transform: scale3d(0.97, 0.97, 0.97); } 100% { opacity: 1; -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @-webkit-keyframes flyInUp { 0% { opacity: 0; -webkit-transform: translate3d(0, 1500px, 0); transform: translate3d(0, 1500px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @keyframes flyInUp { 0% { opacity: 0; -webkit-transform: translate3d(0, 1500px, 0); transform: translate3d(0, 1500px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 75% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 90% { -webkit-transform: translate3d(0, -5px, 0); transform: translate3d(0, -5px, 0); } 100% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } } @-webkit-keyframes flyInDown { 0% { opacity: 0; -webkit-transform: translate3d(0, -1500px, 0); transform: translate3d(0, -1500px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes flyInDown { 0% { opacity: 0; -webkit-transform: translate3d(0, -1500px, 0); transform: translate3d(0, -1500px, 0); } 60% { opacity: 1; -webkit-transform: translate3d(0, 25px, 0); transform: translate3d(0, 25px, 0); } 75% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 90% { -webkit-transform: translate3d(0, 5px, 0); transform: translate3d(0, 5px, 0); } 100% { -webkit-transform: none; transform: none; } } @-webkit-keyframes flyInLeft { 0% { opacity: 0; -webkit-transform: translate3d(1500px, 0, 0); transform: translate3d(1500px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes flyInLeft { 0% { opacity: 0; -webkit-transform: translate3d(1500px, 0, 0); transform: translate3d(1500px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(-25px, 0, 0); transform: translate3d(-25px, 0, 0); } 75% { -webkit-transform: translate3d(10px, 0, 0); transform: translate3d(10px, 0, 0); } 90% { -webkit-transform: translate3d(-5px, 0, 0); transform: translate3d(-5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } @-webkit-keyframes flyInRight { 0% { opacity: 0; -webkit-transform: translate3d(-1500px, 0, 0); transform: translate3d(-1500px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } @keyframes flyInRight { 0% { opacity: 0; -webkit-transform: translate3d(-1500px, 0, 0); transform: translate3d(-1500px, 0, 0); } 60% { opacity: 1; -webkit-transform: translate3d(25px, 0, 0); transform: translate3d(25px, 0, 0); } 75% { -webkit-transform: translate3d(-10px, 0, 0); transform: translate3d(-10px, 0, 0); } 90% { -webkit-transform: translate3d(5px, 0, 0); transform: translate3d(5px, 0, 0); } 100% { -webkit-transform: none; transform: none; } } /* Out */ @-webkit-keyframes flyOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @keyframes flyOut { 20% { -webkit-transform: scale3d(0.9, 0.9, 0.9); transform: scale3d(0.9, 0.9, 0.9); } 50%, 55% { opacity: 1; -webkit-transform: scale3d(1.1, 1.1, 1.1); transform: scale3d(1.1, 1.1, 1.1); } 100% { opacity: 0; -webkit-transform: scale3d(0.3, 0.3, 0.3); transform: scale3d(0.3, 0.3, 0.3); } } @-webkit-keyframes flyOutUp { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @keyframes flyOutUp { 20% { -webkit-transform: translate3d(0, 10px, 0); transform: translate3d(0, 10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, -20px, 0); transform: translate3d(0, -20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, 2000px, 0); transform: translate3d(0, 2000px, 0); } } @-webkit-keyframes flyOutDown { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @keyframes flyOutDown { 20% { -webkit-transform: translate3d(0, -10px, 0); transform: translate3d(0, -10px, 0); } 40%, 45% { opacity: 1; -webkit-transform: translate3d(0, 20px, 0); transform: translate3d(0, 20px, 0); } 100% { opacity: 0; -webkit-transform: translate3d(0, -2000px, 0); transform: translate3d(0, -2000px, 0); } } @-webkit-keyframes flyOutRight { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @keyframes flyOutRight { 20% { opacity: 1; -webkit-transform: translate3d(20px, 0, 0); transform: translate3d(20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(-2000px, 0, 0); transform: translate3d(-2000px, 0, 0); } } @-webkit-keyframes flyOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } @keyframes flyOutLeft { 20% { opacity: 1; -webkit-transform: translate3d(-20px, 0, 0); transform: translate3d(-20px, 0, 0); } 100% { opacity: 0; -webkit-transform: translate3d(2000px, 0, 0); transform: translate3d(2000px, 0, 0); } } /*-------------- Slide ---------------*/ .transition.slide.in, .transition[class*="slide down"].in { -webkit-animation-name: slideInY; animation-name: slideInY; -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; } .transition[class*="slide up"].in { -webkit-animation-name: slideInY; animation-name: slideInY; -webkit-transform-origin: bottom center; -ms-transform-origin: bottom center; transform-origin: bottom center; } .transition[class*="slide left"].in { -webkit-animation-name: slideInX; animation-name: slideInX; -webkit-transform-origin: center right; -ms-transform-origin: center right; transform-origin: center right; } .transition[class*="slide right"].in { -webkit-animation-name: slideInX; animation-name: slideInX; -webkit-transform-origin: center left; -ms-transform-origin: center left; transform-origin: center left; } .transition.slide.out, .transition[class*="slide down"].out { -webkit-animation-name: slideOutY; animation-name: slideOutY; -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; } .transition[class*="slide up"].out { -webkit-animation-name: slideOutY; animation-name: slideOutY; -webkit-transform-origin: bottom center; -ms-transform-origin: bottom center; transform-origin: bottom center; } .transition[class*="slide left"].out { -webkit-animation-name: slideOutX; animation-name: slideOutX; -webkit-transform-origin: center right; -ms-transform-origin: center right; transform-origin: center right; } .transition[class*="slide right"].out { -webkit-animation-name: slideOutX; animation-name: slideOutX; -webkit-transform-origin: center left; -ms-transform-origin: center left; transform-origin: center left; } /* In */ @-webkit-keyframes slideInY { 0% { opacity: 0; -webkit-transform: scaleY(0); transform: scaleY(0); } 100% { opacity: 1; -webkit-transform: scaleY(1); transform: scaleY(1); } } @keyframes slideInY { 0% { opacity: 0; -webkit-transform: scaleY(0); transform: scaleY(0); } 100% { opacity: 1; -webkit-transform: scaleY(1); transform: scaleY(1); } } @-webkit-keyframes slideInX { 0% { opacity: 0; -webkit-transform: scaleX(0); transform: scaleX(0); } 100% { opacity: 1; -webkit-transform: scaleX(1); transform: scaleX(1); } } @keyframes slideInX { 0% { opacity: 0; -webkit-transform: scaleX(0); transform: scaleX(0); } 100% { opacity: 1; -webkit-transform: scaleX(1); transform: scaleX(1); } } /* Out */ @-webkit-keyframes slideOutY { 0% { opacity: 1; -webkit-transform: scaleY(1); transform: scaleY(1); } 100% { opacity: 0; -webkit-transform: scaleY(0); transform: scaleY(0); } } @keyframes slideOutY { 0% { opacity: 1; -webkit-transform: scaleY(1); transform: scaleY(1); } 100% { opacity: 0; -webkit-transform: scaleY(0); transform: scaleY(0); } } @-webkit-keyframes slideOutX { 0% { opacity: 1; -webkit-transform: scaleX(1); transform: scaleX(1); } 100% { opacity: 0; -webkit-transform: scaleX(0); transform: scaleX(0); } } @keyframes slideOutX { 0% { opacity: 1; -webkit-transform: scaleX(1); transform: scaleX(1); } 100% { opacity: 0; -webkit-transform: scaleX(0); transform: scaleX(0); } } /*-------------- Swing ---------------*/ .transition.swing { -webkit-animation-duration: 800ms; animation-duration: 800ms; } .transition[class*="swing down"].in { -webkit-animation-name: swingInX; animation-name: swingInX; -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; } .transition[class*="swing up"].in { -webkit-animation-name: swingInX; animation-name: swingInX; -webkit-transform-origin: bottom center; -ms-transform-origin: bottom center; transform-origin: bottom center; } .transition[class*="swing left"].in { -webkit-animation-name: swingInY; animation-name: swingInY; -webkit-transform-origin: center right; -ms-transform-origin: center right; transform-origin: center right; } .transition[class*="swing right"].in { -webkit-animation-name: swingInY; animation-name: swingInY; -webkit-transform-origin: center left; -ms-transform-origin: center left; transform-origin: center left; } .transition.swing.out, .transition[class*="swing down"].out { -webkit-animation-name: swingOutX; animation-name: swingOutX; -webkit-transform-origin: top center; -ms-transform-origin: top center; transform-origin: top center; } .transition[class*="swing up"].out { -webkit-animation-name: swingOutX; animation-name: swingOutX; -webkit-transform-origin: bottom center; -ms-transform-origin: bottom center; transform-origin: bottom center; } .transition[class*="swing left"].out { -webkit-animation-name: swingOutY; animation-name: swingOutY; -webkit-transform-origin: center right; -ms-transform-origin: center right; transform-origin: center right; } .transition[class*="swing right"].out { -webkit-animation-name: swingOutY; animation-name: swingOutY; -webkit-transform-origin: center left; -ms-transform-origin: center left; transform-origin: center left; } /* In */ @-webkit-keyframes swingInX { 0% { -webkit-transform: perspective(1000px) rotateX(90deg); transform: perspective(1000px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(1000px) rotateX(-30deg); transform: perspective(1000px) rotateX(-30deg); opacity: 1; } 60% { -webkit-transform: perspective(1000px) rotateX(15deg); transform: perspective(1000px) rotateX(15deg); } 80% { -webkit-transform: perspective(1000px) rotateX(-7.5deg); transform: perspective(1000px) rotateX(-7.5deg); } 100% { -webkit-transform: perspective(1000px) rotateX(0deg); transform: perspective(1000px) rotateX(0deg); } } @keyframes swingInX { 0% { -webkit-transform: perspective(1000px) rotateX(90deg); transform: perspective(1000px) rotateX(90deg); opacity: 0; } 40% { -webkit-transform: perspective(1000px) rotateX(-30deg); transform: perspective(1000px) rotateX(-30deg); opacity: 1; } 60% { -webkit-transform: perspective(1000px) rotateX(15deg); transform: perspective(1000px) rotateX(15deg); } 80% { -webkit-transform: perspective(1000px) rotateX(-7.5deg); transform: perspective(1000px) rotateX(-7.5deg); } 100% { -webkit-transform: perspective(1000px) rotateX(0deg); transform: perspective(1000px) rotateX(0deg); } } @-webkit-keyframes swingInY { 0% { -webkit-transform: perspective(1000px) rotateY(-90deg); transform: perspective(1000px) rotateY(-90deg); opacity: 0; } 40% { -webkit-transform: perspective(1000px) rotateY(30deg); transform: perspective(1000px) rotateY(30deg); opacity: 1; } 60% { -webkit-transform: perspective(1000px) rotateY(-17.5deg); transform: perspective(1000px) rotateY(-17.5deg); } 80% { -webkit-transform: perspective(1000px) rotateY(7.5deg); transform: perspective(1000px) rotateY(7.5deg); } 100% { -webkit-transform: perspective(1000px) rotateY(0deg); transform: perspective(1000px) rotateY(0deg); } } @keyframes swingInY { 0% { -webkit-transform: perspective(1000px) rotateY(-90deg); transform: perspective(1000px) rotateY(-90deg); opacity: 0; } 40% { -webkit-transform: perspective(1000px) rotateY(30deg); transform: perspective(1000px) rotateY(30deg); opacity: 1; } 60% { -webkit-transform: perspective(1000px) rotateY(-17.5deg); transform: perspective(1000px) rotateY(-17.5deg); } 80% { -webkit-transform: perspective(1000px) rotateY(7.5deg); transform: perspective(1000px) rotateY(7.5deg); } 100% { -webkit-transform: perspective(1000px) rotateY(0deg); transform: perspective(1000px) rotateY(0deg); } } /* Out */ @-webkit-keyframes swingOutX { 0% { -webkit-transform: perspective(1000px) rotateX(0deg); transform: perspective(1000px) rotateX(0deg); } 40% { -webkit-transform: perspective(1000px) rotateX(-7.5deg); transform: perspective(1000px) rotateX(-7.5deg); } 60% { -webkit-transform: perspective(1000px) rotateX(17.5deg); transform: perspective(1000px) rotateX(17.5deg); } 80% { -webkit-transform: perspective(1000px) rotateX(-30deg); transform: perspective(1000px) rotateX(-30deg); opacity: 1; } 100% { -webkit-transform: perspective(1000px) rotateX(90deg); transform: perspective(1000px) rotateX(90deg); opacity: 0; } } @keyframes swingOutX { 0% { -webkit-transform: perspective(1000px) rotateX(0deg); transform: perspective(1000px) rotateX(0deg); } 40% { -webkit-transform: perspective(1000px) rotateX(-7.5deg); transform: perspective(1000px) rotateX(-7.5deg); } 60% { -webkit-transform: perspective(1000px) rotateX(17.5deg); transform: perspective(1000px) rotateX(17.5deg); } 80% { -webkit-transform: perspective(1000px) rotateX(-30deg); transform: perspective(1000px) rotateX(-30deg); opacity: 1; } 100% { -webkit-transform: perspective(1000px) rotateX(90deg); transform: perspective(1000px) rotateX(90deg); opacity: 0; } } @-webkit-keyframes swingOutY { 0% { -webkit-transform: perspective(1000px) rotateY(0deg); transform: perspective(1000px) rotateY(0deg); } 40% { -webkit-transform: perspective(1000px) rotateY(7.5deg); transform: perspective(1000px) rotateY(7.5deg); } 60% { -webkit-transform: perspective(1000px) rotateY(-10deg); transform: perspective(1000px) rotateY(-10deg); } 80% { -webkit-transform: perspective(1000px) rotateY(30deg); transform: perspective(1000px) rotateY(30deg); opacity: 1; } 100% { -webkit-transform: perspective(1000px) rotateY(-90deg); transform: perspective(1000px) rotateY(-90deg); opacity: 0; } } @keyframes swingOutY { 0% { -webkit-transform: perspective(1000px) rotateY(0deg); transform: perspective(1000px) rotateY(0deg); } 40% { -webkit-transform: perspective(1000px) rotateY(7.5deg); transform: perspective(1000px) rotateY(7.5deg); } 60% { -webkit-transform: perspective(1000px) rotateY(-10deg); transform: perspective(1000px) rotateY(-10deg); } 80% { -webkit-transform: perspective(1000px) rotateY(30deg); transform: perspective(1000px) rotateY(30deg); opacity: 1; } 100% { -webkit-transform: perspective(1000px) rotateY(-90deg); transform: perspective(1000px) rotateY(-90deg); opacity: 0; } } /******************************* Static Animations *******************************/ /*-------------- Emphasis ---------------*/ .flash.transition { -webkit-animation-duration: 750ms; animation-duration: 750ms; -webkit-animation-name: flash; animation-name: flash; } .shake.transition { -webkit-animation-duration: 750ms; animation-duration: 750ms; -webkit-animation-name: shake; animation-name: shake; } .bounce.transition { -webkit-animation-duration: 750ms; animation-duration: 750ms; -webkit-animation-name: bounce; animation-name: bounce; } .tada.transition { -webkit-animation-duration: 750ms; animation-duration: 750ms; -webkit-animation-name: tada; animation-name: tada; } .pulse.transition { -webkit-animation-duration: 500ms; animation-duration: 500ms; -webkit-animation-name: pulse; animation-name: pulse; } .jiggle.transition { -webkit-animation-duration: 750ms; animation-duration: 750ms; -webkit-animation-name: jiggle; animation-name: jiggle; } /* Flash */ @-webkit-keyframes flash { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0; } } @keyframes flash { 0%, 50%, 100% { opacity: 1; } 25%, 75% { opacity: 0; } } /* Shake */ @-webkit-keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } @keyframes shake { 0%, 100% { -webkit-transform: translateX(0); transform: translateX(0); } 10%, 30%, 50%, 70%, 90% { -webkit-transform: translateX(-10px); transform: translateX(-10px); } 20%, 40%, 60%, 80% { -webkit-transform: translateX(10px); transform: translateX(10px); } } /* Bounce */ @-webkit-keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { -webkit-transform: translateY(0); transform: translateY(0); } 40% { -webkit-transform: translateY(-30px); transform: translateY(-30px); } 60% { -webkit-transform: translateY(-15px); transform: translateY(-15px); } } /* Tada */ @-webkit-keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } @keyframes tada { 0% { -webkit-transform: scale(1); transform: scale(1); } 10%, 20% { -webkit-transform: scale(0.9) rotate(-3deg); transform: scale(0.9) rotate(-3deg); } 30%, 50%, 70%, 90% { -webkit-transform: scale(1.1) rotate(3deg); transform: scale(1.1) rotate(3deg); } 40%, 60%, 80% { -webkit-transform: scale(1.1) rotate(-3deg); transform: scale(1.1) rotate(-3deg); } 100% { -webkit-transform: scale(1) rotate(0); transform: scale(1) rotate(0); } } /* Pulse */ @-webkit-keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } 50% { -webkit-transform: scale(0.9); transform: scale(0.9); opacity: 0.7; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } } @keyframes pulse { 0% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } 50% { -webkit-transform: scale(0.9); transform: scale(0.9); opacity: 0.7; } 100% { -webkit-transform: scale(1); transform: scale(1); opacity: 1; } } /* Rubberband */ @-webkit-keyframes jiggle { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } @keyframes jiggle { 0% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } 30% { -webkit-transform: scale3d(1.25, 0.75, 1); transform: scale3d(1.25, 0.75, 1); } 40% { -webkit-transform: scale3d(0.75, 1.25, 1); transform: scale3d(0.75, 1.25, 1); } 50% { -webkit-transform: scale3d(1.15, 0.85, 1); transform: scale3d(1.15, 0.85, 1); } 65% { -webkit-transform: scale3d(0.95, 1.05, 1); transform: scale3d(0.95, 1.05, 1); } 75% { -webkit-transform: scale3d(1.05, 0.95, 1); transform: scale3d(1.05, 0.95, 1); } 100% { -webkit-transform: scale3d(1, 1, 1); transform: scale3d(1, 1, 1); } } /******************************* Site Overrides *******************************/
/* * # Semantic UI - 2.1.7 * https://github.com/Semantic-Org/Semantic-UI * http://www.semantic-ui.com/ * * Copyright 2014 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ /*! * # Semantic UI 2.1.7 - Site * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { $.site = $.fn.site = function(parameters) { var time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.site.settings, parameters) : $.extend({}, $.site.settings), namespace = settings.namespace, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $document = $(document), $module = $document, element = this, instance = $module.data(moduleNamespace), module, returnedValue ; module = { initialize: function() { module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of site', module); instance = module; $module .data(moduleNamespace, module) ; }, normalize: function() { module.fix.console(); module.fix.requestAnimationFrame(); }, fix: { console: function() { module.debug('Normalizing window.console'); if (console === undefined || console.log === undefined) { module.verbose('Console not available, normalizing events'); module.disable.console(); } if (typeof console.group == 'undefined' || typeof console.groupEnd == 'undefined' || typeof console.groupCollapsed == 'undefined') { module.verbose('Console group not available, normalizing events'); window.console.group = function() {}; window.console.groupEnd = function() {}; window.console.groupCollapsed = function() {}; } if (typeof console.markTimeline == 'undefined') { module.verbose('Mark timeline not available, normalizing events'); window.console.markTimeline = function() {}; } }, consoleClear: function() { module.debug('Disabling programmatic console clearing'); window.console.clear = function() {}; }, requestAnimationFrame: function() { module.debug('Normalizing requestAnimationFrame'); if(window.requestAnimationFrame === undefined) { module.debug('RequestAnimationFrame not available, normalizing event'); window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); } ; } } }, moduleExists: function(name) { return ($.fn[name] !== undefined && $.fn[name].settings !== undefined); }, enabled: { modules: function(modules) { var enabledModules = [] ; modules = modules || settings.modules; $.each(modules, function(index, name) { if(module.moduleExists(name)) { enabledModules.push(name); } }); return enabledModules; } }, disabled: { modules: function(modules) { var disabledModules = [] ; modules = modules || settings.modules; $.each(modules, function(index, name) { if(!module.moduleExists(name)) { disabledModules.push(name); } }); return disabledModules; } }, change: { setting: function(setting, value, modules, modifyExisting) { modules = (typeof modules === 'string') ? (modules === 'all') ? settings.modules : [modules] : modules || settings.modules ; modifyExisting = (modifyExisting !== undefined) ? modifyExisting : true ; $.each(modules, function(index, name) { var namespace = (module.moduleExists(name)) ? $.fn[name].settings.namespace || false : true, $existingModules ; if(module.moduleExists(name)) { module.verbose('Changing default setting', setting, value, name); $.fn[name].settings[setting] = value; if(modifyExisting && namespace) { $existingModules = $(':data(module-' + namespace + ')'); if($existingModules.length > 0) { module.verbose('Modifying existing settings', $existingModules); $existingModules[name]('setting', setting, value); } } } }); }, settings: function(newSettings, modules, modifyExisting) { modules = (typeof modules === 'string') ? [modules] : modules || settings.modules ; modifyExisting = (modifyExisting !== undefined) ? modifyExisting : true ; $.each(modules, function(index, name) { var $existingModules ; if(module.moduleExists(name)) { module.verbose('Changing default setting', newSettings, name); $.extend(true, $.fn[name].settings, newSettings); if(modifyExisting && namespace) { $existingModules = $(':data(module-' + namespace + ')'); if($existingModules.length > 0) { module.verbose('Modifying existing settings', $existingModules); $existingModules[name]('setting', newSettings); } } } }); } }, enable: { console: function() { module.console(true); }, debug: function(modules, modifyExisting) { modules = modules || settings.modules; module.debug('Enabling debug for modules', modules); module.change.setting('debug', true, modules, modifyExisting); }, verbose: function(modules, modifyExisting) { modules = modules || settings.modules; module.debug('Enabling verbose debug for modules', modules); module.change.setting('verbose', true, modules, modifyExisting); } }, disable: { console: function() { module.console(false); }, debug: function(modules, modifyExisting) { modules = modules || settings.modules; module.debug('Disabling debug for modules', modules); module.change.setting('debug', false, modules, modifyExisting); }, verbose: function(modules, modifyExisting) { modules = modules || settings.modules; module.debug('Disabling verbose debug for modules', modules); module.change.setting('verbose', false, modules, modifyExisting); } }, console: function(enable) { if(enable) { if(instance.cache.console === undefined) { module.error(error.console); return; } module.debug('Restoring console function'); window.console = instance.cache.console; } else { module.debug('Disabling console function'); instance.cache.console = window.console; window.console = { clear : function(){}, error : function(){}, group : function(){}, groupCollapsed : function(){}, groupEnd : function(){}, info : function(){}, log : function(){}, markTimeline : function(){}, warn : function(){} }; } }, destroy: function() { module.verbose('Destroying previous site for', $module); $module .removeData(moduleNamespace) ; }, cache: {}, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Element' : element, 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { module.destroy(); } module.initialize(); } return (returnedValue !== undefined) ? returnedValue : this ; }; $.site.settings = { name : 'Site', namespace : 'site', error : { console : 'Console cannot be restored, most likely it was overwritten outside of module', method : 'The method you called is not defined.' }, debug : false, verbose : false, performance : true, modules: [ 'accordion', 'api', 'checkbox', 'dimmer', 'dropdown', 'embed', 'form', 'modal', 'nag', 'popup', 'rating', 'shape', 'sidebar', 'state', 'sticky', 'tab', 'transition', 'visit', 'visibility' ], siteNamespace : 'site', namespaceStub : { cache : {}, config : {}, sections : {}, section : {}, utilities : {} } }; // allows for selection of elements with data attributes $.extend($.expr[ ":" ], { data: ($.expr.createPseudo) ? $.expr.createPseudo(function(dataName) { return function(elem) { return !!$.data(elem, dataName); }; }) : function(elem, i, match) { // support: jQuery < 1.8 return !!$.data(elem, match[ 3 ]); } }); })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Form Validation * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.form = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], legacyParameters = arguments[1], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var $module = $(this), element = this, formErrors = [], keyHeldDown = false, // set at run-time $field, $group, $message, $prompt, $submit, $clear, $reset, settings, validation, metadata, selector, className, error, namespace, moduleNamespace, eventNamespace, instance, module ; module = { initialize: function() { // settings grabbed at run time module.get.settings(); if(methodInvoked) { if(instance === undefined) { module.instantiate(); } module.invoke(query); } else { module.verbose('Initializing form validation', $module, settings); module.bindEvents(); module.set.defaults(); module.instantiate(); } }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous module', instance); module.removeEvents(); $module .removeData(moduleNamespace) ; }, refresh: function() { module.verbose('Refreshing selector cache'); $field = $module.find(selector.field); $group = $module.find(selector.group); $message = $module.find(selector.message); $prompt = $module.find(selector.prompt); $submit = $module.find(selector.submit); $clear = $module.find(selector.clear); $reset = $module.find(selector.reset); }, submit: function() { module.verbose('Submitting form', $module); $module .submit() ; }, attachEvents: function(selector, action) { action = action || 'submit'; $(selector) .on('click' + eventNamespace, function(event) { module[action](); event.preventDefault(); }) ; }, bindEvents: function() { module.verbose('Attaching form events'); $module .on('submit' + eventNamespace, module.validate.form) .on('blur' + eventNamespace, selector.field, module.event.field.blur) .on('click' + eventNamespace, selector.submit, module.submit) .on('click' + eventNamespace, selector.reset, module.reset) .on('click' + eventNamespace, selector.clear, module.clear) ; if(settings.keyboardShortcuts) { $module .on('keydown' + eventNamespace, selector.field, module.event.field.keydown) ; } $field .each(function() { var $input = $(this), type = $input.prop('type'), inputEvent = module.get.changeEvent(type, $input) ; $(this) .on(inputEvent + eventNamespace, module.event.field.change) ; }) ; }, clear: function() { $field .each(function () { var $field = $(this), $element = $field.parent(), $fieldGroup = $field.closest($group), $prompt = $fieldGroup.find(selector.prompt), defaultValue = $field.data(metadata.defaultValue) || '', isCheckbox = $element.is(selector.uiCheckbox), isDropdown = $element.is(selector.uiDropdown), isErrored = $fieldGroup.hasClass(className.error) ; if(isErrored) { module.verbose('Resetting error on field', $fieldGroup); $fieldGroup.removeClass(className.error); $prompt.remove(); } if(isDropdown) { module.verbose('Resetting dropdown value', $element, defaultValue); $element.dropdown('clear'); } else if(isCheckbox) { $field.prop('checked', false); } else { module.verbose('Resetting field value', $field, defaultValue); $field.val(''); } }) ; }, reset: function() { $field .each(function () { var $field = $(this), $element = $field.parent(), $fieldGroup = $field.closest($group), $prompt = $fieldGroup.find(selector.prompt), defaultValue = $field.data(metadata.defaultValue), isCheckbox = $element.is(selector.uiCheckbox), isDropdown = $element.is(selector.uiDropdown), isErrored = $fieldGroup.hasClass(className.error) ; if(defaultValue === undefined) { return; } if(isErrored) { module.verbose('Resetting error on field', $fieldGroup); $fieldGroup.removeClass(className.error); $prompt.remove(); } if(isDropdown) { module.verbose('Resetting dropdown value', $element, defaultValue); $element.dropdown('restore defaults'); } else if(isCheckbox) { module.verbose('Resetting checkbox value', $element, defaultValue); $field.prop('checked', defaultValue); } else { module.verbose('Resetting field value', $field, defaultValue); $field.val(defaultValue); } }) ; }, is: { bracketedRule: function(rule) { return (rule.type && rule.type.match(settings.regExp.bracket)); }, valid: function() { var allValid = true ; module.verbose('Checking if form is valid'); $.each(validation, function(fieldName, field) { if( !( module.validate.field(field, fieldName) ) ) { allValid = false; } }); return allValid; } }, removeEvents: function() { $module .off(eventNamespace) ; $field .off(eventNamespace) ; $submit .off(eventNamespace) ; $field .off(eventNamespace) ; }, event: { field: { keydown: function(event) { var $field = $(this), key = event.which, keyCode = { enter : 13, escape : 27 } ; if( key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); $field .blur() ; } if(!event.ctrlKey && key == keyCode.enter && $field.is(selector.input) && $field.not(selector.checkbox).length > 0 ) { if(!keyHeldDown) { $field .one('keyup' + eventNamespace, module.event.field.keyup) ; module.submit(); module.debug('Enter pressed on input submitting form'); } keyHeldDown = true; } }, keyup: function() { keyHeldDown = false; }, blur: function(event) { var $field = $(this), $fieldGroup = $field.closest($group), validationRules = module.get.validation($field) ; if( $fieldGroup.hasClass(className.error) ) { module.debug('Revalidating field', $field, validationRules); module.validate.form.call(module, event, true); } else if(settings.on == 'blur' || settings.on == 'change') { if(validationRules) { module.validate.field( validationRules ); } } }, change: function(event) { var $field = $(this), $fieldGroup = $field.closest($group) ; if(settings.on == 'change' || ( $fieldGroup.hasClass(className.error) && settings.revalidate) ) { clearTimeout(module.timer); module.timer = setTimeout(function() { module.debug('Revalidating field', $field, module.get.validation($field)); module.validate.form.call(module, event, true); }, settings.delay); } } } }, get: { ancillaryValue: function(rule) { if(!rule.type || !module.is.bracketedRule(rule)) { return false; } return rule.type.match(settings.regExp.bracket)[1] + ''; }, ruleName: function(rule) { if( module.is.bracketedRule(rule) ) { return rule.type.replace(rule.type.match(settings.regExp.bracket)[0], ''); } return rule.type; }, changeEvent: function(type, $input) { if(type == 'checkbox' || type == 'radio' || type == 'hidden' || $input.is('select')) { return 'change'; } else { return module.get.inputEvent(); } }, inputEvent: function() { return (document.createElement('input').oninput !== undefined) ? 'input' : (document.createElement('input').onpropertychange !== undefined) ? 'propertychange' : 'keyup' ; }, prompt: function(rule, field) { var ruleName = module.get.ruleName(rule), ancillary = module.get.ancillaryValue(rule), prompt = rule.prompt || settings.prompt[ruleName] || settings.text.unspecifiedRule, requiresValue = (prompt.search('{value}') !== -1), requiresName = (prompt.search('{name}') !== -1), $label, $field, name ; if(requiresName || requiresValue) { $field = module.get.field(field.identifier); } if(requiresValue) { prompt = prompt.replace('{value}', $field.val()); } if(requiresName) { $label = $field.closest(selector.group).find('label').eq(0); name = ($label.size() == 1) ? $label.text() : $field.prop('placeholder') || settings.text.unspecifiedField ; prompt = prompt.replace('{name}', name); } prompt = prompt.replace('{identifier}', field.identifier); prompt = prompt.replace('{ruleValue}', ancillary); if(!rule.prompt) { module.verbose('Using default validation prompt for type', prompt, ruleName); } return prompt; }, settings: function() { if($.isPlainObject(parameters)) { var keys = Object.keys(parameters), isLegacySettings = (keys.length > 0) ? (parameters[keys[0]].identifier !== undefined && parameters[keys[0]].rules !== undefined) : false, ruleKeys ; if(isLegacySettings) { // 1.x (ducktyped) settings = $.extend(true, {}, $.fn.form.settings, legacyParameters); validation = $.extend({}, $.fn.form.settings.defaults, parameters); module.error(settings.error.oldSyntax, element); module.verbose('Extending settings from legacy parameters', validation, settings); } else { // 2.x if(parameters.fields) { ruleKeys = Object.keys(parameters.fields); if( typeof parameters.fields[ruleKeys[0]] == 'string' || $.isArray(parameters.fields[ruleKeys[0]]) ) { $.each(parameters.fields, function(name, rules) { if(typeof rules == 'string') { rules = [rules]; } parameters.fields[name] = { rules: [] }; $.each(rules, function(index, rule) { parameters.fields[name].rules.push({ type: rule }); }); }); } } settings = $.extend(true, {}, $.fn.form.settings, parameters); validation = $.extend({}, $.fn.form.settings.defaults, settings.fields); module.verbose('Extending settings', validation, settings); } } else { settings = $.fn.form.settings; validation = $.fn.form.settings.defaults; module.verbose('Using default form validation', validation, settings); } // shorthand namespace = settings.namespace; metadata = settings.metadata; selector = settings.selector; className = settings.className; error = settings.error; moduleNamespace = 'module-' + namespace; eventNamespace = '.' + namespace; // grab instance instance = $module.data(moduleNamespace); // refresh selector cache module.refresh(); }, field: function(identifier) { module.verbose('Finding field with identifier', identifier); if( $field.filter('#' + identifier).length > 0 ) { return $field.filter('#' + identifier); } else if( $field.filter('[name="' + identifier +'"]').length > 0 ) { return $field.filter('[name="' + identifier +'"]'); } else if( $field.filter('[name="' + identifier +'[]"]').length > 0 ) { return $field.filter('[name="' + identifier +'[]"]'); } else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').length > 0 ) { return $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]'); } return $('<input/>'); }, fields: function(fields) { var $fields = $() ; $.each(fields, function(index, name) { $fields = $fields.add( module.get.field(name) ); }); return $fields; }, validation: function($field) { var fieldValidation, identifier ; if(!validation) { return false; } $.each(validation, function(fieldName, field) { identifier = field.identifier || fieldName; if( module.get.field(identifier)[0] == $field[0] ) { field.identifier = identifier; fieldValidation = field; } }); return fieldValidation || false; }, value: function (field) { var fields = [], results ; fields.push(field); results = module.get.values.call(element, fields); return results[field]; }, values: function (fields) { var $fields = $.isArray(fields) ? module.get.fields(fields) : $field, values = {} ; $fields.each(function(index, field) { var $field = $(field), type = $field.prop('type'), name = $field.prop('name'), value = $field.val(), isCheckbox = $field.is(selector.checkbox), isRadio = $field.is(selector.radio), isMultiple = (name.indexOf('[]') !== -1), isChecked = (isCheckbox) ? $field.is(':checked') : false ; if(name) { if(isMultiple) { name = name.replace('[]', ''); if(!values[name]) { values[name] = []; } if(isCheckbox) { if(isChecked) { values[name].push(value || true); } else { values[name].push(false); } } else { values[name].push(value); } } else { if(isRadio) { if(isChecked) { values[name] = value; } } else if(isCheckbox) { if(isChecked) { values[name] = value || true; } else { values[name] = false; } } else { values[name] = value; } } } }); return values; } }, has: { field: function(identifier) { module.verbose('Checking for existence of a field with identifier', identifier); if(typeof identifier !== 'string') { module.error(error.identifier, identifier); } if( $field.filter('#' + identifier).length > 0 ) { return true; } else if( $field.filter('[name="' + identifier +'"]').length > 0 ) { return true; } else if( $field.filter('[data-' + metadata.validate + '="'+ identifier +'"]').length > 0 ) { return true; } return false; } }, add: { prompt: function(identifier, errors) { var $field = module.get.field(identifier), $fieldGroup = $field.closest($group), $prompt = $fieldGroup.children(selector.prompt), promptExists = ($prompt.length !== 0) ; errors = (typeof errors == 'string') ? [errors] : errors ; module.verbose('Adding field error state', identifier); $fieldGroup .addClass(className.error) ; if(settings.inline) { if(!promptExists) { $prompt = settings.templates.prompt(errors); $prompt .appendTo($fieldGroup) ; } $prompt .html(errors[0]) ; if(!promptExists) { if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { module.verbose('Displaying error with css transition', settings.transition); $prompt.transition(settings.transition + ' in', settings.duration); } else { module.verbose('Displaying error with fallback javascript animation'); $prompt .fadeIn(settings.duration) ; } } else { module.verbose('Inline errors are disabled, no inline error added', identifier); } } }, errors: function(errors) { module.debug('Adding form error messages', errors); module.set.error(); $message .html( settings.templates.error(errors) ) ; } }, remove: { prompt: function(identifier) { var $field = module.get.field(identifier), $fieldGroup = $field.closest($group), $prompt = $fieldGroup.children(selector.prompt) ; $fieldGroup .removeClass(className.error) ; if(settings.inline && $prompt.is(':visible')) { module.verbose('Removing prompt for field', identifier); if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { $prompt.transition(settings.transition + ' out', settings.duration, function() { $prompt.remove(); }); } else { $prompt .fadeOut(settings.duration, function(){ $prompt.remove(); }) ; } } } }, set: { success: function() { $module .removeClass(className.error) .addClass(className.success) ; }, defaults: function () { $field .each(function () { var $field = $(this), isCheckbox = ($field.filter(selector.checkbox).length > 0), value = (isCheckbox) ? $field.is(':checked') : $field.val() ; $field.data(metadata.defaultValue, value); }) ; }, error: function() { $module .removeClass(className.success) .addClass(className.error) ; }, value: function (field, value) { var fields = {} ; fields[field] = value; return module.set.values.call(element, fields); }, values: function (fields) { if($.isEmptyObject(fields)) { return; } $.each(fields, function(key, value) { var $field = module.get.field(key), $element = $field.parent(), isMultiple = $.isArray(value), isCheckbox = $element.is(selector.uiCheckbox), isDropdown = $element.is(selector.uiDropdown), isRadio = ($field.is(selector.radio) && isCheckbox), fieldExists = ($field.length > 0), $multipleField ; if(fieldExists) { if(isMultiple && isCheckbox) { module.verbose('Selecting multiple', value, $field); $element.checkbox('uncheck'); $.each(value, function(index, value) { $multipleField = $field.filter('[value="' + value + '"]'); $element = $multipleField.parent(); if($multipleField.length > 0) { $element.checkbox('check'); } }); } else if(isRadio) { module.verbose('Selecting radio value', value, $field); $field.filter('[value="' + value + '"]') .parent(selector.uiCheckbox) .checkbox('check') ; } else if(isCheckbox) { module.verbose('Setting checkbox value', value, $element); if(value === true) { $element.checkbox('check'); } else { $element.checkbox('uncheck'); } } else if(isDropdown) { module.verbose('Setting dropdown value', value, $element); $element.dropdown('set selected', value); } else { module.verbose('Setting field value', value, $field); $field.val(value); } } }); } }, validate: { form: function(event, ignoreCallbacks) { var values = module.get.values(), apiRequest ; // input keydown event will fire submit repeatedly by browser default if(keyHeldDown) { return false; } // reset errors formErrors = []; if( module.is.valid() ) { module.debug('Form has no validation errors, submitting'); module.set.success(); if(ignoreCallbacks !== true) { return settings.onSuccess.call(element, event, values); } } else { module.debug('Form has errors'); module.set.error(); if(!settings.inline) { module.add.errors(formErrors); } // prevent ajax submit if($module.data('moduleApi') !== undefined) { event.stopImmediatePropagation(); } if(ignoreCallbacks !== true) { return settings.onFailure.call(element, formErrors, values); } } }, // takes a validation object and returns whether field passes validation field: function(field, fieldName) { var identifier = field.identifier || fieldName, $field = module.get.field(identifier), fieldValid = true, fieldErrors = [] ; if(!field.identifier) { module.debug('Using field name as identifier', identifier); field.identifier = identifier; } if($field.prop('disabled')) { module.debug('Field is disabled. Skipping', identifier); fieldValid = true; } else if(field.optional && $.trim($field.val()) === ''){ module.debug('Field is optional and empty. Skipping', identifier); fieldValid = true; } else if(field.rules !== undefined) { $.each(field.rules, function(index, rule) { if( module.has.field(identifier) && !( module.validate.rule(field, rule) ) ) { module.debug('Field is invalid', identifier, rule.type); fieldErrors.push(module.get.prompt(rule, field)); fieldValid = false; } }); } if(fieldValid) { module.remove.prompt(identifier, fieldErrors); settings.onValid.call($field); } else { formErrors = formErrors.concat(fieldErrors); module.add.prompt(identifier, fieldErrors); settings.onInvalid.call($field, fieldErrors); return false; } return true; }, // takes validation rule and returns whether field passes rule rule: function(field, rule) { var $field = module.get.field(field.identifier), type = rule.type, value = $field.val(), isValid = true, ancillary = module.get.ancillaryValue(rule), ruleName = module.get.ruleName(rule), ruleFunction = settings.rules[ruleName] ; if( !$.isFunction(ruleFunction) ) { module.error(error.noRule, ruleName); return; } // cast to string avoiding encoding special values value = (value === undefined || value === '' || value === null) ? '' : $.trim(value + '') ; return ruleFunction.call($field, value, ancillary); } }, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; module.initialize(); }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.form.settings = { name : 'Form', namespace : 'form', debug : false, verbose : false, performance : true, fields : false, keyboardShortcuts : true, on : 'submit', inline : false, delay : 200, revalidate : true, transition : 'scale', duration : 200, onValid : function() {}, onInvalid : function() {}, onSuccess : function() { return true; }, onFailure : function() { return false; }, metadata : { defaultValue : 'default', validate : 'validate' }, regExp: { bracket : /\[(.*)\]/i, decimal : /^\d*(\.)\d+/, email : "[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", escape : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, flags : /^\/(.*)\/(.*)?/, integer : /^\-?\d+$/, number : /^\-?\d*(\.\d+)?$/, url : /(https?:\/\/(?:www\.|(?!www))[^\s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})/i }, text: { unspecifiedRule : 'Please enter a valid value', unspecifiedField : 'This field' }, prompt: { empty : '{name} must have a value', checked : '{name} must be checked', email : '{name} must be a valid e-mail', url : '{name} must be a valid url', regExp : '{name} is not formatted correctly', integer : '{name} must be an integer', decimal : '{name} must be a decimal number', number : '{name} must be set to a number', is : '{name} must be "{ruleValue}"', isExactly : '{name} must be exactly "{ruleValue}"', not : '{name} cannot be set to "{ruleValue}"', notExactly : '{name} cannot be set to exactly "{ruleValue}"', contain : '{name} cannot contain "{ruleValue}"', containExactly : '{name} cannot contain exactly "{ruleValue}"', doesntContain : '{name} must contain "{ruleValue}"', doesntContainExactly : '{name} must contain exactly "{ruleValue}"', minLength : '{name} must be at least {ruleValue} characters', length : '{name} must be at least {ruleValue} characters', exactLength : '{name} must be exactly {ruleValue} characters', maxLength : '{name} cannot be longer than {ruleValue} characters', match : '{name} must match {ruleValue} field', different : '{name} must have a different value than {ruleValue} field', creditCard : '{name} must be a valid credit card number', minCount : '{name} must have at least {ruleValue} choices', exactCount : '{name} must have exactly {ruleValue} choices', maxCount : '{name} must have {ruleValue} or less choices' }, selector : { checkbox : 'input[type="checkbox"], input[type="radio"]', clear : '.clear', field : 'input, textarea, select', group : '.field', input : 'input', message : '.error.message', prompt : '.prompt.label', radio : 'input[type="radio"]', reset : '.reset:not([type="reset"])', submit : '.submit:not([type="submit"])', uiCheckbox : '.ui.checkbox', uiDropdown : '.ui.dropdown' }, className : { error : 'error', label : 'ui prompt label', pressed : 'down', success : 'success' }, error: { identifier : 'You must specify a string identifier for each field', method : 'The method you called is not defined.', noRule : 'There is no rule matching the one you specified', oldSyntax : 'Starting in 2.0 forms now only take a single settings object. Validation settings converted to new syntax automatically.' }, templates: { // template that produces error message error: function(errors) { var html = '<ul class="list">' ; $.each(errors, function(index, value) { html += '<li>' + value + '</li>'; }); html += '</ul>'; return $(html); }, // template that produces label prompt: function(errors) { return $('<div/>') .addClass('ui basic red pointing prompt label') .html(errors[0]) ; } }, rules: { // is not empty or blank string empty: function(value) { return !(value === undefined || '' === value || $.isArray(value) && value.length === 0); }, // checkbox checked checked: function() { return ($(this).filter(':checked').length > 0); }, // is most likely an email email: function(value){ var emailRegExp = new RegExp($.fn.form.settings.regExp.email, 'i') ; return emailRegExp.test(value); }, // value is most likely url url: function(value) { return $.fn.form.settings.regExp.url.test(value); }, // matches specified regExp regExp: function(value, regExp) { var regExpParts = regExp.match($.fn.form.settings.regExp.flags), flags ; // regular expression specified as /baz/gi (flags) if(regExpParts) { regExp = (regExpParts.length >= 2) ? regExpParts[1] : regExp ; flags = (regExpParts.length >= 3) ? regExpParts[2] : '' ; } return value.match( new RegExp(regExp, flags) ); }, // is valid integer or matches range integer: function(value, range) { var intRegExp = $.fn.form.settings.regExp.integer, min, max, parts ; if( !range || ['', '..'].indexOf(range) !== -1) { // do nothing } else if(range.indexOf('..') == -1) { if(intRegExp.test(range)) { min = max = range - 0; } } else { parts = range.split('..', 2); if(intRegExp.test(parts[0])) { min = parts[0] - 0; } if(intRegExp.test(parts[1])) { max = parts[1] - 0; } } return ( intRegExp.test(value) && (min === undefined || value >= min) && (max === undefined || value <= max) ); }, // is valid number (with decimal) decimal: function(value) { return $.fn.form.settings.regExp.decimal.test(value); }, // is valid number number: function(value) { return $.fn.form.settings.regExp.number.test(value); }, // is value (case insensitive) is: function(value, text) { text = (typeof text == 'string') ? text.toLowerCase() : text ; value = (typeof value == 'string') ? value.toLowerCase() : value ; return (value == text); }, // is value isExactly: function(value, text) { return (value == text); }, // value is not another value (case insensitive) not: function(value, notValue) { value = (typeof value == 'string') ? value.toLowerCase() : value ; notValue = (typeof notValue == 'string') ? notValue.toLowerCase() : notValue ; return (value != notValue); }, // value is not another value (case sensitive) notExactly: function(value, notValue) { return (value != notValue); }, // value contains text (insensitive) contains: function(value, text) { // escape regex characters text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); return (value.search( new RegExp(text, 'i') ) !== -1); }, // value contains text (case sensitive) containsExactly: function(value, text) { // escape regex characters text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); return (value.search( new RegExp(text) ) !== -1); }, // value contains text (insensitive) doesntContain: function(value, text) { // escape regex characters text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); return (value.search( new RegExp(text, 'i') ) === -1); }, // value contains text (case sensitive) doesntContainExactly: function(value, text) { // escape regex characters text = text.replace($.fn.form.settings.regExp.escape, "\\$&"); return (value.search( new RegExp(text) ) === -1); }, // is at least string length minLength: function(value, requiredLength) { return (value !== undefined) ? (value.length >= requiredLength) : false ; }, // see rls notes for 2.0.6 (this is a duplicate of minLength) length: function(value, requiredLength) { return (value !== undefined) ? (value.length >= requiredLength) : false ; }, // is exactly length exactLength: function(value, requiredLength) { return (value !== undefined) ? (value.length == requiredLength) : false ; }, // is less than length maxLength: function(value, maxLength) { return (value !== undefined) ? (value.length <= maxLength) : false ; }, // matches another field match: function(value, identifier) { var $form = $(this), matchingValue ; if( $('[data-validate="'+ identifier +'"]').length > 0 ) { matchingValue = $('[data-validate="'+ identifier +'"]').val(); } else if($('#' + identifier).length > 0) { matchingValue = $('#' + identifier).val(); } else if($('[name="' + identifier +'"]').length > 0) { matchingValue = $('[name="' + identifier + '"]').val(); } else if( $('[name="' + identifier +'[]"]').length > 0 ) { matchingValue = $('[name="' + identifier +'[]"]'); } return (matchingValue !== undefined) ? ( value.toString() == matchingValue.toString() ) : false ; }, // different than another field different: function(value, identifier) { // use either id or name of field var $form = $(this), matchingValue ; if( $('[data-validate="'+ identifier +'"]').length > 0 ) { matchingValue = $('[data-validate="'+ identifier +'"]').val(); } else if($('#' + identifier).length > 0) { matchingValue = $('#' + identifier).val(); } else if($('[name="' + identifier +'"]').length > 0) { matchingValue = $('[name="' + identifier + '"]').val(); } else if( $('[name="' + identifier +'[]"]').length > 0 ) { matchingValue = $('[name="' + identifier +'[]"]'); } return (matchingValue !== undefined) ? ( value.toString() !== matchingValue.toString() ) : false ; }, creditCard: function(cardNumber, cardTypes) { var cards = { visa: { pattern : /^4/, length : [16] }, amex: { pattern : /^3[47]/, length : [15] }, mastercard: { pattern : /^5[1-5]/, length : [16] }, discover: { pattern : /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/, length : [16] }, unionPay: { pattern : /^(62|88)/, length : [16, 17, 18, 19] }, jcb: { pattern : /^35(2[89]|[3-8][0-9])/, length : [16] }, maestro: { pattern : /^(5018|5020|5038|6304|6759|676[1-3])/, length : [12, 13, 14, 15, 16, 17, 18, 19] }, dinersClub: { pattern : /^(30[0-5]|^36)/, length : [14] }, laser: { pattern : /^(6304|670[69]|6771)/, length : [16, 17, 18, 19] }, visaElectron: { pattern : /^(4026|417500|4508|4844|491(3|7))/, length : [16] } }, valid = {}, validCard = false, requiredTypes = (typeof cardTypes == 'string') ? cardTypes.split(',') : false, unionPay, validation ; if(typeof cardNumber !== 'string' || cardNumber.length === 0) { return; } // verify card types if(requiredTypes) { $.each(requiredTypes, function(index, type){ // verify each card type validation = cards[type]; if(validation) { valid = { length : ($.inArray(cardNumber.length, validation.length) !== -1), pattern : (cardNumber.search(validation.pattern) !== -1) }; if(valid.length && valid.pattern) { validCard = true; } } }); if(!validCard) { return false; } } // skip luhn for UnionPay unionPay = { number : ($.inArray(cardNumber.length, cards.unionPay.length) !== -1), pattern : (cardNumber.search(cards.unionPay.pattern) !== -1) }; if(unionPay.number && unionPay.pattern) { return true; } // verify luhn, adapted from <https://gist.github.com/2134376> var length = cardNumber.length, multiple = 0, producedValue = [ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 2, 4, 6, 8, 1, 3, 5, 7, 9] ], sum = 0 ; while (length--) { sum += producedValue[multiple][parseInt(cardNumber.charAt(length), 10)]; multiple ^= 1; } return (sum % 10 === 0 && sum > 0); }, minCount: function(value, minCount) { if(minCount == 0) { return true; } if(minCount == 1) { return (value !== ''); } return (value.split(',').length >= minCount); }, exactCount: function(value, exactCount) { if(exactCount == 0) { return (value === ''); } if(exactCount == 1) { return (value !== '' && value.search(',') === -1); } return (value.split(',').length == exactCount); }, maxCount: function(value, maxCount) { if(maxCount == 0) { return false; } if(maxCount == 1) { return (value.search(',') === -1); } return (value.split(',').length <= maxCount); } } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Accordion * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.accordion = function(parameters) { var $allModules = $(this), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.accordion.settings, parameters) : $.extend({}, $.fn.accordion.settings), className = settings.className, namespace = settings.namespace, selector = settings.selector, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, moduleSelector = $allModules.selector || '', $module = $(this), $title = $module.find(selector.title), $content = $module.find(selector.content), element = this, instance = $module.data(moduleNamespace), observer, module ; module = { initialize: function() { module.debug('Initializing', $module); module.bind.events(); if(settings.observeChanges) { module.observeChanges(); } module.instantiate(); }, instantiate: function() { instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.debug('Destroying previous instance', $module); $module .off(eventNamespace) .removeData(moduleNamespace) ; }, refresh: function() { $title = $module.find(selector.title); $content = $module.find(selector.content); }, observeChanges: function() { if('MutationObserver' in window) { observer = new MutationObserver(function(mutations) { module.debug('DOM tree modified, updating selector cache'); module.refresh(); }); observer.observe(element, { childList : true, subtree : true }); module.debug('Setting up mutation observer', observer); } }, bind: { events: function() { module.debug('Binding delegated events'); $module .on(settings.on + eventNamespace, selector.trigger, module.event.click) ; } }, event: { click: function() { module.toggle.call(this); } }, toggle: function(query) { var $activeTitle = (query !== undefined) ? (typeof query === 'number') ? $title.eq(query) : $(query).closest(selector.title) : $(this).closest(selector.title), $activeContent = $activeTitle.next($content), isAnimating = $activeContent.hasClass(className.animating), isActive = $activeContent.hasClass(className.active), isOpen = (isActive && !isAnimating), isOpening = (!isActive && isAnimating) ; module.debug('Toggling visibility of content', $activeTitle); if(isOpen || isOpening) { if(settings.collapsible) { module.close.call($activeTitle); } else { module.debug('Cannot close accordion content collapsing is disabled'); } } else { module.open.call($activeTitle); } }, open: function(query) { var $activeTitle = (query !== undefined) ? (typeof query === 'number') ? $title.eq(query) : $(query).closest(selector.title) : $(this).closest(selector.title), $activeContent = $activeTitle.next($content), isAnimating = $activeContent.hasClass(className.animating), isActive = $activeContent.hasClass(className.active), isOpen = (isActive || isAnimating) ; if(isOpen) { module.debug('Accordion already open, skipping', $activeContent); return; } module.debug('Opening accordion content', $activeTitle); settings.onOpening.call($activeContent); if(settings.exclusive) { module.closeOthers.call($activeTitle); } $activeTitle .addClass(className.active) ; $activeContent .stop(true, true) .addClass(className.animating) ; if(settings.animateChildren) { if($.fn.transition !== undefined && $module.transition('is supported')) { $activeContent .children() .transition({ animation : 'fade in', queue : false, useFailSafe : true, debug : settings.debug, verbose : settings.verbose, duration : settings.duration }) ; } else { $activeContent .children() .stop(true, true) .animate({ opacity: 1 }, settings.duration, module.resetOpacity) ; } } $activeContent .slideDown(settings.duration, settings.easing, function() { $activeContent .removeClass(className.animating) .addClass(className.active) ; module.reset.display.call(this); settings.onOpen.call(this); settings.onChange.call(this); }) ; }, close: function(query) { var $activeTitle = (query !== undefined) ? (typeof query === 'number') ? $title.eq(query) : $(query).closest(selector.title) : $(this).closest(selector.title), $activeContent = $activeTitle.next($content), isAnimating = $activeContent.hasClass(className.animating), isActive = $activeContent.hasClass(className.active), isOpening = (!isActive && isAnimating), isClosing = (isActive && isAnimating) ; if((isActive || isOpening) && !isClosing) { module.debug('Closing accordion content', $activeContent); settings.onClosing.call($activeContent); $activeTitle .removeClass(className.active) ; $activeContent .stop(true, true) .addClass(className.animating) ; if(settings.animateChildren) { if($.fn.transition !== undefined && $module.transition('is supported')) { $activeContent .children() .transition({ animation : 'fade out', queue : false, useFailSafe : true, debug : settings.debug, verbose : settings.verbose, duration : settings.duration }) ; } else { $activeContent .children() .stop(true, true) .animate({ opacity: 0 }, settings.duration, module.resetOpacity) ; } } $activeContent .slideUp(settings.duration, settings.easing, function() { $activeContent .removeClass(className.animating) .removeClass(className.active) ; module.reset.display.call(this); settings.onClose.call(this); settings.onChange.call(this); }) ; } }, closeOthers: function(index) { var $activeTitle = (index !== undefined) ? $title.eq(index) : $(this).closest(selector.title), $parentTitles = $activeTitle.parents(selector.content).prev(selector.title), $activeAccordion = $activeTitle.closest(selector.accordion), activeSelector = selector.title + '.' + className.active + ':visible', activeContent = selector.content + '.' + className.active + ':visible', $openTitles, $nestedTitles, $openContents ; if(settings.closeNested) { $openTitles = $activeAccordion.find(activeSelector).not($parentTitles); $openContents = $openTitles.next($content); } else { $openTitles = $activeAccordion.find(activeSelector).not($parentTitles); $nestedTitles = $activeAccordion.find(activeContent).find(activeSelector).not($parentTitles); $openTitles = $openTitles.not($nestedTitles); $openContents = $openTitles.next($content); } if( ($openTitles.length > 0) ) { module.debug('Exclusive enabled, closing other content', $openTitles); $openTitles .removeClass(className.active) ; $openContents .removeClass(className.animating) .stop(true, true) ; if(settings.animateChildren) { if($.fn.transition !== undefined && $module.transition('is supported')) { $openContents .children() .transition({ animation : 'fade out', useFailSafe : true, debug : settings.debug, verbose : settings.verbose, duration : settings.duration }) ; } else { $openContents .children() .stop(true, true) .animate({ opacity: 0 }, settings.duration, module.resetOpacity) ; } } $openContents .slideUp(settings.duration , settings.easing, function() { $(this).removeClass(className.active); module.reset.display.call(this); }) ; } }, reset: { display: function() { module.verbose('Removing inline display from element', this); $(this).css('display', ''); if( $(this).attr('style') === '') { $(this) .attr('style', '') .removeAttr('style') ; } }, opacity: function() { module.verbose('Removing inline opacity from element', this); $(this).css('opacity', ''); if( $(this).attr('style') === '') { $(this) .attr('style', '') .removeAttr('style') ; } }, }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { module.debug('Changing internal', name, value); if(value !== undefined) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else { module[name] = value; } } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.accordion.settings = { name : 'Accordion', namespace : 'accordion', debug : false, verbose : false, performance : true, on : 'click', // event on title that opens accordion observeChanges : true, // whether accordion should automatically refresh on DOM insertion exclusive : true, // whether a single accordion content panel should be open at once collapsible : true, // whether accordion content can be closed closeNested : false, // whether nested content should be closed when a panel is closed animateChildren : true, // whether children opacity should be animated duration : 350, // duration of animation easing : 'easeOutQuad', // easing equation for animation onOpening : function(){}, // callback before open animation onOpen : function(){}, // callback after open animation onClosing : function(){}, // callback before closing animation onClose : function(){}, // callback after closing animation onChange : function(){}, // callback after closing or opening animation error: { method : 'The method you called is not defined' }, className : { active : 'active', animating : 'animating' }, selector : { accordion : '.accordion', title : '.title', trigger : '.title', content : '.content' } }; // Adds easing $.extend( $.easing, { easeOutQuad: function (x, t, b, c, d) { return -c *(t/=d)*(t-2) + b; } }); })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Checkbox * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.checkbox = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = $.extend(true, {}, $.fn.checkbox.settings, parameters), className = settings.className, namespace = settings.namespace, selector = settings.selector, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $label = $(this).children(selector.label), $input = $(this).children(selector.input), input = $input[0], initialLoad = false, shortcutPressed = false, instance = $module.data(moduleNamespace), observer, element = this, module ; module = { initialize: function() { module.verbose('Initializing checkbox', settings); module.create.label(); module.bind.events(); module.set.tabbable(); module.hide.input(); module.observeChanges(); module.instantiate(); module.setup(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying module'); module.unbind.events(); module.show.input(); $module.removeData(moduleNamespace); }, fix: { reference: function() { if( $module.is(selector.input) ) { module.debug('Behavior called on <input> adjusting invoked element'); $module = $module.closest(selector.checkbox); module.refresh(); } } }, setup: function() { module.set.initialLoad(); if( module.is.indeterminate() ) { module.debug('Initial value is indeterminate'); module.indeterminate(); } else if( module.is.checked() ) { module.debug('Initial value is checked'); module.check(); } else { module.debug('Initial value is unchecked'); module.uncheck(); } module.remove.initialLoad(); }, refresh: function() { $label = $module.children(selector.label); $input = $module.children(selector.input); input = $input[0]; }, hide: { input: function() { module.verbose('Modfying <input> z-index to be unselectable'); $input.addClass(className.hidden); } }, show: { input: function() { module.verbose('Modfying <input> z-index to be selectable'); $input.removeClass(className.hidden); } }, observeChanges: function() { if('MutationObserver' in window) { observer = new MutationObserver(function(mutations) { module.debug('DOM tree modified, updating selector cache'); module.refresh(); }); observer.observe(element, { childList : true, subtree : true }); module.debug('Setting up mutation observer', observer); } }, attachEvents: function(selector, event) { var $element = $(selector) ; event = $.isFunction(module[event]) ? module[event] : module.toggle ; if($element.length > 0) { module.debug('Attaching checkbox events to element', selector, event); $element .on('click' + eventNamespace, event) ; } else { module.error(error.notFound); } }, event: { click: function(event) { var $target = $(event.target) ; if( $target.is(selector.input) ) { module.verbose('Using default check action on initialized checkbox'); return; } if( $target.is(selector.link) ) { module.debug('Clicking link inside checkbox, skipping toggle'); return; } module.toggle(); $input.focus(); event.preventDefault(); }, keydown: function(event) { var key = event.which, keyCode = { enter : 13, space : 32, escape : 27 } ; if(key == keyCode.escape) { module.verbose('Escape key pressed blurring field'); $input.blur(); shortcutPressed = true; } else if(!event.ctrlKey && ( key == keyCode.space || key == keyCode.enter) ) { module.verbose('Enter/space key pressed, toggling checkbox'); module.toggle(); shortcutPressed = true; } else { shortcutPressed = false; } }, keyup: function(event) { if(shortcutPressed) { event.preventDefault(); } } }, check: function() { if( !module.should.allowCheck() ) { return; } module.debug('Checking checkbox', $input); module.set.checked(); if( !module.should.ignoreCallbacks() ) { settings.onChecked.call(input); settings.onChange.call(input); } }, uncheck: function() { if( !module.should.allowUncheck() ) { return; } module.debug('Unchecking checkbox'); module.set.unchecked(); if( !module.should.ignoreCallbacks() ) { settings.onUnchecked.call(input); settings.onChange.call(input); } }, indeterminate: function() { if( module.should.allowIndeterminate() ) { module.debug('Checkbox is already indeterminate'); return; } module.debug('Making checkbox indeterminate'); module.set.indeterminate(); if( !module.should.ignoreCallbacks() ) { settings.onIndeterminate.call(input); settings.onChange.call(input); } }, determinate: function() { if( module.should.allowDeterminate() ) { module.debug('Checkbox is already determinate'); return; } module.debug('Making checkbox determinate'); module.set.determinate(); if( !module.should.ignoreCallbacks() ) { settings.onDeterminate.call(input); settings.onChange.call(input); } }, enable: function() { if( module.is.enabled() ) { module.debug('Checkbox is already enabled'); return; } module.debug('Enabling checkbox'); module.set.enabled(); settings.onEnabled.call(input); }, disable: function() { if( module.is.disabled() ) { module.debug('Checkbox is already disabled'); return; } module.debug('Disabling checkbox'); module.set.disabled(); settings.onDisabled.call(input); }, get: { radios: function() { var name = module.get.name() ; return $('input[name="' + name + '"]').closest(selector.checkbox); }, otherRadios: function() { return module.get.radios().not($module); }, name: function() { return $input.attr('name'); } }, is: { initialLoad: function() { return initialLoad; }, radio: function() { return ($input.hasClass(className.radio) || $input.attr('type') == 'radio'); }, indeterminate: function() { return $input.prop('indeterminate') !== undefined && $input.prop('indeterminate'); }, checked: function() { return $input.prop('checked') !== undefined && $input.prop('checked'); }, disabled: function() { return $input.prop('disabled') !== undefined && $input.prop('disabled'); }, enabled: function() { return !module.is.disabled(); }, determinate: function() { return !module.is.indeterminate(); }, unchecked: function() { return !module.is.checked(); } }, should: { allowCheck: function() { if(module.is.determinate() && module.is.checked() && !module.should.forceCallbacks() ) { module.debug('Should not allow check, checkbox is already checked'); return false; } if(settings.beforeChecked.apply(input) === false) { module.debug('Should not allow check, beforeChecked cancelled'); return false; } return true; }, allowUncheck: function() { if(module.is.determinate() && module.is.unchecked() && !module.should.forceCallbacks() ) { module.debug('Should not allow uncheck, checkbox is already unchecked'); return false; } if(settings.beforeUnchecked.apply(input) === false) { module.debug('Should not allow uncheck, beforeUnchecked cancelled'); return false; } return true; }, allowIndeterminate: function() { if(module.is.indeterminate() && !module.should.forceCallbacks() ) { module.debug('Should not allow indeterminate, checkbox is already indeterminate'); return false; } if(settings.beforeIndeterminate.apply(input) === false) { module.debug('Should not allow indeterminate, beforeIndeterminate cancelled'); return false; } return true; }, allowDeterminate: function() { if(module.is.determinate() && !module.should.forceCallbacks() ) { module.debug('Should not allow determinate, checkbox is already determinate'); return false; } if(settings.beforeDeterminate.apply(input) === false) { module.debug('Should not allow determinate, beforeDeterminate cancelled'); return false; } return true; }, forceCallbacks: function() { return (module.is.initialLoad() && settings.fireOnInit); }, ignoreCallbacks: function() { return (initialLoad && !settings.fireOnInit); } }, can: { change: function() { return !( $module.hasClass(className.disabled) || $module.hasClass(className.readOnly) || $input.prop('disabled') || $input.prop('readonly') ); }, uncheck: function() { return (typeof settings.uncheckable === 'boolean') ? settings.uncheckable : !module.is.radio() ; } }, set: { initialLoad: function() { initialLoad = true; }, checked: function() { module.verbose('Setting class to checked'); $module .removeClass(className.indeterminate) .addClass(className.checked) ; if( module.is.radio() ) { module.uncheckOthers(); } if(!module.is.indeterminate() && module.is.checked()) { module.debug('Input is already checked, skipping input property change'); return; } module.verbose('Setting state to checked', input); $input .prop('indeterminate', false) .prop('checked', true) ; module.trigger.change(); }, unchecked: function() { module.verbose('Removing checked class'); $module .removeClass(className.indeterminate) .removeClass(className.checked) ; if(!module.is.indeterminate() && module.is.unchecked() ) { module.debug('Input is already unchecked'); return; } module.debug('Setting state to unchecked'); $input .prop('indeterminate', false) .prop('checked', false) ; module.trigger.change(); }, indeterminate: function() { module.verbose('Setting class to indeterminate'); $module .addClass(className.indeterminate) ; if( module.is.indeterminate() ) { module.debug('Input is already indeterminate, skipping input property change'); return; } module.debug('Setting state to indeterminate'); $input .prop('indeterminate', true) ; module.trigger.change(); }, determinate: function() { module.verbose('Removing indeterminate class'); $module .removeClass(className.indeterminate) ; if( module.is.determinate() ) { module.debug('Input is already determinate, skipping input property change'); return; } module.debug('Setting state to determinate'); $input .prop('indeterminate', false) ; }, disabled: function() { module.verbose('Setting class to disabled'); $module .addClass(className.disabled) ; if( module.is.disabled() ) { module.debug('Input is already disabled, skipping input property change'); return; } module.debug('Setting state to disabled'); $input .prop('disabled', 'disabled') ; module.trigger.change(); }, enabled: function() { module.verbose('Removing disabled class'); $module.removeClass(className.disabled); if( module.is.enabled() ) { module.debug('Input is already enabled, skipping input property change'); return; } module.debug('Setting state to enabled'); $input .prop('disabled', false) ; module.trigger.change(); }, tabbable: function() { module.verbose('Adding tabindex to checkbox'); if( $input.attr('tabindex') === undefined) { $input.attr('tabindex', 0); } } }, remove: { initialLoad: function() { initialLoad = false; } }, trigger: { change: function() { var events = document.createEvent('HTMLEvents'), inputElement = $input[0] ; if(inputElement) { module.verbose('Triggering native change event'); events.initEvent('change', true, false); inputElement.dispatchEvent(events); } } }, create: { label: function() { if($input.prevAll(selector.label).length > 0) { $input.prev(selector.label).detach().insertAfter($input); module.debug('Moving existing label', $label); } else if( !module.has.label() ) { $label = $('<label>').insertAfter($input); module.debug('Creating label', $label); } } }, has: { label: function() { return ($label.length > 0); } }, bind: { events: function() { module.verbose('Attaching checkbox events'); $module .on('click' + eventNamespace, module.event.click) .on('keydown' + eventNamespace, selector.input, module.event.keydown) .on('keyup' + eventNamespace, selector.input, module.event.keyup) ; } }, unbind: { events: function() { module.debug('Removing events'); $module .off(eventNamespace) ; } }, uncheckOthers: function() { var $radios = module.get.otherRadios() ; module.debug('Unchecking other radios', $radios); $radios.removeClass(className.checked); }, toggle: function() { if( !module.can.change() ) { if(!module.is.radio()) { module.debug('Checkbox is read-only or disabled, ignoring toggle'); } return; } if( module.is.indeterminate() || module.is.unchecked() ) { module.debug('Currently unchecked'); module.check(); } else if( module.is.checked() && module.can.uncheck() ) { module.debug('Currently checked'); module.uncheck(); } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.checkbox.settings = { name : 'Checkbox', namespace : 'checkbox', debug : false, verbose : true, performance : true, // delegated event context uncheckable : 'auto', fireOnInit : false, onChange : function(){}, beforeChecked : function(){}, beforeUnchecked : function(){}, beforeDeterminate : function(){}, beforeIndeterminate : function(){}, onChecked : function(){}, onUnchecked : function(){}, onDeterminate : function() {}, onIndeterminate : function() {}, onEnable : function(){}, onDisable : function(){}, className : { checked : 'checked', indeterminate : 'indeterminate', disabled : 'disabled', hidden : 'hidden', radio : 'radio', readOnly : 'read-only' }, error : { method : 'The method you called is not defined' }, selector : { checkbox : '.ui.checkbox', label : 'label, .box', input : 'input[type="checkbox"], input[type="radio"]', link : 'a[href]' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Dimmer * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.dimmer = function(parameters) { var $allModules = $(this), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.dimmer.settings, parameters) : $.extend({}, $.fn.dimmer.settings), selector = settings.selector, namespace = settings.namespace, className = settings.className, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, moduleSelector = $allModules.selector || '', clickEvent = ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click', $module = $(this), $dimmer, $dimmable, element = this, instance = $module.data(moduleNamespace), module ; module = { preinitialize: function() { if( module.is.dimmer() ) { $dimmable = $module.parent(); $dimmer = $module; } else { $dimmable = $module; if( module.has.dimmer() ) { if(settings.dimmerName) { $dimmer = $dimmable.find(selector.dimmer).filter('.' + settings.dimmerName); } else { $dimmer = $dimmable.find(selector.dimmer); } } else { $dimmer = module.create(); } } }, initialize: function() { module.debug('Initializing dimmer', settings); module.bind.events(); module.set.dimmable(); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, instance) ; }, destroy: function() { module.verbose('Destroying previous module', $dimmer); module.unbind.events(); module.remove.variation(); $dimmable .off(eventNamespace) ; }, bind: { events: function() { if(settings.on == 'hover') { $dimmable .on('mouseenter' + eventNamespace, module.show) .on('mouseleave' + eventNamespace, module.hide) ; } else if(settings.on == 'click') { $dimmable .on(clickEvent + eventNamespace, module.toggle) ; } if( module.is.page() ) { module.debug('Setting as a page dimmer', $dimmable); module.set.pageDimmer(); } if( module.is.closable() ) { module.verbose('Adding dimmer close event', $dimmer); $dimmable .on(clickEvent + eventNamespace, selector.dimmer, module.event.click) ; } } }, unbind: { events: function() { $module .removeData(moduleNamespace) ; } }, event: { click: function(event) { module.verbose('Determining if event occured on dimmer', event); if( $dimmer.find(event.target).length === 0 || $(event.target).is(selector.content) ) { module.hide(); event.stopImmediatePropagation(); } } }, addContent: function(element) { var $content = $(element) ; module.debug('Add content to dimmer', $content); if($content.parent()[0] !== $dimmer[0]) { $content.detach().appendTo($dimmer); } }, create: function() { var $element = $( settings.template.dimmer() ) ; if(settings.variation) { module.debug('Creating dimmer with variation', settings.variation); $element.addClass(settings.variation); } if(settings.dimmerName) { module.debug('Creating named dimmer', settings.dimmerName); $element.addClass(settings.dimmerName); } $element .appendTo($dimmable) ; return $element; }, show: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; module.debug('Showing dimmer', $dimmer, settings); if( (!module.is.dimmed() || module.is.animating()) && module.is.enabled() ) { module.animate.show(callback); settings.onShow.call(element); settings.onChange.call(element); } else { module.debug('Dimmer is already shown or disabled'); } }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if( module.is.dimmed() || module.is.animating() ) { module.debug('Hiding dimmer', $dimmer); module.animate.hide(callback); settings.onHide.call(element); settings.onChange.call(element); } else { module.debug('Dimmer is not visible'); } }, toggle: function() { module.verbose('Toggling dimmer visibility', $dimmer); if( !module.is.dimmed() ) { module.show(); } else { module.hide(); } }, animate: { show: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) { if(settings.opacity !== 'auto') { module.set.opacity(); } $dimmer .transition({ animation : settings.transition + ' in', queue : false, duration : module.get.duration(), useFailSafe : true, onStart : function() { module.set.dimmed(); }, onComplete : function() { module.set.active(); callback(); } }) ; } else { module.verbose('Showing dimmer animation with javascript'); module.set.dimmed(); if(settings.opacity == 'auto') { settings.opacity = 0.8; } $dimmer .stop() .css({ opacity : 0, width : '100%', height : '100%' }) .fadeTo(module.get.duration(), settings.opacity, function() { $dimmer.removeAttr('style'); module.set.active(); callback(); }) ; } }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if(settings.useCSS && $.fn.transition !== undefined && $dimmer.transition('is supported')) { module.verbose('Hiding dimmer with css'); $dimmer .transition({ animation : settings.transition + ' out', queue : false, duration : module.get.duration(), useFailSafe : true, onStart : function() { module.remove.dimmed(); }, onComplete : function() { module.remove.active(); callback(); } }) ; } else { module.verbose('Hiding dimmer with javascript'); module.remove.dimmed(); $dimmer .stop() .fadeOut(module.get.duration(), function() { module.remove.active(); $dimmer.removeAttr('style'); callback(); }) ; } } }, get: { dimmer: function() { return $dimmer; }, duration: function() { if(typeof settings.duration == 'object') { if( module.is.active() ) { return settings.duration.hide; } else { return settings.duration.show; } } return settings.duration; } }, has: { dimmer: function() { if(settings.dimmerName) { return ($module.find(selector.dimmer).filter('.' + settings.dimmerName).length > 0); } else { return ( $module.find(selector.dimmer).length > 0 ); } } }, is: { active: function() { return $dimmer.hasClass(className.active); }, animating: function() { return ( $dimmer.is(':animated') || $dimmer.hasClass(className.animating) ); }, closable: function() { if(settings.closable == 'auto') { if(settings.on == 'hover') { return false; } return true; } return settings.closable; }, dimmer: function() { return $module.hasClass(className.dimmer); }, dimmable: function() { return $module.hasClass(className.dimmable); }, dimmed: function() { return $dimmable.hasClass(className.dimmed); }, disabled: function() { return $dimmable.hasClass(className.disabled); }, enabled: function() { return !module.is.disabled(); }, page: function () { return $dimmable.is('body'); }, pageDimmer: function() { return $dimmer.hasClass(className.pageDimmer); } }, can: { show: function() { return !$dimmer.hasClass(className.disabled); } }, set: { opacity: function(opacity) { var color = $dimmer.css('background-color'), colorArray = color.split(','), isRGBA = (colorArray && colorArray.length == 4) ; opacity = settings.opacity === 0 ? 0 : settings.opacity || opacity; if(isRGBA) { colorArray[3] = opacity + ')'; color = colorArray.join(','); } else { color = 'rgba(0, 0, 0, ' + opacity + ')'; } module.debug('Setting opacity to', opacity); $dimmer.css('background-color', color); }, active: function() { $dimmer.addClass(className.active); }, dimmable: function() { $dimmable.addClass(className.dimmable); }, dimmed: function() { $dimmable.addClass(className.dimmed); }, pageDimmer: function() { $dimmer.addClass(className.pageDimmer); }, disabled: function() { $dimmer.addClass(className.disabled); }, variation: function(variation) { variation = variation || settings.variation; if(variation) { $dimmer.addClass(variation); } } }, remove: { active: function() { $dimmer .removeClass(className.active) ; }, dimmed: function() { $dimmable.removeClass(className.dimmed); }, disabled: function() { $dimmer.removeClass(className.disabled); }, variation: function(variation) { variation = variation || settings.variation; if(variation) { $dimmer.removeClass(variation); } } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; module.preinitialize(); if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.dimmer.settings = { name : 'Dimmer', namespace : 'dimmer', debug : false, verbose : false, performance : true, // name to distinguish between multiple dimmers in context dimmerName : false, // whether to add a variation type variation : false, // whether to bind close events closable : 'auto', // whether to use css animations useCSS : true, // css animation to use transition : 'fade', // event to bind to on : false, // overriding opacity value opacity : 'auto', // transition durations duration : { show : 500, hide : 500 }, onChange : function(){}, onShow : function(){}, onHide : function(){}, error : { method : 'The method you called is not defined.' }, className : { active : 'active', animating : 'animating', dimmable : 'dimmable', dimmed : 'dimmed', dimmer : 'dimmer', disabled : 'disabled', hide : 'hide', pageDimmer : 'page', show : 'show' }, selector: { dimmer : '> .ui.dimmer', content : '.ui.dimmer > .content, .ui.dimmer > .content > .center' }, template: { dimmer: function() { return $('<div />').attr('class', 'ui dimmer'); } } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Dropdown * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.dropdown = function(parameters) { var $allModules = $(this), $document = $(document), moduleSelector = $allModules.selector || '', hasTouch = ('ontouchstart' in document.documentElement), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function(elementIndex) { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.dropdown.settings, parameters) : $.extend({}, $.fn.dropdown.settings), className = settings.className, message = settings.message, fields = settings.fields, keys = settings.keys, metadata = settings.metadata, namespace = settings.namespace, regExp = settings.regExp, selector = settings.selector, error = settings.error, templates = settings.templates, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $context = $(settings.context), $text = $module.find(selector.text), $search = $module.find(selector.search), $input = $module.find(selector.input), $icon = $module.find(selector.icon), $combo = ($module.prev().find(selector.text).length > 0) ? $module.prev().find(selector.text) : $module.prev(), $menu = $module.children(selector.menu), $item = $menu.find(selector.item), activated = false, itemActivated = false, internalChange = false, element = this, instance = $module.data(moduleNamespace), initialLoad, pageLostFocus, elementNamespace, id, selectObserver, menuObserver, module ; module = { initialize: function() { module.debug('Initializing dropdown', settings); if( module.is.alreadySetup() ) { module.setup.reference(); } else { module.setup.layout(); module.refreshData(); module.save.defaults(); module.restore.selected(); module.create.id(); module.bind.events(); module.observeChanges(); module.instantiate(); } }, instantiate: function() { module.verbose('Storing instance of dropdown', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous dropdown', $module); module.remove.tabbable(); $module .off(eventNamespace) .removeData(moduleNamespace) ; $menu .off(eventNamespace) ; $document .off(elementNamespace) ; if(selectObserver) { selectObserver.disconnect(); } if(menuObserver) { menuObserver.disconnect(); } }, observeChanges: function() { if('MutationObserver' in window) { selectObserver = new MutationObserver(function(mutations) { module.debug('<select> modified, recreating menu'); module.setup.select(); }); menuObserver = new MutationObserver(function(mutations) { module.debug('Menu modified, updating selector cache'); module.refresh(); }); if(module.has.input()) { selectObserver.observe($input[0], { childList : true, subtree : true }); } if(module.has.menu()) { menuObserver.observe($menu[0], { childList : true, subtree : true }); } module.debug('Setting up mutation observer', selectObserver, menuObserver); } }, create: { id: function() { id = (Math.random().toString(16) + '000000000').substr(2, 8); elementNamespace = '.' + id; module.verbose('Creating unique id for element', id); }, userChoice: function(values) { var $userChoices, $userChoice, isUserValue, html ; values = values || module.get.userValues(); if(!values) { return false; } values = $.isArray(values) ? values : [values] ; $.each(values, function(index, value) { if(module.get.item(value) === false) { html = settings.templates.addition( module.add.variables(message.addResult, value) ); $userChoice = $('<div />') .html(html) .attr('data-' + metadata.value, value) .attr('data-' + metadata.text, value) .addClass(className.addition) .addClass(className.item) ; $userChoices = ($userChoices === undefined) ? $userChoice : $userChoices.add($userChoice) ; module.verbose('Creating user choices for value', value, $userChoice); } }); return $userChoices; }, userLabels: function(value) { var userValues = module.get.userValues() ; if(userValues) { module.debug('Adding user labels', userValues); $.each(userValues, function(index, value) { module.verbose('Adding custom user value'); module.add.label(value, value); }); } }, menu: function() { $menu = $('<div />') .addClass(className.menu) .appendTo($module) ; } }, search: function(query) { query = (query !== undefined) ? query : module.get.query() ; module.verbose('Searching for query', query); module.filter(query); }, select: { firstUnfiltered: function() { module.verbose('Selecting first non-filtered element'); module.remove.selectedItem(); $item .not(selector.unselectable) .eq(0) .addClass(className.selected) ; }, nextAvailable: function($selected) { $selected = $selected.eq(0); var $nextAvailable = $selected.nextAll(selector.item).not(selector.unselectable).eq(0), $prevAvailable = $selected.prevAll(selector.item).not(selector.unselectable).eq(0), hasNext = ($nextAvailable.length > 0) ; if(hasNext) { module.verbose('Moving selection to', $nextAvailable); $nextAvailable.addClass(className.selected); } else { module.verbose('Moving selection to', $prevAvailable); $prevAvailable.addClass(className.selected); } } }, setup: { api: function() { var apiSettings = { debug : settings.debug, on : false } ; module.verbose('First request, initializing API'); $module .api(apiSettings) ; }, layout: function() { if( $module.is('select') ) { module.setup.select(); module.setup.returnedObject(); } if( !module.has.menu() ) { module.create.menu(); } if( module.is.search() && !module.has.search() ) { module.verbose('Adding search input'); $search = $('<input />') .addClass(className.search) .prop('autocomplete', 'off') .insertBefore($text) ; } if(settings.allowTab) { module.set.tabbable(); } }, select: function() { var selectValues = module.get.selectValues() ; module.debug('Dropdown initialized on a select', selectValues); if( $module.is('select') ) { $input = $module; } // see if select is placed correctly already if($input.parent(selector.dropdown).length > 0) { module.debug('UI dropdown already exists. Creating dropdown menu only'); $module = $input.closest(selector.dropdown); if( !module.has.menu() ) { module.create.menu(); } $menu = $module.children(selector.menu); module.setup.menu(selectValues); } else { module.debug('Creating entire dropdown from select'); $module = $('<div />') .attr('class', $input.attr('class') ) .addClass(className.selection) .addClass(className.dropdown) .html( templates.dropdown(selectValues) ) .insertBefore($input) ; if($input.hasClass(className.multiple) && $input.prop('multiple') === false) { module.error(error.missingMultiple); $input.prop('multiple', true); } if($input.is('[multiple]')) { module.set.multiple(); } if ($input.prop('disabled')) { module.debug('Disabling dropdown') $module.addClass(className.disabled) } $input .removeAttr('class') .detach() .prependTo($module) ; } module.refresh(); }, menu: function(values) { $menu.html( templates.menu(values, fields)); $item = $menu.find(selector.item); }, reference: function() { module.debug('Dropdown behavior was called on select, replacing with closest dropdown'); // replace module reference $module = $module.parent(selector.dropdown); module.refresh(); module.setup.returnedObject(); // invoke method in context of current instance if(methodInvoked) { instance = module; module.invoke(query); } }, returnedObject: function() { var $firstModules = $allModules.slice(0, elementIndex), $lastModules = $allModules.slice(elementIndex + 1) ; // adjust all modules to use correct reference $allModules = $firstModules.add($module).add($lastModules); } }, refresh: function() { module.refreshSelectors(); module.refreshData(); }, refreshSelectors: function() { module.verbose('Refreshing selector cache'); $text = $module.find(selector.text); $search = $module.find(selector.search); $input = $module.find(selector.input); $icon = $module.find(selector.icon); $combo = ($module.prev().find(selector.text).length > 0) ? $module.prev().find(selector.text) : $module.prev() ; $menu = $module.children(selector.menu); $item = $menu.find(selector.item); }, refreshData: function() { module.verbose('Refreshing cached metadata'); $item .removeData(metadata.text) .removeData(metadata.value) ; $module .removeData(metadata.defaultText) .removeData(metadata.defaultValue) .removeData(metadata.placeholderText) ; }, toggle: function() { module.verbose('Toggling menu visibility'); if( !module.is.active() ) { module.show(); } else { module.hide(); } }, show: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if( module.can.show() && !module.is.active() ) { module.debug('Showing dropdown'); if(module.is.multiple() && !module.has.search() && module.is.allFiltered()) { return true; } if(module.has.message() && !(module.has.maxSelections() || module.has.allResultsFiltered()) ) { module.remove.message(); } if(settings.onShow.call(element) !== false) { module.animate.show(function() { if( module.can.click() ) { module.bind.intent(); } module.set.visible(); callback.call(element); }); } } }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if( module.is.active() ) { module.debug('Hiding dropdown'); if(settings.onHide.call(element) !== false) { module.animate.hide(function() { module.remove.visible(); callback.call(element); }); } } }, hideOthers: function() { module.verbose('Finding other dropdowns to hide'); $allModules .not($module) .has(selector.menu + '.' + className.visible) .dropdown('hide') ; }, hideMenu: function() { module.verbose('Hiding menu instantaneously'); module.remove.active(); module.remove.visible(); $menu.transition('hide'); }, hideSubMenus: function() { var $subMenus = $menu.children(selector.item).find(selector.menu) ; module.verbose('Hiding sub menus', $subMenus); $subMenus.transition('hide'); }, bind: { events: function() { if(hasTouch) { module.bind.touchEvents(); } module.bind.keyboardEvents(); module.bind.inputEvents(); module.bind.mouseEvents(); }, touchEvents: function() { module.debug('Touch device detected binding additional touch events'); if( module.is.searchSelection() ) { // do nothing special yet } else if( module.is.single() ) { $module .on('touchstart' + eventNamespace, module.event.test.toggle) ; } $menu .on('touchstart' + eventNamespace, selector.item, module.event.item.mouseenter) ; }, keyboardEvents: function() { module.verbose('Binding keyboard events'); $module .on('keydown' + eventNamespace, module.event.keydown) ; if( module.has.search() ) { $module .on(module.get.inputEvent() + eventNamespace, selector.search, module.event.input) ; } if( module.is.multiple() ) { $document .on('keydown' + elementNamespace, module.event.document.keydown) ; } }, inputEvents: function() { module.verbose('Binding input change events'); $module .on('change' + eventNamespace, selector.input, module.event.change) ; }, mouseEvents: function() { module.verbose('Binding mouse events'); if(module.is.multiple()) { $module .on('click' + eventNamespace, selector.label, module.event.label.click) .on('click' + eventNamespace, selector.remove, module.event.remove.click) ; } if( module.is.searchSelection() ) { $module .on('mousedown' + eventNamespace, selector.menu, module.event.menu.mousedown) .on('mouseup' + eventNamespace, selector.menu, module.event.menu.mouseup) .on('click' + eventNamespace, selector.icon, module.event.icon.click) .on('click' + eventNamespace, selector.search, module.show) .on('focus' + eventNamespace, selector.search, module.event.search.focus) .on('blur' + eventNamespace, selector.search, module.event.search.blur) .on('click' + eventNamespace, selector.text, module.event.text.focus) ; if(module.is.multiple()) { $module .on('click' + eventNamespace, module.event.click) ; } } else { if(settings.on == 'click') { $module .on('click' + eventNamespace, selector.icon, module.event.icon.click) .on('click' + eventNamespace, module.event.test.toggle) ; } else if(settings.on == 'hover') { $module .on('mouseenter' + eventNamespace, module.delay.show) .on('mouseleave' + eventNamespace, module.delay.hide) ; } else { $module .on(settings.on + eventNamespace, module.toggle) ; } $module .on('mousedown' + eventNamespace, module.event.mousedown) .on('mouseup' + eventNamespace, module.event.mouseup) .on('focus' + eventNamespace, module.event.focus) .on('blur' + eventNamespace, module.event.blur) ; } $menu .on('mouseenter' + eventNamespace, selector.item, module.event.item.mouseenter) .on('mouseleave' + eventNamespace, selector.item, module.event.item.mouseleave) .on('click' + eventNamespace, selector.item, module.event.item.click) ; }, intent: function() { module.verbose('Binding hide intent event to document'); if(hasTouch) { $document .on('touchstart' + elementNamespace, module.event.test.touch) .on('touchmove' + elementNamespace, module.event.test.touch) ; } $document .on('click' + elementNamespace, module.event.test.hide) ; } }, unbind: { intent: function() { module.verbose('Removing hide intent event from document'); if(hasTouch) { $document .off('touchstart' + elementNamespace) .off('touchmove' + elementNamespace) ; } $document .off('click' + elementNamespace) ; } }, filter: function(query) { var searchTerm = (query !== undefined) ? query : module.get.query(), afterFiltered = function() { if(module.is.multiple()) { module.filterActive(); } module.select.firstUnfiltered(); if( module.has.allResultsFiltered() ) { if( settings.onNoResults.call(element, searchTerm) ) { if(!settings.allowAdditions) { module.verbose('All items filtered, showing message', searchTerm); module.add.message(message.noResults); } } else { module.verbose('All items filtered, hiding dropdown', searchTerm); module.hideMenu(); } } else { module.remove.message(); } if(settings.allowAdditions) { module.add.userSuggestion(query); } if(module.is.searchSelection() && module.can.show() && module.is.focusedOnSearch() ) { module.show(); } } ; if(settings.useLabels && module.has.maxSelections()) { return; } if(settings.apiSettings) { if( module.can.useAPI() ) { module.queryRemote(searchTerm, function() { afterFiltered(); }); } else { module.error(error.noAPI); } } else { module.filterItems(searchTerm); afterFiltered(); } }, queryRemote: function(query, callback) { var apiSettings = { errorDuration : false, throttle : settings.throttle, urlData : { query: query }, onError: function() { module.add.message(message.serverError); callback(); }, onFailure: function() { module.add.message(message.serverError); callback(); }, onSuccess : function(response) { module.remove.message(); module.setup.menu({ values: response[fields.remoteValues] }); callback(); } } ; if( !$module.api('get request') ) { module.setup.api(); } apiSettings = $.extend(true, {}, apiSettings, settings.apiSettings); $module .api('setting', apiSettings) .api('query') ; }, filterItems: function(query) { var searchTerm = (query !== undefined) ? query : module.get.query(), results = null, escapedTerm = module.escape.regExp(searchTerm), beginsWithRegExp = new RegExp('^' + escapedTerm, 'igm') ; // avoid loop if we're matching nothing if( module.has.query() ) { results = []; module.verbose('Searching for matching values', searchTerm); $item .each(function(){ var $choice = $(this), text, value ; if(settings.match == 'both' || settings.match == 'text') { text = String(module.get.choiceText($choice, false)); if(text.search(beginsWithRegExp) !== -1) { results.push(this); return true; } else if(settings.fullTextSearch && module.fuzzySearch(searchTerm, text)) { results.push(this); return true; } } if(settings.match == 'both' || settings.match == 'value') { value = String(module.get.choiceValue($choice, text)); if(value.search(beginsWithRegExp) !== -1) { results.push(this); return true; } else if(settings.fullTextSearch && module.fuzzySearch(searchTerm, value)) { results.push(this); return true; } } }) ; } module.debug('Showing only matched items', searchTerm); module.remove.filteredItem(); if(results) { $item .not(results) .addClass(className.filtered) ; } }, fuzzySearch: function(query, term) { var termLength = term.length, queryLength = query.length ; query = query.toLowerCase(); term = term.toLowerCase(); if(queryLength > termLength) { return false; } if(queryLength === termLength) { return (query === term); } search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) { var queryCharacter = query.charCodeAt(characterIndex) ; while(nextCharacterIndex < termLength) { if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) { continue search; } } return false; } return true; }, filterActive: function() { if(settings.useLabels) { $item.filter('.' + className.active) .addClass(className.filtered) ; } }, focusSearch: function() { if( module.is.search() && !module.is.focusedOnSearch() ) { $search[0].focus(); } }, forceSelection: function() { var $currentlySelected = $item.not(className.filtered).filter('.' + className.selected).eq(0), $activeItem = $item.not(className.filtered).filter('.' + className.active).eq(0), $selectedItem = ($currentlySelected.length > 0) ? $currentlySelected : $activeItem, hasSelected = ($selectedItem.size() > 0) ; if( module.has.query() ) { if(hasSelected) { module.debug('Forcing partial selection to selected item', $selectedItem); module.event.item.click.call($selectedItem); return; } else { module.remove.searchTerm(); } } module.hide(); }, event: { change: function() { if(!internalChange) { module.debug('Input changed, updating selection'); module.set.selected(); } }, focus: function() { if(settings.showOnFocus && !activated && module.is.hidden() && !pageLostFocus) { module.show(); } }, click: function(event) { var $target = $(event.target) ; // focus search if($target.is($module) && !module.is.focusedOnSearch()) { module.focusSearch(); } }, blur: function(event) { pageLostFocus = (document.activeElement === this); if(!activated && !pageLostFocus) { module.remove.activeLabel(); module.hide(); } }, // prevents focus callback from occurring on mousedown mousedown: function() { activated = true; }, mouseup: function() { activated = false; }, search: { focus: function() { activated = true; if(module.is.multiple()) { module.remove.activeLabel(); } if(settings.showOnFocus) { module.search(); module.show(); } }, blur: function(event) { pageLostFocus = (document.activeElement === this); if(!itemActivated && !pageLostFocus) { if(module.is.multiple()) { module.remove.activeLabel(); module.hide(); } else if(settings.forceSelection) { module.forceSelection(); } else { module.hide(); } } else if(pageLostFocus) { if(settings.forceSelection) { module.forceSelection(); } } } }, icon: { click: function(event) { module.toggle(); event.stopPropagation(); } }, text: { focus: function(event) { activated = true; module.focusSearch(); } }, input: function(event) { if(module.is.multiple() || module.is.searchSelection()) { module.set.filtered(); } clearTimeout(module.timer); module.timer = setTimeout(module.search, settings.delay.search); }, label: { click: function(event) { var $label = $(this), $labels = $module.find(selector.label), $activeLabels = $labels.filter('.' + className.active), $nextActive = $label.nextAll('.' + className.active), $prevActive = $label.prevAll('.' + className.active), $range = ($nextActive.length > 0) ? $label.nextUntil($nextActive).add($activeLabels).add($label) : $label.prevUntil($prevActive).add($activeLabels).add($label) ; if(event.shiftKey) { $activeLabels.removeClass(className.active); $range.addClass(className.active); } else if(event.ctrlKey) { $label.toggleClass(className.active); } else { $activeLabels.removeClass(className.active); $label.addClass(className.active); } settings.onLabelSelect.apply(this, $labels.filter('.' + className.active)); } }, remove: { click: function() { var $label = $(this).parent() ; if( $label.hasClass(className.active) ) { // remove all selected labels module.remove.activeLabels(); } else { // remove this label only module.remove.activeLabels( $label ); } } }, test: { toggle: function(event) { var toggleBehavior = (module.is.multiple()) ? module.show : module.toggle ; if( module.determine.eventOnElement(event, toggleBehavior) ) { event.preventDefault(); } }, touch: function(event) { module.determine.eventOnElement(event, function() { if(event.type == 'touchstart') { module.timer = setTimeout(function() { module.hide(); }, settings.delay.touch); } else if(event.type == 'touchmove') { clearTimeout(module.timer); } }); event.stopPropagation(); }, hide: function(event) { module.determine.eventInModule(event, module.hide); } }, menu: { mousedown: function() { itemActivated = true; }, mouseup: function() { itemActivated = false; } }, item: { mouseenter: function(event) { var $subMenu = $(this).children(selector.menu), $otherMenus = $(this).siblings(selector.item).children(selector.menu) ; if( $subMenu.length > 0 ) { clearTimeout(module.itemTimer); module.itemTimer = setTimeout(function() { module.verbose('Showing sub-menu', $subMenu); $.each($otherMenus, function() { module.animate.hide(false, $(this)); }); module.animate.show(false, $subMenu); }, settings.delay.show); event.preventDefault(); } }, mouseleave: function(event) { var $subMenu = $(this).children(selector.menu) ; if($subMenu.length > 0) { clearTimeout(module.itemTimer); module.itemTimer = setTimeout(function() { module.verbose('Hiding sub-menu', $subMenu); module.animate.hide(false, $subMenu); }, settings.delay.hide); } }, touchend: function() { }, click: function (event) { var $choice = $(this), $target = (event) ? $(event.target) : $(''), $subMenu = $choice.find(selector.menu), text = module.get.choiceText($choice), value = module.get.choiceValue($choice, text), hasSubMenu = ($subMenu.length > 0), isBubbledEvent = ($subMenu.find($target).length > 0) ; if(!isBubbledEvent && (!hasSubMenu || settings.allowCategorySelection)) { if(!settings.useLabels) { module.remove.filteredItem(); module.remove.searchTerm(); module.set.scrollPosition($choice); } module.determine.selectAction.call(this, text, value); } } }, document: { // label selection should occur even when element has no focus keydown: function(event) { var pressedKey = event.which, isShortcutKey = module.is.inObject(pressedKey, keys) ; if(isShortcutKey) { var $label = $module.find(selector.label), $activeLabel = $label.filter('.' + className.active), activeValue = $activeLabel.data(metadata.value), labelIndex = $label.index($activeLabel), labelCount = $label.length, hasActiveLabel = ($activeLabel.length > 0), hasMultipleActive = ($activeLabel.length > 1), isFirstLabel = (labelIndex === 0), isLastLabel = (labelIndex + 1 == labelCount), isSearch = module.is.searchSelection(), isFocusedOnSearch = module.is.focusedOnSearch(), isFocused = module.is.focused(), caretAtStart = (isFocusedOnSearch && module.get.caretPosition() === 0), $nextLabel ; if(isSearch && !hasActiveLabel && !isFocusedOnSearch) { return; } if(pressedKey == keys.leftArrow) { // activate previous label if((isFocused || caretAtStart) && !hasActiveLabel) { module.verbose('Selecting previous label'); $label.last().addClass(className.active); } else if(hasActiveLabel) { if(!event.shiftKey) { module.verbose('Selecting previous label'); $label.removeClass(className.active); } else { module.verbose('Adding previous label to selection'); } if(isFirstLabel && !hasMultipleActive) { $activeLabel.addClass(className.active); } else { $activeLabel.prev(selector.siblingLabel) .addClass(className.active) .end() ; } event.preventDefault(); } } else if(pressedKey == keys.rightArrow) { // activate first label if(isFocused && !hasActiveLabel) { $label.first().addClass(className.active); } // activate next label if(hasActiveLabel) { if(!event.shiftKey) { module.verbose('Selecting next label'); $label.removeClass(className.active); } else { module.verbose('Adding next label to selection'); } if(isLastLabel) { if(isSearch) { if(!isFocusedOnSearch) { module.focusSearch(); } else { $label.removeClass(className.active); } } else if(hasMultipleActive) { $activeLabel.next(selector.siblingLabel).addClass(className.active); } else { $activeLabel.addClass(className.active); } } else { $activeLabel.next(selector.siblingLabel).addClass(className.active); } event.preventDefault(); } } else if(pressedKey == keys.deleteKey || pressedKey == keys.backspace) { if(hasActiveLabel) { module.verbose('Removing active labels'); if(isLastLabel) { if(isSearch && !isFocusedOnSearch) { module.focusSearch(); } } $activeLabel.last().next(selector.siblingLabel).addClass(className.active); module.remove.activeLabels($activeLabel); event.preventDefault(); } else if(caretAtStart && !hasActiveLabel && pressedKey == keys.backspace) { module.verbose('Removing last label on input backspace'); $activeLabel = $label.last().addClass(className.active); module.remove.activeLabels($activeLabel); } } else { $activeLabel.removeClass(className.active); } } } }, keydown: function(event) { var pressedKey = event.which, isShortcutKey = module.is.inObject(pressedKey, keys) ; if(isShortcutKey) { var $currentlySelected = $item.not(selector.unselectable).filter('.' + className.selected).eq(0), $activeItem = $menu.children('.' + className.active).eq(0), $selectedItem = ($currentlySelected.length > 0) ? $currentlySelected : $activeItem, $visibleItems = ($selectedItem.length > 0) ? $selectedItem.siblings(':not(.' + className.filtered +')').andSelf() : $menu.children(':not(.' + className.filtered +')'), $subMenu = $selectedItem.children(selector.menu), $parentMenu = $selectedItem.closest(selector.menu), inVisibleMenu = ($parentMenu.hasClass(className.visible) || $parentMenu.hasClass(className.animating) || $parentMenu.parent(selector.menu).length > 0), hasSubMenu = ($subMenu.length> 0), hasSelectedItem = ($selectedItem.length > 0), selectedIsSelectable = ($selectedItem.not(selector.unselectable).length > 0), delimiterPressed = (pressedKey == keys.delimiter && settings.allowAdditions && module.is.multiple()), $nextItem, isSubMenuItem, newIndex ; // visible menu keyboard shortcuts if( module.is.visible() ) { // enter (select or open sub-menu) if(pressedKey == keys.enter || delimiterPressed) { if(pressedKey == keys.enter && hasSelectedItem && hasSubMenu && !settings.allowCategorySelection) { module.verbose('Pressed enter on unselectable category, opening sub menu'); pressedKey = keys.rightArrow; } else if(selectedIsSelectable) { module.verbose('Selecting item from keyboard shortcut', $selectedItem); module.event.item.click.call($selectedItem, event); if(module.is.searchSelection()) { module.remove.searchTerm(); } } event.preventDefault(); } // left arrow (hide sub-menu) if(pressedKey == keys.leftArrow) { isSubMenuItem = ($parentMenu[0] !== $menu[0]); if(isSubMenuItem) { module.verbose('Left key pressed, closing sub-menu'); module.animate.hide(false, $parentMenu); $selectedItem .removeClass(className.selected) ; $parentMenu .closest(selector.item) .addClass(className.selected) ; event.preventDefault(); } } // right arrow (show sub-menu) if(pressedKey == keys.rightArrow) { if(hasSubMenu) { module.verbose('Right key pressed, opening sub-menu'); module.animate.show(false, $subMenu); $selectedItem .removeClass(className.selected) ; $subMenu .find(selector.item).eq(0) .addClass(className.selected) ; event.preventDefault(); } } // up arrow (traverse menu up) if(pressedKey == keys.upArrow) { $nextItem = (hasSelectedItem && inVisibleMenu) ? $selectedItem.prevAll(selector.item + ':not(' + selector.unselectable + ')').eq(0) : $item.eq(0) ; if($visibleItems.index( $nextItem ) < 0) { module.verbose('Up key pressed but reached top of current menu'); event.preventDefault(); return; } else { module.verbose('Up key pressed, changing active item'); $selectedItem .removeClass(className.selected) ; $nextItem .addClass(className.selected) ; module.set.scrollPosition($nextItem); } event.preventDefault(); } // down arrow (traverse menu down) if(pressedKey == keys.downArrow) { $nextItem = (hasSelectedItem && inVisibleMenu) ? $nextItem = $selectedItem.nextAll(selector.item + ':not(' + selector.unselectable + ')').eq(0) : $item.eq(0) ; if($nextItem.length === 0) { module.verbose('Down key pressed but reached bottom of current menu'); event.preventDefault(); return; } else { module.verbose('Down key pressed, changing active item'); $item .removeClass(className.selected) ; $nextItem .addClass(className.selected) ; module.set.scrollPosition($nextItem); } event.preventDefault(); } // page down (show next page) if(pressedKey == keys.pageUp) { module.scrollPage('up'); event.preventDefault(); } if(pressedKey == keys.pageDown) { module.scrollPage('down'); event.preventDefault(); } // escape (close menu) if(pressedKey == keys.escape) { module.verbose('Escape key pressed, closing dropdown'); module.hide(); } } else { // delimiter key if(delimiterPressed) { event.preventDefault(); } // down arrow (open menu) if(pressedKey == keys.downArrow) { module.verbose('Down key pressed, showing dropdown'); module.show(); event.preventDefault(); } } } else { if( module.is.selection() && !module.is.search() ) { module.set.selectedLetter( String.fromCharCode(pressedKey) ); } } } }, trigger: { change: function() { var events = document.createEvent('HTMLEvents'), inputElement = $input[0] ; if(inputElement) { module.verbose('Triggering native change event'); events.initEvent('change', true, false); inputElement.dispatchEvent(events); } } }, determine: { selectAction: function(text, value) { module.verbose('Determining action', settings.action); if( $.isFunction( module.action[settings.action] ) ) { module.verbose('Triggering preset action', settings.action, text, value); module.action[ settings.action ].call(this, text, value); } else if( $.isFunction(settings.action) ) { module.verbose('Triggering user action', settings.action, text, value); settings.action.call(this, text, value); } else { module.error(error.action, settings.action); } }, eventInModule: function(event, callback) { var $target = $(event.target), inDocument = ($target.closest(document.documentElement).length > 0), inModule = ($target.closest($module).length > 0) ; callback = $.isFunction(callback) ? callback : function(){} ; if(inDocument && !inModule) { module.verbose('Triggering event', callback); callback(); return true; } else { module.verbose('Event occurred in dropdown, canceling callback'); return false; } }, eventOnElement: function(event, callback) { var $target = $(event.target), $label = $target.closest(selector.siblingLabel), notOnLabel = ($module.find($label).length === 0), notInMenu = ($target.closest($menu).length === 0) ; callback = $.isFunction(callback) ? callback : function(){} ; if(notOnLabel && notInMenu) { module.verbose('Triggering event', callback); callback(); return true; } else { module.verbose('Event occurred in dropdown menu, canceling callback'); return false; } } }, action: { nothing: function() {}, activate: function(text, value) { value = (value !== undefined) ? value : text ; if( module.can.activate( $(this) ) ) { module.set.selected(value, $(this)); if(module.is.multiple() && !module.is.allFiltered()) { return; } else { module.hideAndClear(); } } }, select: function(text, value) { // mimics action.activate but does not select text module.action.activate.call(this); }, combo: function(text, value) { value = (value !== undefined) ? value : text ; module.set.selected(value, $(this)); module.hideAndClear(); }, hide: function(text, value) { module.set.value(value); module.hideAndClear(); } }, get: { id: function() { return id; }, defaultText: function() { return $module.data(metadata.defaultText); }, defaultValue: function() { return $module.data(metadata.defaultValue); }, placeholderText: function() { return $module.data(metadata.placeholderText) || ''; }, text: function() { return $text.text(); }, query: function() { return $.trim($search.val()); }, searchWidth: function(characterCount) { return (characterCount * settings.glyphWidth) + 'em'; }, selectionCount: function() { var values = module.get.values(), count ; count = ( module.is.multiple() ) ? $.isArray(values) ? values.length : 0 : (module.get.value() !== '') ? 1 : 0 ; return count; }, transition: function($subMenu) { return (settings.transition == 'auto') ? module.is.upward($subMenu) ? 'slide up' : 'slide down' : settings.transition ; }, userValues: function() { var values = module.get.values() ; if(!values) { return false; } values = $.isArray(values) ? values : [values] ; return $.grep(values, function(value) { return (module.get.item(value) === false); }); }, uniqueArray: function(array) { return $.grep(array, function (value, index) { return $.inArray(value, array) === index; }); }, caretPosition: function() { var input = $search.get(0), range, rangeLength ; if('selectionStart' in input) { return input.selectionStart; } else if (document.selection) { input.focus(); range = document.selection.createRange(); rangeLength = range.text.length; range.moveStart('character', -input.value.length); return range.text.length - rangeLength; } }, value: function() { var value = ($input.length > 0) ? $input.val() : $module.data(metadata.value) ; // prevents placeholder element from being selected when multiple if($.isArray(value) && value.length === 1 && value[0] === '') { return ''; } return value; }, values: function() { var value = module.get.value() ; if(value === '') { return ''; } return ( !module.has.selectInput() && module.is.multiple() ) ? (typeof value == 'string') // delimited string ? value.split(settings.delimiter) : '' : value ; }, remoteValues: function() { var values = module.get.values(), remoteValues = false ; if(values) { if(typeof values == 'string') { values = [values]; } remoteValues = {}; $.each(values, function(index, value) { var name = module.read.remoteData(value) ; module.verbose('Restoring value from session data', name, value); remoteValues[value] = (name) ? name : value ; }); } return remoteValues; }, choiceText: function($choice, preserveHTML) { preserveHTML = (preserveHTML !== undefined) ? preserveHTML : settings.preserveHTML ; if($choice) { if($choice.find(selector.menu).length > 0) { module.verbose('Retreiving text of element with sub-menu'); $choice = $choice.clone(); $choice.find(selector.menu).remove(); $choice.find(selector.menuIcon).remove(); } return ($choice.data(metadata.text) !== undefined) ? $choice.data(metadata.text) : (preserveHTML) ? $.trim($choice.html()) : $.trim($choice.text()) ; } }, choiceValue: function($choice, choiceText) { choiceText = choiceText || module.get.choiceText($choice); if(!$choice) { return false; } return ($choice.data(metadata.value) !== undefined) ? String( $choice.data(metadata.value) ) : (typeof choiceText === 'string') ? $.trim(choiceText.toLowerCase()) : String(choiceText) ; }, inputEvent: function() { var input = $search[0] ; if(input) { return (input.oninput !== undefined) ? 'input' : (input.onpropertychange !== undefined) ? 'propertychange' : 'keyup' ; } return false; }, selectValues: function() { var select = {} ; select.values = []; $module .find('option') .each(function() { var $option = $(this), name = $option.html(), disabled = $option.attr('disabled'), value = ( $option.attr('value') !== undefined ) ? $option.attr('value') : name ; if(settings.placeholder === 'auto' && value === '') { select.placeholder = name; } else { select.values.push({ name : name, value : value, disabled : disabled }); } }) ; if(settings.placeholder && settings.placeholder !== 'auto') { module.debug('Setting placeholder value to', settings.placeholder); select.placeholder = settings.placeholder; } if(settings.sortSelect) { select.values.sort(function(a, b) { return (a.name > b.name) ? 1 : -1 ; }); module.debug('Retrieved and sorted values from select', select); } else { module.debug('Retreived values from select', select); } return select; }, activeItem: function() { return $item.filter('.' + className.active); }, selectedItem: function() { var $selectedItem = $item.not(selector.unselectable).filter('.' + className.selected) ; return ($selectedItem.length > 0) ? $selectedItem : $item.eq(0) ; }, itemWithAdditions: function(value) { var $items = module.get.item(value), $userItems = module.create.userChoice(value), hasUserItems = ($userItems && $userItems.length > 0) ; if(hasUserItems) { $items = ($items.length > 0) ? $items.add($userItems) : $userItems ; } return $items; }, item: function(value, strict) { var $selectedItem = false, shouldSearch, isMultiple ; value = (value !== undefined) ? value : ( module.get.values() !== undefined) ? module.get.values() : module.get.text() ; shouldSearch = (isMultiple) ? (value.length > 0) : (value !== undefined && value !== null) ; isMultiple = (module.is.multiple() && $.isArray(value)); strict = (value === '' || value === 0) ? true : strict || false ; if(shouldSearch) { $item .each(function() { var $choice = $(this), optionText = module.get.choiceText($choice), optionValue = module.get.choiceValue($choice, optionText) ; // safe early exit if(optionValue === null || optionValue === undefined) { return; } if(isMultiple) { if($.inArray( String(optionValue), value) !== -1 || $.inArray(optionText, value) !== -1) { $selectedItem = ($selectedItem) ? $selectedItem.add($choice) : $choice ; } } else if(strict) { module.verbose('Ambiguous dropdown value using strict type check', $choice, value); if( optionValue === value || optionText === value) { $selectedItem = $choice; return true; } } else { if( String(optionValue) == String(value) || optionText == value) { module.verbose('Found select item by value', optionValue, value); $selectedItem = $choice; return true; } } }) ; } return $selectedItem; } }, check: { maxSelections: function(selectionCount) { if(settings.maxSelections) { selectionCount = (selectionCount !== undefined) ? selectionCount : module.get.selectionCount() ; if(selectionCount >= settings.maxSelections) { module.debug('Maximum selection count reached'); if(settings.useLabels) { $item.addClass(className.filtered); module.add.message(message.maxSelections); } return true; } else { module.verbose('No longer at maximum selection count'); module.remove.message(); module.remove.filteredItem(); if(module.is.searchSelection()) { module.filterItems(); } return false; } } return true; } }, restore: { defaults: function() { module.clear(); module.restore.defaultText(); module.restore.defaultValue(); }, defaultText: function() { var defaultText = module.get.defaultText(), placeholderText = module.get.placeholderText ; if(defaultText === placeholderText) { module.debug('Restoring default placeholder text', defaultText); module.set.placeholderText(defaultText); } else { module.debug('Restoring default text', defaultText); module.set.text(defaultText); } }, defaultValue: function() { var defaultValue = module.get.defaultValue() ; if(defaultValue !== undefined) { module.debug('Restoring default value', defaultValue); if(defaultValue !== '') { module.set.value(defaultValue); module.set.selected(); } else { module.remove.activeItem(); module.remove.selectedItem(); } } }, labels: function() { if(settings.allowAdditions) { if(!settings.useLabels) { module.error(error.labels); settings.useLabels = true; } module.debug('Restoring selected values'); module.create.userLabels(); } module.check.maxSelections(); }, selected: function() { module.restore.values(); if(module.is.multiple()) { module.debug('Restoring previously selected values and labels'); module.restore.labels(); } else { module.debug('Restoring previously selected values'); } }, values: function() { // prevents callbacks from occuring on initial load module.set.initialLoad(); if(settings.apiSettings) { if(settings.saveRemoteData) { module.restore.remoteValues(); } else { module.clearValue(); } } else { module.set.selected(); } module.remove.initialLoad(); }, remoteValues: function() { var values = module.get.remoteValues() ; module.debug('Recreating selected from session data', values); if(values) { if( module.is.single() ) { $.each(values, function(value, name) { module.set.text(name); }); } else { $.each(values, function(value, name) { module.add.label(value, name); }); } } } }, read: { remoteData: function(value) { var name ; if(window.Storage === undefined) { module.error(error.noStorage); return; } name = sessionStorage.getItem(value); return (name !== undefined) ? name : false ; } }, save: { defaults: function() { module.save.defaultText(); module.save.placeholderText(); module.save.defaultValue(); }, defaultValue: function() { var value = module.get.value() ; module.verbose('Saving default value as', value); $module.data(metadata.defaultValue, value); }, defaultText: function() { var text = module.get.text() ; module.verbose('Saving default text as', text); $module.data(metadata.defaultText, text); }, placeholderText: function() { var text ; if(settings.placeholder !== false && $text.hasClass(className.placeholder)) { text = module.get.text(); module.verbose('Saving placeholder text as', text); $module.data(metadata.placeholderText, text); } }, remoteData: function(name, value) { if(window.Storage === undefined) { module.error(error.noStorage); return; } module.verbose('Saving remote data to session storage', value, name); sessionStorage.setItem(value, name); } }, clear: function() { if(module.is.multiple()) { module.remove.labels(); } else { module.remove.activeItem(); module.remove.selectedItem(); } module.set.placeholderText(); module.clearValue(); }, clearValue: function() { module.set.value(''); }, scrollPage: function(direction, $selectedItem) { var $currentItem = $selectedItem || module.get.selectedItem(), $menu = $currentItem.closest(selector.menu), menuHeight = $menu.outerHeight(), currentScroll = $menu.scrollTop(), itemHeight = $item.eq(0).outerHeight(), itemsPerPage = Math.floor(menuHeight / itemHeight), maxScroll = $menu.prop('scrollHeight'), newScroll = (direction == 'up') ? currentScroll - (itemHeight * itemsPerPage) : currentScroll + (itemHeight * itemsPerPage), $selectableItem = $item.not(selector.unselectable), isWithinRange, $nextSelectedItem, elementIndex ; elementIndex = (direction == 'up') ? $selectableItem.index($currentItem) - itemsPerPage : $selectableItem.index($currentItem) + itemsPerPage ; isWithinRange = (direction == 'up') ? (elementIndex >= 0) : (elementIndex < $selectableItem.length) ; $nextSelectedItem = (isWithinRange) ? $selectableItem.eq(elementIndex) : (direction == 'up') ? $selectableItem.first() : $selectableItem.last() ; if($nextSelectedItem.length > 0) { module.debug('Scrolling page', direction, $nextSelectedItem); $currentItem .removeClass(className.selected) ; $nextSelectedItem .addClass(className.selected) ; $menu .scrollTop(newScroll) ; } }, set: { filtered: function() { var isMultiple = module.is.multiple(), isSearch = module.is.searchSelection(), isSearchMultiple = (isMultiple && isSearch), searchValue = (isSearch) ? module.get.query() : '', hasSearchValue = (typeof searchValue === 'string' && searchValue.length > 0), searchWidth = module.get.searchWidth(searchValue.length), valueIsSet = searchValue !== '' ; if(isMultiple && hasSearchValue) { module.verbose('Adjusting input width', searchWidth, settings.glyphWidth); $search.css('width', searchWidth); } if(hasSearchValue || (isSearchMultiple && valueIsSet)) { module.verbose('Hiding placeholder text'); $text.addClass(className.filtered); } else if(!isMultiple || (isSearchMultiple && !valueIsSet)) { module.verbose('Showing placeholder text'); $text.removeClass(className.filtered); } }, loading: function() { $module.addClass(className.loading); }, placeholderText: function(text) { text = text || module.get.placeholderText(); module.debug('Setting placeholder text', text); module.set.text(text); $text.addClass(className.placeholder); }, tabbable: function() { if( module.has.search() ) { module.debug('Added tabindex to searchable dropdown'); $search .val('') .attr('tabindex', 0) ; $menu .attr('tabindex', -1) ; } else { module.debug('Added tabindex to dropdown'); if( $module.attr('tabindex') === undefined) { $module .attr('tabindex', 0) ; $menu .attr('tabindex', -1) ; } } }, initialLoad: function() { module.verbose('Setting initial load'); initialLoad = true; }, activeItem: function($item) { if( settings.allowAdditions && $item.filter(selector.addition).length > 0 ) { $item.addClass(className.filtered); } else { $item.addClass(className.active); } }, scrollPosition: function($item, forceScroll) { var edgeTolerance = 5, $menu, hasActive, offset, itemHeight, itemOffset, menuOffset, menuScroll, menuHeight, abovePage, belowPage ; $item = $item || module.get.selectedItem(); $menu = $item.closest(selector.menu); hasActive = ($item && $item.length > 0); forceScroll = (forceScroll !== undefined) ? forceScroll : false ; if($item && $menu.length > 0 && hasActive) { itemOffset = $item.position().top; $menu.addClass(className.loading); menuScroll = $menu.scrollTop(); menuOffset = $menu.offset().top; itemOffset = $item.offset().top; offset = menuScroll - menuOffset + itemOffset; if(!forceScroll) { menuHeight = $menu.height(); belowPage = menuScroll + menuHeight < (offset + edgeTolerance); abovePage = ((offset - edgeTolerance) < menuScroll); } module.debug('Scrolling to active item', offset); if(forceScroll || abovePage || belowPage) { $menu.scrollTop(offset); } $menu.removeClass(className.loading); } }, text: function(text) { if(settings.action !== 'select') { if(settings.action == 'combo') { module.debug('Changing combo button text', text, $combo); if(settings.preserveHTML) { $combo.html(text); } else { $combo.text(text); } } else { if(text !== module.get.placeholderText()) { $text.removeClass(className.placeholder); } module.debug('Changing text', text, $text); $text .removeClass(className.filtered) ; if(settings.preserveHTML) { $text.html(text); } else { $text.text(text); } } } }, selectedLetter: function(letter) { var $selectedItem = $item.filter('.' + className.selected), alreadySelectedLetter = $selectedItem.length > 0 && module.has.firstLetter($selectedItem, letter), $nextValue = false, $nextItem ; // check next of same letter if(alreadySelectedLetter) { $nextItem = $selectedItem.nextAll($item).eq(0); if( module.has.firstLetter($nextItem, letter) ) { $nextValue = $nextItem; } } // check all values if(!$nextValue) { $item .each(function(){ if(module.has.firstLetter($(this), letter)) { $nextValue = $(this); return false; } }) ; } // set next value if($nextValue) { module.verbose('Scrolling to next value with letter', letter); module.set.scrollPosition($nextValue); $selectedItem.removeClass(className.selected); $nextValue.addClass(className.selected); } }, direction: function($menu) { if(settings.direction == 'auto') { if(module.is.onScreen($menu)) { module.remove.upward($menu); } else { module.set.upward($menu); } } else if(settings.direction == 'upward') { module.set.upward($menu); } }, upward: function($menu) { var $element = $menu || $module; $element.addClass(className.upward); }, value: function(value, text, $selected) { var hasInput = ($input.length > 0), isAddition = !module.has.value(value), currentValue = module.get.values(), stringValue = (value !== undefined) ? String(value) : value, newValue ; if(hasInput) { if(stringValue == currentValue) { module.verbose('Skipping value update already same value', value, currentValue); if(!module.is.initialLoad()) { return; } } if( module.is.single() && module.has.selectInput() && module.can.extendSelect() ) { module.debug('Adding user option', value); module.add.optionValue(value); } module.debug('Updating input value', value, currentValue); internalChange = true; $input .val(value) ; if(settings.fireOnInit === false && module.is.initialLoad()) { module.debug('Input native change event ignored on initial load'); } else { module.trigger.change(); } internalChange = false; } else { module.verbose('Storing value in metadata', value, $input); if(value !== currentValue) { $module.data(metadata.value, stringValue); } } if(settings.fireOnInit === false && module.is.initialLoad()) { module.verbose('No callback on initial load', settings.onChange); } else { settings.onChange.call(element, value, text, $selected); } }, active: function() { $module .addClass(className.active) ; }, multiple: function() { $module.addClass(className.multiple); }, visible: function() { $module.addClass(className.visible); }, exactly: function(value, $selectedItem) { module.debug('Setting selected to exact values'); module.clear(); module.set.selected(value, $selectedItem); }, selected: function(value, $selectedItem) { var isMultiple = module.is.multiple(), $userSelectedItem ; $selectedItem = (settings.allowAdditions) ? $selectedItem || module.get.itemWithAdditions(value) : $selectedItem || module.get.item(value) ; if(!$selectedItem) { return; } module.debug('Setting selected menu item to', $selectedItem); if(module.is.single()) { module.remove.activeItem(); module.remove.selectedItem(); } else if(settings.useLabels) { module.remove.selectedItem(); } // select each item $selectedItem .each(function() { var $selected = $(this), selectedText = module.get.choiceText($selected), selectedValue = module.get.choiceValue($selected, selectedText), isFiltered = $selected.hasClass(className.filtered), isActive = $selected.hasClass(className.active), isUserValue = $selected.hasClass(className.addition), shouldAnimate = (isMultiple && $selectedItem.length == 1) ; if(isMultiple) { if(!isActive || isUserValue) { if(settings.apiSettings && settings.saveRemoteData) { module.save.remoteData(selectedText, selectedValue); } if(settings.useLabels) { module.add.value(selectedValue, selectedText, $selected); module.add.label(selectedValue, selectedText, shouldAnimate); module.set.activeItem($selected); module.filterActive(); module.select.nextAvailable($selectedItem); } else { module.add.value(selectedValue, selectedText, $selected); module.set.text(module.add.variables(message.count)); module.set.activeItem($selected); } } else if(!isFiltered) { module.debug('Selected active value, removing label'); module.remove.selected(selectedValue); } } else { if(settings.apiSettings && settings.saveRemoteData) { module.save.remoteData(selectedText, selectedValue); } module.set.text(selectedText); module.set.value(selectedValue, selectedText, $selected); $selected .addClass(className.active) .addClass(className.selected) ; } }) ; } }, add: { label: function(value, text, shouldAnimate) { var $next = module.is.searchSelection() ? $search : $text, $label ; $label = $('<a />') .addClass(className.label) .attr('data-value', value) .html(templates.label(value, text)) ; $label = settings.onLabelCreate.call($label, value, text); if(module.has.label(value)) { module.debug('Label already exists, skipping', value); return; } if(settings.label.variation) { $label.addClass(settings.label.variation); } if(shouldAnimate === true) { module.debug('Animating in label', $label); $label .addClass(className.hidden) .insertBefore($next) .transition(settings.label.transition, settings.label.duration) ; } else { module.debug('Adding selection label', $label); $label .insertBefore($next) ; } }, message: function(message) { var $message = $menu.children(selector.message), html = settings.templates.message(module.add.variables(message)) ; if($message.length > 0) { $message .html(html) ; } else { $message = $('<div/>') .html(html) .addClass(className.message) .appendTo($menu) ; } }, optionValue: function(value) { var $option = $input.find('option[value="' + value + '"]'), hasOption = ($option.length > 0) ; if(hasOption) { return; } // temporarily disconnect observer if(selectObserver) { selectObserver.disconnect(); module.verbose('Temporarily disconnecting mutation observer', value); } if( module.is.single() ) { module.verbose('Removing previous user addition'); $input.find('option.' + className.addition).remove(); } $('<option/>') .prop('value', value) .addClass(className.addition) .html(value) .appendTo($input) ; module.verbose('Adding user addition as an <option>', value); if(selectObserver) { selectObserver.observe($input[0], { childList : true, subtree : true }); } }, userSuggestion: function(value) { var $addition = $menu.children(selector.addition), $existingItem = module.get.item(value), alreadyHasValue = $existingItem && $existingItem.not(selector.addition).length, hasUserSuggestion = $addition.length > 0, html ; if(settings.useLabels && module.has.maxSelections()) { return; } if(value === '' || alreadyHasValue) { $addition.remove(); return; } $item .removeClass(className.selected) ; if(hasUserSuggestion) { html = settings.templates.addition( module.add.variables(message.addResult, value) ); $addition .html(html) .attr('data-' + metadata.value, value) .attr('data-' + metadata.text, value) .removeClass(className.filtered) .addClass(className.selected) ; module.verbose('Replacing user suggestion with new value', $addition); } else { $addition = module.create.userChoice(value); $addition .prependTo($menu) .addClass(className.selected) ; module.verbose('Adding item choice to menu corresponding with user choice addition', $addition); } }, variables: function(message, term) { var hasCount = (message.search('{count}') !== -1), hasMaxCount = (message.search('{maxCount}') !== -1), hasTerm = (message.search('{term}') !== -1), values, count, query ; module.verbose('Adding templated variables to message', message); if(hasCount) { count = module.get.selectionCount(); message = message.replace('{count}', count); } if(hasMaxCount) { count = module.get.selectionCount(); message = message.replace('{maxCount}', settings.maxSelections); } if(hasTerm) { query = term || module.get.query(); message = message.replace('{term}', query); } return message; }, value: function(addedValue, addedText, $selectedItem) { var currentValue = module.get.values(), newValue ; if(addedValue === '') { module.debug('Cannot select blank values from multiselect'); return; } // extend current array if($.isArray(currentValue)) { newValue = currentValue.concat([addedValue]); newValue = module.get.uniqueArray(newValue); } else { newValue = [addedValue]; } // add values if( module.has.selectInput() ) { if(module.can.extendSelect()) { module.debug('Adding value to select', addedValue, newValue, $input); module.add.optionValue(addedValue); } } else { newValue = newValue.join(settings.delimiter); module.debug('Setting hidden input to delimited value', newValue, $input); } if(settings.fireOnInit === false && module.is.initialLoad()) { module.verbose('Skipping onadd callback on initial load', settings.onAdd); } else { settings.onAdd.call(element, addedValue, addedText, $selectedItem); } module.set.value(newValue, addedValue, addedText, $selectedItem); module.check.maxSelections(); } }, remove: { active: function() { $module.removeClass(className.active); }, activeLabel: function() { $module.find(selector.label).removeClass(className.active); }, loading: function() { $module.removeClass(className.loading); }, initialLoad: function() { initialLoad = false; }, upward: function($menu) { var $element = $menu || $module; $element.removeClass(className.upward); }, visible: function() { $module.removeClass(className.visible); }, activeItem: function() { $item.removeClass(className.active); }, filteredItem: function() { if(settings.useLabels && module.has.maxSelections() ) { return; } if(settings.useLabels && module.is.multiple()) { $item.not('.' + className.active).removeClass(className.filtered); } else { $item.removeClass(className.filtered); } }, optionValue: function(value) { var $option = $input.find('option[value="' + value + '"]'), hasOption = ($option.length > 0) ; if(!hasOption || !$option.hasClass(className.addition)) { return; } // temporarily disconnect observer if(selectObserver) { selectObserver.disconnect(); module.verbose('Temporarily disconnecting mutation observer', value); } $option.remove(); module.verbose('Removing user addition as an <option>', value); if(selectObserver) { selectObserver.observe($input[0], { childList : true, subtree : true }); } }, message: function() { $menu.children(selector.message).remove(); }, searchTerm: function() { module.verbose('Cleared search term'); $search.val(''); module.set.filtered(); }, selected: function(value, $selectedItem) { $selectedItem = (settings.allowAdditions) ? $selectedItem || module.get.itemWithAdditions(value) : $selectedItem || module.get.item(value) ; if(!$selectedItem) { return false; } $selectedItem .each(function() { var $selected = $(this), selectedText = module.get.choiceText($selected), selectedValue = module.get.choiceValue($selected, selectedText) ; if(module.is.multiple()) { if(settings.useLabels) { module.remove.value(selectedValue, selectedText, $selected); module.remove.label(selectedValue); } else { module.remove.value(selectedValue, selectedText, $selected); if(module.get.selectionCount() === 0) { module.set.placeholderText(); } else { module.set.text(module.add.variables(message.count)); } } } else { module.remove.value(selectedValue, selectedText, $selected); } $selected .removeClass(className.filtered) .removeClass(className.active) ; if(settings.useLabels) { $selected.removeClass(className.selected); } }) ; }, selectedItem: function() { $item.removeClass(className.selected); }, value: function(removedValue, removedText, $removedItem) { var values = module.get.values(), newValue ; if( module.has.selectInput() ) { module.verbose('Input is <select> removing selected option', removedValue); newValue = module.remove.arrayValue(removedValue, values); module.remove.optionValue(removedValue); } else { module.verbose('Removing from delimited values', removedValue); newValue = module.remove.arrayValue(removedValue, values); newValue = newValue.join(settings.delimiter); } if(settings.fireOnInit === false && module.is.initialLoad()) { module.verbose('No callback on initial load', settings.onRemove); } else { settings.onRemove.call(element, removedValue, removedText, $removedItem); } module.set.value(newValue, removedText, $removedItem); module.check.maxSelections(); }, arrayValue: function(removedValue, values) { if( !$.isArray(values) ) { values = [values]; } values = $.grep(values, function(value){ return (removedValue != value); }); module.verbose('Removed value from delimited string', removedValue, values); return values; }, label: function(value, shouldAnimate) { var $labels = $module.find(selector.label), $removedLabel = $labels.filter('[data-value="' + value +'"]') ; module.verbose('Removing label', $removedLabel); $removedLabel.remove(); }, activeLabels: function($activeLabels) { $activeLabels = $activeLabels || $module.find(selector.label).filter('.' + className.active); module.verbose('Removing active label selections', $activeLabels); module.remove.labels($activeLabels); }, labels: function($labels) { $labels = $labels || $module.find(selector.label); module.verbose('Removing labels', $labels); $labels .each(function(){ var $label = $(this), value = $label.data(metadata.value), stringValue = (value !== undefined) ? String(value) : value, isUserValue = module.is.userValue(stringValue) ; if(settings.onLabelRemove.call($label, value) === false) { module.debug('Label remove callback cancelled removal'); return; } if(isUserValue) { module.remove.value(stringValue); module.remove.label(stringValue); } else { // selected will also remove label module.remove.selected(stringValue); } }) ; }, tabbable: function() { if( module.has.search() ) { module.debug('Searchable dropdown initialized'); $search .removeAttr('tabindex') ; $menu .removeAttr('tabindex') ; } else { module.debug('Simple selection dropdown initialized'); $module .removeAttr('tabindex') ; $menu .removeAttr('tabindex') ; } } }, has: { search: function() { return ($search.length > 0); }, selectInput: function() { return ( $input.is('select') ); }, firstLetter: function($item, letter) { var text, firstLetter ; if(!$item || $item.length === 0 || typeof letter !== 'string') { return false; } text = module.get.choiceText($item, false); letter = letter.toLowerCase(); firstLetter = String(text).charAt(0).toLowerCase(); return (letter == firstLetter); }, input: function() { return ($input.length > 0); }, items: function() { return ($item.length > 0); }, menu: function() { return ($menu.length > 0); }, message: function() { return ($menu.children(selector.message).length !== 0); }, label: function(value) { var $labels = $module.find(selector.label) ; return ($labels.filter('[data-value="' + value +'"]').length > 0); }, maxSelections: function() { return (settings.maxSelections && module.get.selectionCount() >= settings.maxSelections); }, allResultsFiltered: function() { return ($item.filter(selector.unselectable).length === $item.length); }, query: function() { return (module.get.query() !== ''); }, value: function(value) { var values = module.get.values(), hasValue = $.isArray(values) ? values && ($.inArray(value, values) !== -1) : (values == value) ; return (hasValue) ? true : false ; } }, is: { active: function() { return $module.hasClass(className.active); }, alreadySetup: function() { return ($module.is('select') && $module.parent(selector.dropdown).length > 0 && $module.prev().length === 0); }, animating: function($subMenu) { return ($subMenu) ? $subMenu.transition && $subMenu.transition('is animating') : $menu.transition && $menu.transition('is animating') ; }, disabled: function() { return $module.hasClass(className.disabled); }, focused: function() { return (document.activeElement === $module[0]); }, focusedOnSearch: function() { return (document.activeElement === $search[0]); }, allFiltered: function() { return( (module.is.multiple() || module.has.search()) && !module.has.message() && module.has.allResultsFiltered() ); }, hidden: function($subMenu) { return !module.is.visible($subMenu); }, initialLoad: function() { return initialLoad; }, onScreen: function($subMenu) { var $currentMenu = $subMenu || $menu, canOpenDownward = true, onScreen = {}, calculations ; $currentMenu.addClass(className.loading); calculations = { context: { scrollTop : $context.scrollTop(), height : $context.outerHeight() }, menu : { offset: $currentMenu.offset(), height: $currentMenu.outerHeight() } }; onScreen = { above : (calculations.context.scrollTop) <= calculations.menu.offset.top - calculations.menu.height, below : (calculations.context.scrollTop + calculations.context.height) >= calculations.menu.offset.top + calculations.menu.height }; if(onScreen.below) { module.verbose('Dropdown can fit in context downward', onScreen); canOpenDownward = true; } else if(!onScreen.below && !onScreen.above) { module.verbose('Dropdown cannot fit in either direction, favoring downward', onScreen); canOpenDownward = true; } else { module.verbose('Dropdown cannot fit below, opening upward', onScreen); canOpenDownward = false; } $currentMenu.removeClass(className.loading); return canOpenDownward; }, inObject: function(needle, object) { var found = false ; $.each(object, function(index, property) { if(property == needle) { found = true; return true; } }); return found; }, multiple: function() { return $module.hasClass(className.multiple); }, single: function() { return !module.is.multiple(); }, selectMutation: function(mutations) { var selectChanged = false ; $.each(mutations, function(index, mutation) { if(mutation.target && $(mutation.target).is('select')) { selectChanged = true; return true; } }); return selectChanged; }, search: function() { return $module.hasClass(className.search); }, searchSelection: function() { return ( module.has.search() && $search.parent(selector.dropdown).length === 1 ); }, selection: function() { return $module.hasClass(className.selection); }, userValue: function(value) { return ($.inArray(value, module.get.userValues()) !== -1); }, upward: function($menu) { var $element = $menu || $module; return $element.hasClass(className.upward); }, visible: function($subMenu) { return ($subMenu) ? $subMenu.hasClass(className.visible) : $menu.hasClass(className.visible) ; } }, can: { activate: function($item) { if(settings.useLabels) { return true; } if(!module.has.maxSelections()) { return true; } if(module.has.maxSelections() && $item.hasClass(className.active)) { return true; } return false; }, click: function() { return (hasTouch || settings.on == 'click'); }, extendSelect: function() { return settings.allowAdditions || settings.apiSettings; }, show: function() { return !module.is.disabled() && (module.has.items() || module.has.message()); }, useAPI: function() { return $.fn.api !== undefined; } }, animate: { show: function(callback, $subMenu) { var $currentMenu = $subMenu || $menu, start = ($subMenu) ? function() {} : function() { module.hideSubMenus(); module.hideOthers(); module.set.active(); }, transition ; callback = $.isFunction(callback) ? callback : function(){} ; module.verbose('Doing menu show animation', $currentMenu); module.set.direction($subMenu); transition = module.get.transition($subMenu); if( module.is.selection() ) { module.set.scrollPosition(module.get.selectedItem(), true); } if( module.is.hidden($currentMenu) || module.is.animating($currentMenu) ) { if(transition == 'none') { start(); $currentMenu.transition('show'); callback.call(element); } else if($.fn.transition !== undefined && $module.transition('is supported')) { $currentMenu .transition({ animation : transition + ' in', debug : settings.debug, verbose : settings.verbose, duration : settings.duration, queue : true, onStart : start, onComplete : function() { callback.call(element); } }) ; } else { module.error(error.noTransition, transition); } } }, hide: function(callback, $subMenu) { var $currentMenu = $subMenu || $menu, duration = ($subMenu) ? (settings.duration * 0.9) : settings.duration, start = ($subMenu) ? function() {} : function() { if( module.can.click() ) { module.unbind.intent(); } module.remove.active(); }, transition = module.get.transition($subMenu) ; callback = $.isFunction(callback) ? callback : function(){} ; if( module.is.visible($currentMenu) || module.is.animating($currentMenu) ) { module.verbose('Doing menu hide animation', $currentMenu); if(transition == 'none') { start(); $currentMenu.transition('hide'); callback.call(element); } else if($.fn.transition !== undefined && $module.transition('is supported')) { $currentMenu .transition({ animation : transition + ' out', duration : settings.duration, debug : settings.debug, verbose : settings.verbose, queue : true, onStart : start, onComplete : function() { if(settings.direction == 'auto') { module.remove.upward($subMenu); } callback.call(element); } }) ; } else { module.error(error.transition); } } } }, hideAndClear: function() { module.remove.searchTerm(); if( module.has.maxSelections() ) { return; } if(module.has.search()) { module.hide(function() { module.remove.filteredItem(); }); } else { module.hide(); } }, delay: { show: function() { module.verbose('Delaying show event to ensure user intent'); clearTimeout(module.timer); module.timer = setTimeout(module.show, settings.delay.show); }, hide: function() { module.verbose('Delaying hide event to ensure user intent'); clearTimeout(module.timer); module.timer = setTimeout(module.hide, settings.delay.hide); } }, escape: { regExp: function(text) { text = String(text); return text.replace(regExp.escape, '\\$&'); } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : $allModules ; }; $.fn.dropdown.settings = { debug : false, verbose : false, performance : true, on : 'click', // what event should show menu action on item selection action : 'activate', // action on item selection (nothing, activate, select, combo, hide, function(){}) apiSettings : false, saveRemoteData : true, // Whether remote name/value pairs should be stored in sessionStorage to allow remote data to be restored on page refresh throttle : 200, // How long to wait after last user input to search remotely context : window, // Context to use when determining if on screen direction : 'auto', // Whether dropdown should always open in one direction keepOnScreen : true, // Whether dropdown should check whether it is on screen before showing match : 'both', // what to match against with search selection (both, text, or label) fullTextSearch : false, // search anywhere in value placeholder : 'auto', // whether to convert blank <select> values to placeholder text preserveHTML : true, // preserve html when selecting value sortSelect : false, // sort selection on init forceSelection : true, // force a choice on blur with search selection allowAdditions : false, // whether multiple select should allow user added values maxSelections : false, // When set to a number limits the number of selections to this count useLabels : true, // whether multiple select should filter currently active selections from choices delimiter : ',', // when multiselect uses normal <input> the values will be delimited with this character showOnFocus : true, // show menu on focus allowTab : true, // add tabindex to element allowCategorySelection : false, // allow elements with sub-menus to be selected fireOnInit : false, // Whether callbacks should fire when initializing dropdown values transition : 'auto', // auto transition will slide down or up based on direction duration : 200, // duration of transition glyphWidth : 1.0714, // widest glyph width in em (W is 1.0714 em) used to calculate multiselect input width // label settings on multi-select label: { transition : 'scale', duration : 200, variation : false }, // delay before event delay : { hide : 300, show : 200, search : 20, touch : 50 }, /* Callbacks */ onChange : function(value, text, $selected){}, onAdd : function(value, text, $selected){}, onRemove : function(value, text, $selected){}, onLabelSelect : function($selectedLabels){}, onLabelCreate : function(value, text) { return $(this); }, onLabelRemove : function(value) { return true; }, onNoResults : function(searchTerm) { return true; }, onShow : function(){}, onHide : function(){}, /* Component */ name : 'Dropdown', namespace : 'dropdown', message: { addResult : 'Add <b>{term}</b>', count : '{count} selected', maxSelections : 'Max {maxCount} selections', noResults : 'No results found.', serverError : 'There was an error contacting the server' }, error : { action : 'You called a dropdown action that was not defined', alreadySetup : 'Once a select has been initialized behaviors must be called on the created ui dropdown', labels : 'Allowing user additions currently requires the use of labels.', missingMultiple : '<select> requires multiple property to be set to correctly preserve multiple values', method : 'The method you called is not defined.', noAPI : 'The API module is required to load resources remotely', noStorage : 'Saving remote data requires session storage', noTransition : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>' }, regExp : { escape : /[-[\]{}()*+?.,\\^$|#\s]/g, }, metadata : { defaultText : 'defaultText', defaultValue : 'defaultValue', placeholderText : 'placeholder', text : 'text', value : 'value' }, // property names for remote query fields: { remoteValues : 'results', // grouping for api results values : 'values', // grouping for all dropdown values name : 'name', // displayed dropdown text value : 'value' // actual dropdown value }, keys : { backspace : 8, delimiter : 188, // comma deleteKey : 46, enter : 13, escape : 27, pageUp : 33, pageDown : 34, leftArrow : 37, upArrow : 38, rightArrow : 39, downArrow : 40 }, selector : { addition : '.addition', dropdown : '.ui.dropdown', icon : '> .dropdown.icon', input : '> input[type="hidden"], > select', item : '.item', label : '> .label', remove : '> .label > .delete.icon', siblingLabel : '.label', menu : '.menu', message : '.message', menuIcon : '.dropdown.icon', search : 'input.search, .menu > .search > input', text : '> .text:not(.icon)', unselectable : '.disabled, .filtered' }, className : { active : 'active', addition : 'addition', animating : 'animating', disabled : 'disabled', dropdown : 'ui dropdown', filtered : 'filtered', hidden : 'hidden transition', item : 'item', label : 'ui label', loading : 'loading', menu : 'menu', message : 'message', multiple : 'multiple', placeholder : 'default', search : 'search', selected : 'selected', selection : 'selection', upward : 'upward', visible : 'visible' } }; /* Templates */ $.fn.dropdown.settings.templates = { // generates dropdown from select values dropdown: function(select) { var placeholder = select.placeholder || false, values = select.values || {}, html = '' ; html += '<i class="dropdown icon"></i>'; if(select.placeholder) { html += '<div class="default text">' + placeholder + '</div>'; } else { html += '<div class="text"></div>'; } html += '<div class="menu">'; $.each(select.values, function(index, option) { html += (option.disabled) ? '<div class="disabled item" data-value="' + option.value + '">' + option.name + '</div>' : '<div class="item" data-value="' + option.value + '">' + option.name + '</div>' ; }); html += '</div>'; return html; }, // generates just menu from select menu: function(response, fields) { var values = response[fields.values] || {}, html = '' ; $.each(values, function(index, option) { html += '<div class="item" data-value="' + option[fields.value] + '">' + option[fields.name] + '</div>'; }); return html; }, // generates label for multiselect label: function(value, text) { return text + '<i class="delete icon"></i>'; }, // generates messages like "No results" message: function(message) { return message; }, // generates user addition to selection menu addition: function(choice) { return choice; } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Video * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.embed = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.embed.settings, parameters) : $.extend({}, $.fn.embed.settings), selector = settings.selector, className = settings.className, sources = settings.sources, error = settings.error, metadata = settings.metadata, namespace = settings.namespace, templates = settings.templates, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $window = $(window), $module = $(this), $placeholder = $module.find(selector.placeholder), $icon = $module.find(selector.icon), $embed = $module.find(selector.embed), element = this, instance = $module.data(moduleNamespace), module ; module = { initialize: function() { module.debug('Initializing embed'); module.determine.autoplay(); module.create(); module.bind.events(); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous instance of embed'); module.reset(); $module .removeData(moduleNamespace) .off(eventNamespace) ; }, refresh: function() { module.verbose('Refreshing selector cache'); $placeholder = $module.find(selector.placeholder); $icon = $module.find(selector.icon); $embed = $module.find(selector.embed); }, bind: { events: function() { if( module.has.placeholder() ) { module.debug('Adding placeholder events'); $module .on('click' + eventNamespace, selector.placeholder, module.createAndShow) .on('click' + eventNamespace, selector.icon, module.createAndShow) ; } } }, create: function() { var placeholder = module.get.placeholder() ; if(placeholder) { module.createPlaceholder(); } else { module.createAndShow(); } }, createPlaceholder: function(placeholder) { var icon = module.get.icon(), url = module.get.url(), embed = module.generate.embed(url) ; placeholder = placeholder || module.get.placeholder(); $module.html( templates.placeholder(placeholder, icon) ); module.debug('Creating placeholder for embed', placeholder, icon); }, createEmbed: function(url) { module.refresh(); url = url || module.get.url(); $embed = $('<div/>') .addClass(className.embed) .html( module.generate.embed(url) ) .appendTo($module) ; settings.onCreate.call(element, url); module.debug('Creating embed object', $embed); }, createAndShow: function() { module.createEmbed(); module.show(); }, // sets new embed change: function(source, id, url) { module.debug('Changing video to ', source, id, url); $module .data(metadata.source, source) .data(metadata.id, id) .data(metadata.url, url) ; module.create(); }, // clears embed reset: function() { module.debug('Clearing embed and showing placeholder'); module.remove.active(); module.remove.embed(); module.showPlaceholder(); settings.onReset.call(element); }, // shows current embed show: function() { module.debug('Showing embed'); module.set.active(); settings.onDisplay.call(element); }, hide: function() { module.debug('Hiding embed'); module.showPlaceholder(); }, showPlaceholder: function() { module.debug('Showing placeholder image'); module.remove.active(); settings.onPlaceholderDisplay.call(element); }, get: { id: function() { return settings.id || $module.data(metadata.id); }, placeholder: function() { return settings.placeholder || $module.data(metadata.placeholder); }, icon: function() { return (settings.icon) ? settings.icon : ($module.data(metadata.icon) !== undefined) ? $module.data(metadata.icon) : module.determine.icon() ; }, source: function(url) { return (settings.source) ? settings.source : ($module.data(metadata.source) !== undefined) ? $module.data(metadata.source) : module.determine.source() ; }, type: function() { var source = module.get.source(); return (sources[source] !== undefined) ? sources[source].type : false ; }, url: function() { return (settings.url) ? settings.url : ($module.data(metadata.url) !== undefined) ? $module.data(metadata.url) : module.determine.url() ; } }, determine: { autoplay: function() { if(module.should.autoplay()) { settings.autoplay = true; } }, source: function(url) { var matchedSource = false ; url = url || module.get.url(); if(url) { $.each(sources, function(name, source) { if(url.search(source.domain) !== -1) { matchedSource = name; return false; } }); } return matchedSource; }, icon: function() { var source = module.get.source() ; return (sources[source] !== undefined) ? sources[source].icon : false ; }, url: function() { var id = settings.id || $module.data(metadata.id), source = settings.source || $module.data(metadata.source), url ; url = (sources[source] !== undefined) ? sources[source].url.replace('{id}', id) : false ; if(url) { $module.data(metadata.url, url); } return url; } }, set: { active: function() { $module.addClass(className.active); } }, remove: { active: function() { $module.removeClass(className.active); }, embed: function() { $embed.empty(); } }, encode: { parameters: function(parameters) { var urlString = [], index ; for (index in parameters) { urlString.push( encodeURIComponent(index) + '=' + encodeURIComponent( parameters[index] ) ); } return urlString.join('&'); } }, generate: { embed: function(url) { module.debug('Generating embed html'); var source = module.get.source(), html, parameters ; url = module.get.url(url); if(url) { parameters = module.generate.parameters(source); html = templates.iframe(url, parameters); } else { module.error(error.noURL, $module); } return html; }, parameters: function(source, extraParameters) { var parameters = (sources[source] && sources[source].parameters !== undefined) ? sources[source].parameters(settings) : {} ; extraParameters = extraParameters || settings.parameters; if(extraParameters) { parameters = $.extend({}, parameters, extraParameters); } parameters = settings.onEmbed(parameters); return module.encode.parameters(parameters); } }, has: { placeholder: function() { return settings.placeholder || $module.data(metadata.placeholder); } }, should: { autoplay: function() { return (settings.autoplay === 'auto') ? (settings.placeholder || $module.data(metadata.placeholder) !== undefined) : settings.autoplay ; } }, is: { video: function() { return module.get.type() == 'video'; } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.embed.settings = { name : 'Embed', namespace : 'embed', debug : false, verbose : false, performance : true, icon : false, source : false, url : false, id : false, // standard video settings autoplay : 'auto', color : '#444444', hd : true, brandedUI : false, // additional parameters to include with the embed parameters: false, onDisplay : function() {}, onPlaceholderDisplay : function() {}, onReset : function() {}, onCreate : function(url) {}, onEmbed : function(parameters) { return parameters; }, metadata : { id : 'id', icon : 'icon', placeholder : 'placeholder', source : 'source', url : 'url' }, error : { noURL : 'No URL specified', method : 'The method you called is not defined' }, className : { active : 'active', embed : 'embed' }, selector : { embed : '.embed', placeholder : '.placeholder', icon : '.icon' }, sources: { youtube: { name : 'youtube', type : 'video', icon : 'video play', domain : 'youtube.com', url : '//www.youtube.com/embed/{id}', parameters: function(settings) { return { autohide : !settings.brandedUI, autoplay : settings.autoplay, color : settings.colors || undefined, hq : settings.hd, jsapi : settings.api, modestbranding : !settings.brandedUI }; } }, vimeo: { name : 'vimeo', type : 'video', icon : 'video play', domain : 'vimeo.com', url : '//player.vimeo.com/video/{id}', parameters: function(settings) { return { api : settings.api, autoplay : settings.autoplay, byline : settings.brandedUI, color : settings.colors || undefined, portrait : settings.brandedUI, title : settings.brandedUI }; } } }, templates: { iframe : function(url, parameters) { return '' + '<iframe src="' + url + '?' + parameters + '"' + ' width="100%" height="100%"' + ' frameborder="0" scrolling="no" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>' ; }, placeholder : function(image, icon) { var html = '' ; if(icon) { html += '<i class="' + icon + ' icon"></i>'; } if(image) { html += '<img class="placeholder" src="' + image + '">'; } return html; } }, // NOT YET IMPLEMENTED api : true, onPause : function() {}, onPlay : function() {}, onStop : function() {} }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Modal * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.modal = function(parameters) { var $allModules = $(this), $window = $(window), $document = $(document), $body = $('body'), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.modal.settings, parameters) : $.extend({}, $.fn.modal.settings), selector = settings.selector, className = settings.className, namespace = settings.namespace, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $context = $(settings.context), $close = $module.find(selector.close), $allModals, $otherModals, $focusedElement, $dimmable, $dimmer, element = this, instance = $module.data(moduleNamespace), elementNamespace, id, observer, module ; module = { initialize: function() { module.verbose('Initializing dimmer', $context); module.create.id(); module.create.dimmer(); module.refreshModals(); module.bind.events(); if(settings.observeChanges) { module.observeChanges(); } module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of modal'); instance = module; $module .data(moduleNamespace, instance) ; }, create: { dimmer: function() { var defaultSettings = { debug : settings.debug, dimmerName : 'modals', duration : { show : settings.duration, hide : settings.duration } }, dimmerSettings = $.extend(true, defaultSettings, settings.dimmerSettings) ; if(settings.inverted) { dimmerSettings.variation = (dimmerSettings.variation !== undefined) ? dimmerSettings.variation + ' inverted' : 'inverted' ; } if($.fn.dimmer === undefined) { module.error(error.dimmer); return; } module.debug('Creating dimmer with settings', dimmerSettings); $dimmable = $context.dimmer(dimmerSettings); if(settings.detachable) { module.verbose('Modal is detachable, moving content into dimmer'); $dimmable.dimmer('add content', $module); } else { module.set.undetached(); } if(settings.blurring) { $dimmable.addClass(className.blurring); } $dimmer = $dimmable.dimmer('get dimmer'); }, id: function() { id = (Math.random().toString(16) + '000000000').substr(2,8); elementNamespace = '.' + id; module.verbose('Creating unique id for element', id); } }, destroy: function() { module.verbose('Destroying previous modal'); $module .removeData(moduleNamespace) .off(eventNamespace) ; $window.off(elementNamespace); $close.off(eventNamespace); $context.dimmer('destroy'); }, observeChanges: function() { if('MutationObserver' in window) { observer = new MutationObserver(function(mutations) { module.debug('DOM tree modified, refreshing'); module.refresh(); }); observer.observe(element, { childList : true, subtree : true }); module.debug('Setting up mutation observer', observer); } }, refresh: function() { module.remove.scrolling(); module.cacheSizes(); module.set.screenHeight(); module.set.type(); module.set.position(); }, refreshModals: function() { $otherModals = $module.siblings(selector.modal); $allModals = $otherModals.add($module); }, attachEvents: function(selector, event) { var $toggle = $(selector) ; event = $.isFunction(module[event]) ? module[event] : module.toggle ; if($toggle.length > 0) { module.debug('Attaching modal events to element', selector, event); $toggle .off(eventNamespace) .on('click' + eventNamespace, event) ; } else { module.error(error.notFound, selector); } }, bind: { events: function() { module.verbose('Attaching events'); $module .on('click' + eventNamespace, selector.close, module.event.close) .on('click' + eventNamespace, selector.approve, module.event.approve) .on('click' + eventNamespace, selector.deny, module.event.deny) ; $window .on('resize' + elementNamespace, module.event.resize) ; } }, get: { id: function() { return (Math.random().toString(16) + '000000000').substr(2,8); } }, event: { approve: function() { if(settings.onApprove.call(element, $(this)) === false) { module.verbose('Approve callback returned false cancelling hide'); return; } module.hide(); }, deny: function() { if(settings.onDeny.call(element, $(this)) === false) { module.verbose('Deny callback returned false cancelling hide'); return; } module.hide(); }, close: function() { module.hide(); }, click: function(event) { var $target = $(event.target), isInModal = ($target.closest(selector.modal).length > 0), isInDOM = $.contains(document.documentElement, event.target) ; if(!isInModal && isInDOM) { module.debug('Dimmer clicked, hiding all modals'); if( module.is.active() ) { module.remove.clickaway(); if(settings.allowMultiple) { module.hide(); } else { module.hideAll(); } } } }, debounce: function(method, delay) { clearTimeout(module.timer); module.timer = setTimeout(method, delay); }, keyboard: function(event) { var keyCode = event.which, escapeKey = 27 ; if(keyCode == escapeKey) { if(settings.closable) { module.debug('Escape key pressed hiding modal'); module.hide(); } else { module.debug('Escape key pressed, but closable is set to false'); } event.preventDefault(); } }, resize: function() { if( $dimmable.dimmer('is active') ) { requestAnimationFrame(module.refresh); } } }, toggle: function() { if( module.is.active() || module.is.animating() ) { module.hide(); } else { module.show(); } }, show: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; module.refreshModals(); module.showModal(callback); }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; module.refreshModals(); module.hideModal(callback); }, showModal: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if( module.is.animating() || !module.is.active() ) { module.showDimmer(); module.cacheSizes(); module.set.position(); module.set.screenHeight(); module.set.type(); module.set.clickaway(); if( !settings.allowMultiple && module.others.active() ) { module.hideOthers(module.showModal); } else { settings.onShow.call(element); if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { module.debug('Showing modal with css animations'); $module .transition({ debug : settings.debug, animation : settings.transition + ' in', queue : settings.queue, duration : settings.duration, useFailSafe : true, onComplete : function() { settings.onVisible.apply(element); module.add.keyboardShortcuts(); module.save.focus(); module.set.active(); if(settings.autofocus) { module.set.autofocus(); } callback(); } }) ; } else { module.error(error.noTransition); } } } else { module.debug('Modal is already visible'); } }, hideModal: function(callback, keepDimmed) { callback = $.isFunction(callback) ? callback : function(){} ; module.debug('Hiding modal'); if(settings.onHide.call(element, $(this)) === false) { module.verbose('Hide callback returned false cancelling hide'); return; } if( module.is.animating() || module.is.active() ) { if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { module.remove.active(); $module .transition({ debug : settings.debug, animation : settings.transition + ' out', queue : settings.queue, duration : settings.duration, useFailSafe : true, onStart : function() { if(!module.others.active() && !keepDimmed) { module.hideDimmer(); } module.remove.keyboardShortcuts(); }, onComplete : function() { settings.onHidden.call(element); module.restore.focus(); callback(); } }) ; } else { module.error(error.noTransition); } } }, showDimmer: function() { if($dimmable.dimmer('is animating') || !$dimmable.dimmer('is active') ) { module.debug('Showing dimmer'); $dimmable.dimmer('show'); } else { module.debug('Dimmer already visible'); } }, hideDimmer: function() { if( $dimmable.dimmer('is animating') || ($dimmable.dimmer('is active')) ) { $dimmable.dimmer('hide', function() { module.remove.clickaway(); module.remove.screenHeight(); }); } else { module.debug('Dimmer is not visible cannot hide'); return; } }, hideAll: function(callback) { var $visibleModals = $allModals.filter('.' + className.active + ', .' + className.animating) ; callback = $.isFunction(callback) ? callback : function(){} ; if( $visibleModals.length > 0 ) { module.debug('Hiding all visible modals'); module.hideDimmer(); $visibleModals .modal('hide modal', callback) ; } }, hideOthers: function(callback) { var $visibleModals = $otherModals.filter('.' + className.active + ', .' + className.animating) ; callback = $.isFunction(callback) ? callback : function(){} ; if( $visibleModals.length > 0 ) { module.debug('Hiding other modals', $otherModals); $visibleModals .modal('hide modal', callback, true) ; } }, others: { active: function() { return ($otherModals.filter('.' + className.active).length > 0); }, animating: function() { return ($otherModals.filter('.' + className.animating).length > 0); } }, add: { keyboardShortcuts: function() { module.verbose('Adding keyboard shortcuts'); $document .on('keyup' + eventNamespace, module.event.keyboard) ; } }, save: { focus: function() { $focusedElement = $(document.activeElement).blur(); } }, restore: { focus: function() { if($focusedElement && $focusedElement.length > 0) { $focusedElement.focus(); } } }, remove: { active: function() { $module.removeClass(className.active); }, clickaway: function() { if(settings.closable) { $dimmer .off('click' + elementNamespace) ; } }, bodyStyle: function() { if($body.attr('style') === '') { module.verbose('Removing style attribute'); $body.removeAttr('style'); } }, screenHeight: function() { module.debug('Removing page height'); $body .css('height', '') ; }, keyboardShortcuts: function() { module.verbose('Removing keyboard shortcuts'); $document .off('keyup' + eventNamespace) ; }, scrolling: function() { $dimmable.removeClass(className.scrolling); $module.removeClass(className.scrolling); } }, cacheSizes: function() { var modalHeight = $module.outerHeight() ; if(module.cache === undefined || modalHeight !== 0) { module.cache = { pageHeight : $(document).outerHeight(), height : modalHeight + settings.offset, contextHeight : (settings.context == 'body') ? $(window).height() : $dimmable.height() }; } module.debug('Caching modal and container sizes', module.cache); }, can: { fit: function() { return ( ( module.cache.height + (settings.padding * 2) ) < module.cache.contextHeight); } }, is: { active: function() { return $module.hasClass(className.active); }, animating: function() { return $module.transition('is supported') ? $module.transition('is animating') : $module.is(':visible') ; }, scrolling: function() { return $dimmable.hasClass(className.scrolling); }, modernBrowser: function() { // appName for IE11 reports 'Netscape' can no longer use return !(window.ActiveXObject || "ActiveXObject" in window); } }, set: { autofocus: function() { var $inputs = $module.find(':input').filter(':visible'), $autofocus = $inputs.filter('[autofocus]'), $input = ($autofocus.length > 0) ? $autofocus.first() : $inputs.first() ; if($input.length > 0) { $input.focus(); } }, clickaway: function() { if(settings.closable) { $dimmer .on('click' + elementNamespace, module.event.click) ; } }, screenHeight: function() { if( module.can.fit() ) { $body.css('height', ''); } else { module.debug('Modal is taller than page content, resizing page height'); $body .css('height', module.cache.height + (settings.padding * 2) ) ; } }, active: function() { $module.addClass(className.active); }, scrolling: function() { $dimmable.addClass(className.scrolling); $module.addClass(className.scrolling); }, type: function() { if(module.can.fit()) { module.verbose('Modal fits on screen'); if(!module.others.active() && !module.others.animating()) { module.remove.scrolling(); } } else { module.verbose('Modal cannot fit on screen setting to scrolling'); module.set.scrolling(); } }, position: function() { module.verbose('Centering modal on page', module.cache); if(module.can.fit()) { $module .css({ top: '', marginTop: -(module.cache.height / 2) }) ; } else { $module .css({ marginTop : '', top : $document.scrollTop() }) ; } }, undetached: function() { $dimmable.addClass(className.undetached); } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.modal.settings = { name : 'Modal', namespace : 'modal', debug : false, verbose : false, performance : true, observeChanges : false, allowMultiple : false, detachable : true, closable : true, autofocus : true, inverted : false, blurring : false, dimmerSettings : { closable : false, useCSS : true }, context : 'body', queue : false, duration : 500, offset : 0, transition : 'scale', // padding with edge of page padding : 50, // called before show animation onShow : function(){}, // called after show animation onVisible : function(){}, // called before hide animation onHide : function(){ return true; }, // called after hide animation onHidden : function(){}, // called after approve selector match onApprove : function(){ return true; }, // called after deny selector match onDeny : function(){ return true; }, selector : { close : '> .close', approve : '.actions .positive, .actions .approve, .actions .ok', deny : '.actions .negative, .actions .deny, .actions .cancel', modal : '.ui.modal' }, error : { dimmer : 'UI Dimmer, a required component is not included in this page', method : 'The method you called is not defined.', notFound : 'The element you specified could not be found' }, className : { active : 'active', animating : 'animating', blurring : 'blurring', scrolling : 'scrolling', undetached : 'undetached' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Nag * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.nag = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.nag.settings, parameters) : $.extend({}, $.fn.nag.settings), className = settings.className, selector = settings.selector, error = settings.error, namespace = settings.namespace, eventNamespace = '.' + namespace, moduleNamespace = namespace + '-module', $module = $(this), $close = $module.find(selector.close), $context = (settings.context) ? $(settings.context) : $('body'), element = this, instance = $module.data(moduleNamespace), moduleOffset, moduleHeight, contextWidth, contextHeight, contextOffset, yOffset, yPosition, timer, module, requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); } ; module = { initialize: function() { module.verbose('Initializing element'); $module .on('click' + eventNamespace, selector.close, module.dismiss) .data(moduleNamespace, module) ; if(settings.detachable && $module.parent()[0] !== $context[0]) { $module .detach() .prependTo($context) ; } if(settings.displayTime > 0) { setTimeout(module.hide, settings.displayTime); } module.show(); }, destroy: function() { module.verbose('Destroying instance'); $module .removeData(moduleNamespace) .off(eventNamespace) ; }, show: function() { if( module.should.show() && !$module.is(':visible') ) { module.debug('Showing nag', settings.animation.show); if(settings.animation.show == 'fade') { $module .fadeIn(settings.duration, settings.easing) ; } else { $module .slideDown(settings.duration, settings.easing) ; } } }, hide: function() { module.debug('Showing nag', settings.animation.hide); if(settings.animation.show == 'fade') { $module .fadeIn(settings.duration, settings.easing) ; } else { $module .slideUp(settings.duration, settings.easing) ; } }, onHide: function() { module.debug('Removing nag', settings.animation.hide); $module.remove(); if (settings.onHide) { settings.onHide(); } }, dismiss: function(event) { if(settings.storageMethod) { module.storage.set(settings.key, settings.value); } module.hide(); event.stopImmediatePropagation(); event.preventDefault(); }, should: { show: function() { if(settings.persist) { module.debug('Persistent nag is set, can show nag'); return true; } if( module.storage.get(settings.key) != settings.value.toString() ) { module.debug('Stored value is not set, can show nag', module.storage.get(settings.key)); return true; } module.debug('Stored value is set, cannot show nag', module.storage.get(settings.key)); return false; } }, get: { storageOptions: function() { var options = {} ; if(settings.expires) { options.expires = settings.expires; } if(settings.domain) { options.domain = settings.domain; } if(settings.path) { options.path = settings.path; } return options; } }, clear: function() { module.storage.remove(settings.key); }, storage: { set: function(key, value) { var options = module.get.storageOptions() ; if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { window.localStorage.setItem(key, value); module.debug('Value stored using local storage', key, value); } else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { window.sessionStorage.setItem(key, value); module.debug('Value stored using session storage', key, value); } else if($.cookie !== undefined) { $.cookie(key, value, options); module.debug('Value stored using cookie', key, value, options); } else { module.error(error.noCookieStorage); return; } }, get: function(key, value) { var storedValue ; if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { storedValue = window.localStorage.getItem(key); } else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { storedValue = window.sessionStorage.getItem(key); } // get by cookie else if($.cookie !== undefined) { storedValue = $.cookie(key); } else { module.error(error.noCookieStorage); } if(storedValue == 'undefined' || storedValue == 'null' || storedValue === undefined || storedValue === null) { storedValue = undefined; } return storedValue; }, remove: function(key) { var options = module.get.storageOptions() ; if(settings.storageMethod == 'localstorage' && window.localStorage !== undefined) { window.localStorage.removeItem(key); } else if(settings.storageMethod == 'sessionstorage' && window.sessionStorage !== undefined) { window.sessionStorage.removeItem(key); } // store by cookie else if($.cookie !== undefined) { $.removeCookie(key, options); } else { module.error(error.noStorage); } } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.nag.settings = { name : 'Nag', debug : false, verbose : false, performance : true, namespace : 'Nag', // allows cookie to be overriden persist : false, // set to zero to require manually dismissal, otherwise hides on its own displayTime : 0, animation : { show : 'slide', hide : 'slide' }, context : false, detachable : false, expires : 30, domain : false, path : '/', // type of storage to use storageMethod : 'cookie', // value to store in dismissed localstorage/cookie key : 'nag', value : 'dismiss', error: { noCookieStorage : '$.cookie is not included. A storage solution is required.', noStorage : 'Neither $.cookie or store is defined. A storage solution is required for storing state', method : 'The method you called is not defined.' }, className : { bottom : 'bottom', fixed : 'fixed' }, selector : { close : '.close.icon' }, speed : 500, easing : 'easeOutQuad', onHide: function() {} }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Popup * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.popup = function(parameters) { var $allModules = $(this), $document = $(document), $window = $(window), $body = $('body'), moduleSelector = $allModules.selector || '', hasTouch = (true), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.popup.settings, parameters) : $.extend({}, $.fn.popup.settings), selector = settings.selector, className = settings.className, error = settings.error, metadata = settings.metadata, namespace = settings.namespace, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $context = $(settings.context), $target = (settings.target) ? $(settings.target) : $module, $popup, $offsetParent, searchDepth = 0, triedPositions = false, openedWithTouch = false, element = this, instance = $module.data(moduleNamespace), elementNamespace, id, module ; module = { // binds events initialize: function() { module.debug('Initializing', $module); module.createID(); module.bind.events(); if( !module.exists() && settings.preserve) { module.create(); } module.instantiate(); }, instantiate: function() { module.verbose('Storing instance', module); instance = module; $module .data(moduleNamespace, instance) ; }, refresh: function() { if(settings.popup) { $popup = $(settings.popup).eq(0); } else { if(settings.inline) { $popup = $target.nextAll(selector.popup).eq(0); settings.popup = $popup; } } if(settings.popup) { $popup.addClass(className.loading); $offsetParent = module.get.offsetParent(); $popup.removeClass(className.loading); if(settings.movePopup && module.has.popup() && module.get.offsetParent($popup)[0] !== $offsetParent[0]) { module.debug('Moving popup to the same offset parent as activating element'); $popup .detach() .appendTo($offsetParent) ; } } else { $offsetParent = (settings.inline) ? module.get.offsetParent($target) : module.has.popup() ? module.get.offsetParent($popup) : $body ; } if( $offsetParent.is('html') && $offsetParent[0] !== $body[0] ) { module.debug('Setting page as offset parent'); $offsetParent = $body; } if( module.get.variation() ) { module.set.variation(); } }, reposition: function() { module.refresh(); module.set.position(); }, destroy: function() { module.debug('Destroying previous module'); // remove element only if was created dynamically if($popup && !settings.preserve) { module.removePopup(); } // clear all timeouts clearTimeout(module.hideTimer); clearTimeout(module.showTimer); // remove events $window.off(elementNamespace); $module .off(eventNamespace) .removeData(moduleNamespace) ; }, event: { start: function(event) { var delay = ($.isPlainObject(settings.delay)) ? settings.delay.show : settings.delay ; clearTimeout(module.hideTimer); if(!openedWithTouch) { module.showTimer = setTimeout(module.show, delay); } }, end: function() { var delay = ($.isPlainObject(settings.delay)) ? settings.delay.hide : settings.delay ; clearTimeout(module.showTimer); module.hideTimer = setTimeout(module.hide, delay); }, touchstart: function(event) { openedWithTouch = true; module.show(); }, resize: function() { if( module.is.visible() ) { module.set.position(); } }, hideGracefully: function(event) { // don't close on clicks inside popup if(event && $(event.target).closest(selector.popup).length === 0) { module.debug('Click occurred outside popup hiding popup'); module.hide(); } else { module.debug('Click was inside popup, keeping popup open'); } } }, // generates popup html from metadata create: function() { var html = module.get.html(), title = module.get.title(), content = module.get.content() ; if(html || content || title) { module.debug('Creating pop-up html'); if(!html) { html = settings.templates.popup({ title : title, content : content }); } $popup = $('<div/>') .addClass(className.popup) .data(metadata.activator, $module) .html(html) ; if(settings.inline) { module.verbose('Inserting popup element inline', $popup); $popup .insertAfter($module) ; } else { module.verbose('Appending popup element to body', $popup); $popup .appendTo( $context ) ; } module.refresh(); module.set.variation(); if(settings.hoverable) { module.bind.popup(); } settings.onCreate.call($popup, element); } else if($target.next(selector.popup).length !== 0) { module.verbose('Pre-existing popup found'); settings.inline = true; settings.popups = $target.next(selector.popup).data(metadata.activator, $module); module.refresh(); if(settings.hoverable) { module.bind.popup(); } } else if(settings.popup) { $(settings.popup).data(metadata.activator, $module); module.verbose('Used popup specified in settings'); module.refresh(); if(settings.hoverable) { module.bind.popup(); } } else { module.debug('No content specified skipping display', element); } }, createID: function() { id = (Math.random().toString(16) + '000000000').substr(2,8); elementNamespace = '.' + id; module.verbose('Creating unique id for element', id); }, // determines popup state toggle: function() { module.debug('Toggling pop-up'); if( module.is.hidden() ) { module.debug('Popup is hidden, showing pop-up'); module.unbind.close(); module.show(); } else { module.debug('Popup is visible, hiding pop-up'); module.hide(); } }, show: function(callback) { callback = callback || function(){}; module.debug('Showing pop-up', settings.transition); if(module.is.hidden() && !( module.is.active() && module.is.dropdown()) ) { if( !module.exists() ) { module.create(); } if(settings.onShow.call($popup, element) === false) { module.debug('onShow callback returned false, cancelling popup animation'); return; } else if(!settings.preserve && !settings.popup) { module.refresh(); } if( $popup && module.set.position() ) { module.save.conditions(); if(settings.exclusive) { module.hideAll(); } module.animate.show(callback); } } }, hide: function(callback) { callback = callback || function(){}; if( module.is.visible() || module.is.animating() ) { if(settings.onHide.call($popup, element) === false) { module.debug('onHide callback returned false, cancelling popup animation'); return; } module.remove.visible(); module.unbind.close(); module.restore.conditions(); module.animate.hide(callback); } }, hideAll: function() { $(selector.popup) .filter('.' + className.visible) .each(function() { $(this) .data(metadata.activator) .popup('hide') ; }) ; }, exists: function() { if(!$popup) { return false; } if(settings.inline || settings.popup) { return ( module.has.popup() ); } else { return ( $popup.closest($context).length >= 1 ) ? true : false ; } }, removePopup: function() { if( module.has.popup() && !settings.popup) { module.debug('Removing popup', $popup); $popup.remove(); $popup = undefined; settings.onRemove.call($popup, element); } }, save: { conditions: function() { module.cache = { title: $module.attr('title') }; if (module.cache.title) { $module.removeAttr('title'); } module.verbose('Saving original attributes', module.cache.title); } }, restore: { conditions: function() { if(module.cache && module.cache.title) { $module.attr('title', module.cache.title); module.verbose('Restoring original attributes', module.cache.title); } return true; } }, animate: { show: function(callback) { callback = $.isFunction(callback) ? callback : function(){}; if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { module.set.visible(); $popup .transition({ animation : settings.transition + ' in', queue : false, debug : settings.debug, verbose : settings.verbose, duration : settings.duration, onComplete : function() { module.bind.close(); callback.call($popup, element); settings.onVisible.call($popup, element); } }) ; } else { module.error(error.noTransition); } }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){}; module.debug('Hiding pop-up'); if(settings.onHide.call($popup, element) === false) { module.debug('onHide callback returned false, cancelling popup animation'); return; } if(settings.transition && $.fn.transition !== undefined && $module.transition('is supported')) { $popup .transition({ animation : settings.transition + ' out', queue : false, duration : settings.duration, debug : settings.debug, verbose : settings.verbose, onComplete : function() { module.reset(); callback.call($popup, element); settings.onHidden.call($popup, element); } }) ; } else { module.error(error.noTransition); } } }, change: { content: function(html) { $popup.html(html); } }, get: { html: function() { $module.removeData(metadata.html); return $module.data(metadata.html) || settings.html; }, title: function() { $module.removeData(metadata.title); return $module.data(metadata.title) || settings.title; }, content: function() { $module.removeData(metadata.content); return $module.data(metadata.content) || $module.attr('title') || settings.content; }, variation: function() { $module.removeData(metadata.variation); return $module.data(metadata.variation) || settings.variation; }, popup: function() { return $popup; }, popupOffset: function() { return $popup.offset(); }, calculations: function() { var targetElement = $target[0], targetPosition = (settings.inline || (settings.popup && settings.movePopup)) ? $target.position() : $target.offset(), calculations = {}, screen ; calculations = { // element which is launching popup target : { element : $target[0], width : $target.outerWidth(), height : $target.outerHeight(), top : targetPosition.top, left : targetPosition.left, margin : {} }, // popup itself popup : { width : $popup.outerWidth(), height : $popup.outerHeight() }, // offset container (or 3d context) parent : { width : $offsetParent.outerWidth(), height : $offsetParent.outerHeight() }, // screen boundaries screen : { scroll: { top : $window.scrollTop(), left : $window.scrollLeft() }, width : $window.width(), height : $window.height() } }; // add in container calcs if fluid if( settings.setFluidWidth && module.is.fluid() ) { calculations.container = { width: $popup.parent().outerWidth() }; calculations.popup.width = calculations.container.width; } // add in margins if inline calculations.target.margin.top = (settings.inline) ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-top'), 10) : 0 ; calculations.target.margin.left = (settings.inline) ? module.is.rtl() ? parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-right'), 10) : parseInt( window.getComputedStyle(targetElement).getPropertyValue('margin-left') , 10) : 0 ; // calculate screen boundaries screen = calculations.screen; calculations.boundary = { top : screen.scroll.top, bottom : screen.scroll.top + screen.height, left : screen.scroll.left, right : screen.scroll.left + screen.width }; return calculations; }, id: function() { return id; }, startEvent: function() { if(settings.on == 'hover') { return 'mouseenter'; } else if(settings.on == 'focus') { return 'focus'; } return false; }, scrollEvent: function() { return 'scroll'; }, endEvent: function() { if(settings.on == 'hover') { return 'mouseleave'; } else if(settings.on == 'focus') { return 'blur'; } return false; }, distanceFromBoundary: function(offset, calculations) { var distanceFromBoundary = {}, popup, boundary ; offset = offset || module.get.offset(); calculations = calculations || module.get.calculations(); // shorthand popup = calculations.popup; boundary = calculations.boundary; if(offset) { distanceFromBoundary = { top : (offset.top - boundary.top), left : (offset.left - boundary.left), right : (boundary.right - (offset.left + popup.width) ), bottom : (boundary.bottom - (offset.top + popup.height) ) }; module.verbose('Distance from boundaries determined', offset, distanceFromBoundary); } return distanceFromBoundary; }, offsetParent: function($target) { var element = ($target !== undefined) ? $target[0] : $module[0], parentNode = element.parentNode, $node = $(parentNode) ; if(parentNode) { var is2D = ($node.css('transform') === 'none'), isStatic = ($node.css('position') === 'static'), isHTML = $node.is('html') ; while(parentNode && !isHTML && isStatic && is2D) { parentNode = parentNode.parentNode; $node = $(parentNode); is2D = ($node.css('transform') === 'none'); isStatic = ($node.css('position') === 'static'); isHTML = $node.is('html'); } } return ($node && $node.length > 0) ? $node : $() ; }, positions: function() { return { 'top left' : false, 'top center' : false, 'top right' : false, 'bottom left' : false, 'bottom center' : false, 'bottom right' : false, 'left center' : false, 'right center' : false }; }, nextPosition: function(position) { var positions = position.split(' '), verticalPosition = positions[0], horizontalPosition = positions[1], opposite = { top : 'bottom', bottom : 'top', left : 'right', right : 'left' }, adjacent = { left : 'center', center : 'right', right : 'left' }, backup = { 'top left' : 'top center', 'top center' : 'top right', 'top right' : 'right center', 'right center' : 'bottom right', 'bottom right' : 'bottom center', 'bottom center' : 'bottom left', 'bottom left' : 'left center', 'left center' : 'top left' }, adjacentsAvailable = (verticalPosition == 'top' || verticalPosition == 'bottom'), oppositeTried = false, adjacentTried = false, nextPosition = false ; if(!triedPositions) { module.verbose('All available positions available'); triedPositions = module.get.positions(); } module.debug('Recording last position tried', position); triedPositions[position] = true; if(settings.prefer === 'opposite') { nextPosition = [opposite[verticalPosition], horizontalPosition]; nextPosition = nextPosition.join(' '); oppositeTried = (triedPositions[nextPosition] === true); module.debug('Trying opposite strategy', nextPosition); } if((settings.prefer === 'adjacent') && adjacentsAvailable ) { nextPosition = [verticalPosition, adjacent[horizontalPosition]]; nextPosition = nextPosition.join(' '); adjacentTried = (triedPositions[nextPosition] === true); module.debug('Trying adjacent strategy', nextPosition); } if(adjacentTried || oppositeTried) { module.debug('Using backup position', nextPosition); nextPosition = backup[position]; } return nextPosition; } }, set: { position: function(position, calculations) { // exit conditions if($target.length === 0 || $popup.length === 0) { module.error(error.notFound); return; } var offset, distanceAway, target, popup, parent, positioning, popupOffset, distanceFromBoundary ; calculations = calculations || module.get.calculations(); position = position || $module.data(metadata.position) || settings.position; offset = $module.data(metadata.offset) || settings.offset; distanceAway = settings.distanceAway; // shorthand target = calculations.target; popup = calculations.popup; parent = calculations.parent; if(target.width === 0 && target.height === 0 && !(target.element instanceof SVGGraphicsElement)) { module.debug('Popup target is hidden, no action taken'); return false; } if(settings.inline) { module.debug('Adding margin to calculation', target.margin); if(position == 'left center' || position == 'right center') { offset += target.margin.top; distanceAway += -target.margin.left; } else if (position == 'top left' || position == 'top center' || position == 'top right') { offset += target.margin.left; distanceAway -= target.margin.top; } else { offset += target.margin.left; distanceAway += target.margin.top; } } module.debug('Determining popup position from calculations', position, calculations); if (module.is.rtl()) { position = position.replace(/left|right/g, function (match) { return (match == 'left') ? 'right' : 'left' ; }); module.debug('RTL: Popup position updated', position); } // if last attempt use specified last resort position if(searchDepth == settings.maxSearchDepth && typeof settings.lastResort === 'string') { position = settings.lastResort; } switch (position) { case 'top left': positioning = { top : 'auto', bottom : parent.height - target.top + distanceAway, left : target.left + offset, right : 'auto' }; break; case 'top center': positioning = { bottom : parent.height - target.top + distanceAway, left : target.left + (target.width / 2) - (popup.width / 2) + offset, top : 'auto', right : 'auto' }; break; case 'top right': positioning = { bottom : parent.height - target.top + distanceAway, right : parent.width - target.left - target.width - offset, top : 'auto', left : 'auto' }; break; case 'left center': positioning = { top : target.top + (target.height / 2) - (popup.height / 2) + offset, right : parent.width - target.left + distanceAway, left : 'auto', bottom : 'auto' }; break; case 'right center': positioning = { top : target.top + (target.height / 2) - (popup.height / 2) + offset, left : target.left + target.width + distanceAway, bottom : 'auto', right : 'auto' }; break; case 'bottom left': positioning = { top : target.top + target.height + distanceAway, left : target.left + offset, bottom : 'auto', right : 'auto' }; break; case 'bottom center': positioning = { top : target.top + target.height + distanceAway, left : target.left + (target.width / 2) - (popup.width / 2) + offset, bottom : 'auto', right : 'auto' }; break; case 'bottom right': positioning = { top : target.top + target.height + distanceAway, right : parent.width - target.left - target.width - offset, left : 'auto', bottom : 'auto' }; break; } if(positioning === undefined) { module.error(error.invalidPosition, position); } module.debug('Calculated popup positioning values', positioning); // tentatively place on stage $popup .css(positioning) .removeClass(className.position) .addClass(position) .addClass(className.loading) ; popupOffset = module.get.popupOffset(); // see if any boundaries are surpassed with this tentative position distanceFromBoundary = module.get.distanceFromBoundary(popupOffset, calculations); if( module.is.offstage(distanceFromBoundary, position) ) { module.debug('Position is outside viewport', position); if(searchDepth < settings.maxSearchDepth) { searchDepth++; position = module.get.nextPosition(position); module.debug('Trying new position', position); return ($popup) ? module.set.position(position, calculations) : false ; } else { if(settings.lastResort) { module.debug('No position found, showing with last position'); } else { module.debug('Popup could not find a position to display', $popup); module.error(error.cannotPlace, element); module.remove.attempts(); module.remove.loading(); module.reset(); settings.onUnplaceable.call($popup, element); return false; } } } module.debug('Position is on stage', position); module.remove.attempts(); module.remove.loading(); if( settings.setFluidWidth && module.is.fluid() ) { module.set.fluidWidth(calculations); } return true; }, fluidWidth: function(calculations) { calculations = calculations || module.get.calculations(); module.debug('Automatically setting element width to parent width', calculations.parent.width); $popup.css('width', calculations.container.width); }, variation: function(variation) { variation = variation || module.get.variation(); if(variation && module.has.popup() ) { module.verbose('Adding variation to popup', variation); $popup.addClass(variation); } }, visible: function() { $module.addClass(className.visible); } }, remove: { loading: function() { $popup.removeClass(className.loading); }, variation: function(variation) { variation = variation || module.get.variation(); if(variation) { module.verbose('Removing variation', variation); $popup.removeClass(variation); } }, visible: function() { $module.removeClass(className.visible); }, attempts: function() { module.verbose('Resetting all searched positions'); searchDepth = 0; triedPositions = false; } }, bind: { events: function() { module.debug('Binding popup events to module'); if(settings.on == 'click') { $module .on('click' + eventNamespace, module.toggle) ; } if(settings.on == 'hover' && hasTouch) { $module .on('touchstart' + eventNamespace, module.event.touchstart) ; } if( module.get.startEvent() ) { $module .on(module.get.startEvent() + eventNamespace, module.event.start) .on(module.get.endEvent() + eventNamespace, module.event.end) ; } if(settings.target) { module.debug('Target set to element', $target); } $window.on('resize' + elementNamespace, module.event.resize); }, popup: function() { module.verbose('Allowing hover events on popup to prevent closing'); if( $popup && module.has.popup() ) { $popup .on('mouseenter' + eventNamespace, module.event.start) .on('mouseleave' + eventNamespace, module.event.end) ; } }, close: function() { if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) { $document .one(module.get.scrollEvent() + elementNamespace, module.event.hideGracefully) ; $context .one(module.get.scrollEvent() + elementNamespace, module.event.hideGracefully) ; } if(settings.on == 'hover' && openedWithTouch) { module.verbose('Binding popup close event to document'); $document .on('touchstart' + elementNamespace, function(event) { module.verbose('Touched away from popup'); module.event.hideGracefully.call(element, event); }) ; } if(settings.on == 'click' && settings.closable) { module.verbose('Binding popup close event to document'); $document .on('click' + elementNamespace, function(event) { module.verbose('Clicked away from popup'); module.event.hideGracefully.call(element, event); }) ; } } }, unbind: { close: function() { if(settings.hideOnScroll === true || (settings.hideOnScroll == 'auto' && settings.on != 'click')) { $document .off('scroll' + elementNamespace, module.hide) ; $context .off('scroll' + elementNamespace, module.hide) ; } if(settings.on == 'hover' && openedWithTouch) { $document .off('touchstart' + elementNamespace) ; openedWithTouch = false; } if(settings.on == 'click' && settings.closable) { module.verbose('Removing close event from document'); $document .off('click' + elementNamespace) ; } } }, has: { popup: function() { return ($popup && $popup.length > 0); } }, is: { offstage: function(distanceFromBoundary, position) { var offstage = [] ; // return boundaries that have been surpassed $.each(distanceFromBoundary, function(direction, distance) { if(distance < -settings.jitter) { module.debug('Position exceeds allowable distance from edge', direction, distance, position); offstage.push(direction); } }); if(offstage.length > 0) { return true; } else { return false; } }, active: function() { return $module.hasClass(className.active); }, animating: function() { return ($popup !== undefined && $popup.hasClass(className.animating) ); }, fluid: function() { return ($popup !== undefined && $popup.hasClass(className.fluid)); }, visible: function() { return ($popup !== undefined && $popup.hasClass(className.visible)); }, dropdown: function() { return $module.hasClass(className.dropdown); }, hidden: function() { return !module.is.visible(); }, rtl: function () { return $module.css('direction') == 'rtl'; } }, reset: function() { module.remove.visible(); if(settings.preserve) { if($.fn.transition !== undefined) { $popup .transition('remove transition') ; } } else { module.removePopup(); } }, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.popup.settings = { name : 'Popup', // module settings debug : false, verbose : false, performance : true, namespace : 'popup', // callback only when element added to dom onCreate : function(){}, // callback before element removed from dom onRemove : function(){}, // callback before show animation onShow : function(){}, // callback after show animation onVisible : function(){}, // callback before hide animation onHide : function(){}, // callback when popup cannot be positioned in visible screen onUnplaceable: function(){}, // callback after hide animation onHidden : function(){}, // when to show popup on : 'hover', // whether to add touchstart events when using hover addTouchEvents : true, // default position relative to element position : 'top left', // name of variation to use variation : '', // whether popup should be moved to context movePopup : true, // element which popup should be relative to target : false, // jq selector or element that should be used as popup popup : false, // popup should remain inline next to activator inline : false, // popup should be removed from page on hide preserve : false, // popup should not close when being hovered on hoverable : false, // explicitly set content content : false, // explicitly set html html : false, // explicitly set title title : false, // whether automatically close on clickaway when on click closable : true, // automatically hide on scroll hideOnScroll : 'auto', // hide other popups on show exclusive : false, // context to attach popups context : 'body', // position to prefer when calculating new position prefer : 'opposite', // specify position to appear even if it doesn't fit lastResort : false, // delay used to prevent accidental refiring of animations due to user error delay : { show : 50, hide : 70 }, // whether fluid variation should assign width explicitly setFluidWidth : true, // transition settings duration : 200, transition : 'scale', // distance away from activating element in px distanceAway : 0, // number of pixels an element is allowed to be "offstage" for a position to be chosen (allows for rounding) jitter : 2, // offset on aligning axis from calculated position offset : 0, // maximum times to look for a position before failing (9 positions total) maxSearchDepth : 15, error: { invalidPosition : 'The position you specified is not a valid position', cannotPlace : 'Popup does not fit within the boundaries of the viewport', method : 'The method you called is not defined.', noTransition : 'This module requires ui transitions <https://github.com/Semantic-Org/UI-Transition>', notFound : 'The target or popup you specified does not exist on the page' }, metadata: { activator : 'activator', content : 'content', html : 'html', offset : 'offset', position : 'position', title : 'title', variation : 'variation' }, className : { active : 'active', animating : 'animating', dropdown : 'dropdown', fluid : 'fluid', loading : 'loading', popup : 'ui popup', position : 'top left center bottom right', visible : 'visible' }, selector : { popup : '.ui.popup' }, templates: { escape: function(string) { var badChars = /[&<>"'`]/g, shouldEscape = /[&<>"'`]/, escape = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }, escapedChar = function(chr) { return escape[chr]; } ; if(shouldEscape.test(string)) { return string.replace(badChars, escapedChar); } return string; }, popup: function(text) { var html = '', escape = $.fn.popup.settings.templates.escape ; if(typeof text !== undefined) { if(typeof text.title !== undefined && text.title) { text.title = escape(text.title); html += '<div class="header">' + text.title + '</div>'; } if(typeof text.content !== undefined && text.content) { text.content = escape(text.content); html += '<div class="content">' + text.content + '</div>'; } } return html; } } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Progress * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.progress = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.progress.settings, parameters) : $.extend({}, $.fn.progress.settings), className = settings.className, metadata = settings.metadata, namespace = settings.namespace, selector = settings.selector, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $bar = $(this).find(selector.bar), $progress = $(this).find(selector.progress), $label = $(this).find(selector.label), element = this, instance = $module.data(moduleNamespace), animating = false, transitionEnd, module ; module = { initialize: function() { module.debug('Initializing progress bar', settings); module.set.duration(); module.set.transitionEvent(); module.read.metadata(); module.read.settings(); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of progress', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous progress for', $module); clearInterval(instance.interval); module.remove.state(); $module.removeData(moduleNamespace); instance = undefined; }, reset: function() { module.set.percent(0); module.set.value(0); }, complete: function() { if(module.percent === undefined || module.percent < 100) { module.set.percent(100); } }, read: { metadata: function() { var data = { percent : $module.data(metadata.percent), total : $module.data(metadata.total), value : $module.data(metadata.value) } ; if(data.percent) { module.debug('Current percent value set from metadata', data.percent); module.set.percent(data.percent); } if(data.total) { module.debug('Total value set from metadata', data.total); module.set.total(data.total); } if(data.value) { module.debug('Current value set from metadata', data.value); module.set.value(data.value); module.set.progress(data.value); } }, settings: function() { if(settings.total !== false) { module.debug('Current total set in settings', settings.total); module.set.total(settings.total); } if(settings.value !== false) { module.debug('Current value set in settings', settings.value); module.set.value(settings.value); module.set.progress(module.value); } if(settings.percent !== false) { module.debug('Current percent set in settings', settings.percent); module.set.percent(settings.percent); } } }, increment: function(incrementValue) { var maxValue, startValue, newValue ; if( module.has.total() ) { startValue = module.get.value(); incrementValue = incrementValue || 1; newValue = startValue + incrementValue; maxValue = module.get.total(); module.debug('Incrementing value', startValue, newValue, maxValue); if(newValue > maxValue ) { module.debug('Value cannot increment above total', maxValue); newValue = maxValue; } } else { startValue = module.get.percent(); incrementValue = incrementValue || module.get.randomValue(); newValue = startValue + incrementValue; maxValue = 100; module.debug('Incrementing percentage by', startValue, newValue); if(newValue > maxValue ) { module.debug('Value cannot increment above 100 percent'); newValue = maxValue; } } module.set.progress(newValue); }, decrement: function(decrementValue) { var total = module.get.total(), startValue, newValue ; if(total) { startValue = module.get.value(); decrementValue = decrementValue || 1; newValue = startValue - decrementValue; module.debug('Decrementing value by', decrementValue, startValue); } else { startValue = module.get.percent(); decrementValue = decrementValue || module.get.randomValue(); newValue = startValue - decrementValue; module.debug('Decrementing percentage by', decrementValue, startValue); } if(newValue < 0) { module.debug('Value cannot decrement below 0'); newValue = 0; } module.set.progress(newValue); }, has: { total: function() { return (module.get.total() !== false); } }, get: { text: function(templateText) { var value = module.value || 0, total = module.total || 0, percent = (animating) ? module.get.displayPercent() : module.percent || 0, left = (module.total > 0) ? (total - value) : (100 - percent) ; templateText = templateText || ''; templateText = templateText .replace('{value}', value) .replace('{total}', total) .replace('{left}', left) .replace('{percent}', percent) ; module.debug('Adding variables to progress bar text', templateText); return templateText; }, randomValue: function() { module.debug('Generating random increment percentage'); return Math.floor((Math.random() * settings.random.max) + settings.random.min); }, numericValue: function(value) { return (typeof value === 'string') ? (value.replace(/[^\d.]/g, '') !== '') ? +(value.replace(/[^\d.]/g, '')) : false : value ; }, transitionEnd: function() { var element = document.createElement('element'), transitions = { 'transition' :'transitionend', 'OTransition' :'oTransitionEnd', 'MozTransition' :'transitionend', 'WebkitTransition' :'webkitTransitionEnd' }, transition ; for(transition in transitions){ if( element.style[transition] !== undefined ){ return transitions[transition]; } } }, // gets current displayed percentage (if animating values this is the intermediary value) displayPercent: function() { var barWidth = $bar.width(), totalWidth = $module.width(), minDisplay = parseInt($bar.css('min-width'), 10), displayPercent = (barWidth > minDisplay) ? (barWidth / totalWidth * 100) : module.percent ; return (settings.precision > 0) ? Math.round(displayPercent * (10 * settings.precision)) / (10 * settings.precision) : Math.round(displayPercent) ; }, percent: function() { return module.percent || 0; }, value: function() { return module.value || 0; }, total: function() { return module.total || false; } }, is: { success: function() { return $module.hasClass(className.success); }, warning: function() { return $module.hasClass(className.warning); }, error: function() { return $module.hasClass(className.error); }, active: function() { return $module.hasClass(className.active); }, visible: function() { return $module.is(':visible'); } }, remove: { state: function() { module.verbose('Removing stored state'); delete module.total; delete module.percent; delete module.value; }, active: function() { module.verbose('Removing active state'); $module.removeClass(className.active); }, success: function() { module.verbose('Removing success state'); $module.removeClass(className.success); }, warning: function() { module.verbose('Removing warning state'); $module.removeClass(className.warning); }, error: function() { module.verbose('Removing error state'); $module.removeClass(className.error); } }, set: { barWidth: function(value) { if(value > 100) { module.error(error.tooHigh, value); } else if (value < 0) { module.error(error.tooLow, value); } else { $bar .css('width', value + '%') ; $module .attr('data-percent', parseInt(value, 10)) ; } }, duration: function(duration) { duration = duration || settings.duration; duration = (typeof duration == 'number') ? duration + 'ms' : duration ; module.verbose('Setting progress bar transition duration', duration); $bar .css({ 'transition-duration': duration }) ; }, percent: function(percent) { percent = (typeof percent == 'string') ? +(percent.replace('%', '')) : percent ; // round display percentage percent = (settings.precision > 0) ? Math.round(percent * (10 * settings.precision)) / (10 * settings.precision) : Math.round(percent) ; module.percent = percent; if( !module.has.total() ) { module.value = (settings.precision > 0) ? Math.round( (percent / 100) * module.total * (10 * settings.precision)) / (10 * settings.precision) : Math.round( (percent / 100) * module.total * 10) / 10 ; if(settings.limitValues) { module.value = (module.value > 100) ? 100 : (module.value < 0) ? 0 : module.value ; } } module.set.barWidth(percent); module.set.labelInterval(); module.set.labels(); settings.onChange.call(element, percent, module.value, module.total); }, labelInterval: function() { var animationCallback = function() { module.verbose('Bar finished animating, removing continuous label updates'); clearInterval(module.interval); animating = false; module.set.labels(); } ; clearInterval(module.interval); $bar.one(transitionEnd + eventNamespace, animationCallback); module.timer = setTimeout(animationCallback, settings.duration + 100); animating = true; module.interval = setInterval(module.set.labels, settings.framerate); }, labels: function() { module.verbose('Setting both bar progress and outer label text'); module.set.barLabel(); module.set.state(); }, label: function(text) { text = text || ''; if(text) { text = module.get.text(text); module.debug('Setting label to text', text); $label.text(text); } }, state: function(percent) { percent = (percent !== undefined) ? percent : module.percent ; if(percent === 100) { if(settings.autoSuccess && !(module.is.warning() || module.is.error())) { module.set.success(); module.debug('Automatically triggering success at 100%'); } else { module.verbose('Reached 100% removing active state'); module.remove.active(); } } else if(percent > 0) { module.verbose('Adjusting active progress bar label', percent); module.set.active(); } else { module.remove.active(); module.set.label(settings.text.active); } }, barLabel: function(text) { if(text !== undefined) { $progress.text( module.get.text(text) ); } else if(settings.label == 'ratio' && module.total) { module.debug('Adding ratio to bar label'); $progress.text( module.get.text(settings.text.ratio) ); } else if(settings.label == 'percent') { module.debug('Adding percentage to bar label'); $progress.text( module.get.text(settings.text.percent) ); } }, active: function(text) { text = text || settings.text.active; module.debug('Setting active state'); if(settings.showActivity && !module.is.active() ) { $module.addClass(className.active); } module.remove.warning(); module.remove.error(); module.remove.success(); if(text) { module.set.label(text); } settings.onActive.call(element, module.value, module.total); }, success : function(text) { text = text || settings.text.success; module.debug('Setting success state'); $module.addClass(className.success); module.remove.active(); module.remove.warning(); module.remove.error(); module.complete(); if(text) { module.set.label(text); } settings.onSuccess.call(element, module.total); }, warning : function(text) { text = text || settings.text.warning; module.debug('Setting warning state'); $module.addClass(className.warning); module.remove.active(); module.remove.success(); module.remove.error(); module.complete(); if(text) { module.set.label(text); } settings.onWarning.call(element, module.value, module.total); }, error : function(text) { text = text || settings.text.error; module.debug('Setting error state'); $module.addClass(className.error); module.remove.active(); module.remove.success(); module.remove.warning(); module.complete(); if(text) { module.set.label(text); } settings.onError.call(element, module.value, module.total); }, transitionEvent: function() { transitionEnd = module.get.transitionEnd(); }, total: function(totalValue) { module.total = totalValue; }, value: function(value) { module.value = value; }, progress: function(value) { var numericValue = module.get.numericValue(value), percentComplete ; if(numericValue === false) { module.error(error.nonNumeric, value); } if( module.has.total() ) { module.set.value(numericValue); percentComplete = (numericValue / module.total) * 100; module.debug('Calculating percent complete from total', percentComplete); module.set.percent( percentComplete ); } else { percentComplete = numericValue; module.debug('Setting value to exact percentage value', percentComplete); module.set.percent( percentComplete ); } } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.progress.settings = { name : 'Progress', namespace : 'progress', debug : false, verbose : false, performance : true, random : { min : 2, max : 5 }, duration : 300, autoSuccess : true, showActivity : true, limitValues : true, label : 'percent', precision : 0, framerate : (1000 / 30), /// 30 fps percent : false, total : false, value : false, onChange : function(percent, value, total){}, onSuccess : function(total){}, onActive : function(value, total){}, onError : function(value, total){}, onWarning : function(value, total){}, error : { method : 'The method you called is not defined.', nonNumeric : 'Progress value is non numeric', tooHigh : 'Value specified is above 100%', tooLow : 'Value specified is below 0%' }, regExp: { variable: /\{\$*[A-z0-9]+\}/g }, metadata: { percent : 'percent', total : 'total', value : 'value' }, selector : { bar : '> .bar', label : '> .label', progress : '.bar > .progress' }, text : { active : false, error : false, success : false, warning : false, percent : '{percent}%', ratio : '{value} of {total}' }, className : { active : 'active', error : 'error', success : 'success', warning : 'warning' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Rating * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.rating = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.rating.settings, parameters) : $.extend({}, $.fn.rating.settings), namespace = settings.namespace, className = settings.className, metadata = settings.metadata, selector = settings.selector, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, element = this, instance = $(this).data(moduleNamespace), $module = $(this), $icon = $module.find(selector.icon), module ; module = { initialize: function() { module.verbose('Initializing rating module', settings); if($icon.length === 0) { module.setup.layout(); } if(settings.interactive) { module.enable(); } else { module.disable(); } module.set.rating( module.get.initialRating() ); module.instantiate(); }, instantiate: function() { module.verbose('Instantiating module', settings); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous instance', instance); module.remove.events(); $module .removeData(moduleNamespace) ; }, refresh: function() { $icon = $module.find(selector.icon); }, setup: { layout: function() { var maxRating = module.get.maxRating(), html = $.fn.rating.settings.templates.icon(maxRating) ; module.debug('Generating icon html dynamically'); $module .html(html) ; module.refresh(); } }, event: { mouseenter: function() { var $activeIcon = $(this) ; $activeIcon .nextAll() .removeClass(className.selected) ; $module .addClass(className.selected) ; $activeIcon .addClass(className.selected) .prevAll() .addClass(className.selected) ; }, mouseleave: function() { $module .removeClass(className.selected) ; $icon .removeClass(className.selected) ; }, click: function() { var $activeIcon = $(this), currentRating = module.get.rating(), rating = $icon.index($activeIcon) + 1, canClear = (settings.clearable == 'auto') ? ($icon.length === 1) : settings.clearable ; if(canClear && currentRating == rating) { module.clearRating(); } else { module.set.rating( rating ); } } }, clearRating: function() { module.debug('Clearing current rating'); module.set.rating(0); }, bind: { events: function() { module.verbose('Binding events'); $module .on('mouseenter' + eventNamespace, selector.icon, module.event.mouseenter) .on('mouseleave' + eventNamespace, selector.icon, module.event.mouseleave) .on('click' + eventNamespace, selector.icon, module.event.click) ; } }, remove: { events: function() { module.verbose('Removing events'); $module .off(eventNamespace) ; } }, enable: function() { module.debug('Setting rating to interactive mode'); module.bind.events(); $module .removeClass(className.disabled) ; }, disable: function() { module.debug('Setting rating to read-only mode'); module.remove.events(); $module .addClass(className.disabled) ; }, get: { initialRating: function() { if($module.data(metadata.rating) !== undefined) { $module.removeData(metadata.rating); return $module.data(metadata.rating); } return settings.initialRating; }, maxRating: function() { if($module.data(metadata.maxRating) !== undefined) { $module.removeData(metadata.maxRating); return $module.data(metadata.maxRating); } return settings.maxRating; }, rating: function() { var currentRating = $icon.filter('.' + className.active).length ; module.verbose('Current rating retrieved', currentRating); return currentRating; } }, set: { rating: function(rating) { var ratingIndex = (rating - 1 >= 0) ? (rating - 1) : 0, $activeIcon = $icon.eq(ratingIndex) ; $module .removeClass(className.selected) ; $icon .removeClass(className.selected) .removeClass(className.active) ; if(rating > 0) { module.verbose('Setting current rating to', rating); $activeIcon .prevAll() .andSelf() .addClass(className.active) ; } settings.onRate.call(element, rating); } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.rating.settings = { name : 'Rating', namespace : 'rating', debug : false, verbose : false, performance : true, initialRating : 0, interactive : true, maxRating : 4, clearable : 'auto', onRate : function(rating){}, error : { method : 'The method you called is not defined', noMaximum : 'No maximum rating specified. Cannot generate HTML automatically' }, metadata: { rating : 'rating', maxRating : 'maxRating' }, className : { active : 'active', disabled : 'disabled', selected : 'selected', loading : 'loading' }, selector : { icon : '.icon' }, templates: { icon: function(maxRating) { var icon = 1, html = '' ; while(icon <= maxRating) { html += '<i class="icon"></i>'; icon++; } return html; } } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Search * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.search = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $(this) .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.search.settings, parameters) : $.extend({}, $.fn.search.settings), className = settings.className, metadata = settings.metadata, regExp = settings.regExp, fields = settings.fields, selector = settings.selector, error = settings.error, namespace = settings.namespace, eventNamespace = '.' + namespace, moduleNamespace = namespace + '-module', $module = $(this), $prompt = $module.find(selector.prompt), $searchButton = $module.find(selector.searchButton), $results = $module.find(selector.results), $result = $module.find(selector.result), $category = $module.find(selector.category), element = this, instance = $module.data(moduleNamespace), module ; module = { initialize: function() { module.verbose('Initializing module'); module.determine.searchFields(); module.bind.events(); module.set.type(); module.create.results(); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying instance'); $module .off(eventNamespace) .removeData(moduleNamespace) ; }, bind: { events: function() { module.verbose('Binding events to search'); if(settings.automatic) { $module .on(module.get.inputEvent() + eventNamespace, selector.prompt, module.event.input) ; $prompt .attr('autocomplete', 'off') ; } $module // prompt .on('focus' + eventNamespace, selector.prompt, module.event.focus) .on('blur' + eventNamespace, selector.prompt, module.event.blur) .on('keydown' + eventNamespace, selector.prompt, module.handleKeyboard) // search button .on('click' + eventNamespace, selector.searchButton, module.query) // results .on('mousedown' + eventNamespace, selector.results, module.event.result.mousedown) .on('mouseup' + eventNamespace, selector.results, module.event.result.mouseup) .on('click' + eventNamespace, selector.result, module.event.result.click) ; } }, determine: { searchFields: function() { // this makes sure $.extend does not add specified search fields to default fields // this is the only setting which should not extend defaults if(parameters && parameters.searchFields !== undefined) { settings.searchFields = parameters.searchFields; } } }, event: { input: function() { clearTimeout(module.timer); module.timer = setTimeout(module.query, settings.searchDelay); }, focus: function() { module.set.focus(); if( module.has.minimumCharacters() ) { module.query(); if( module.can.show() ) { module.showResults(); } } }, blur: function(event) { var pageLostFocus = (document.activeElement === this), callback = function() { module.cancel.query(); module.remove.focus(); module.timer = setTimeout(module.hideResults, settings.hideDelay); } ; if(pageLostFocus) { return; } if(module.resultsClicked) { module.debug('Determining if user action caused search to close'); $module .one('click', selector.results, function(event) { if( !module.is.animating() && !module.is.hidden() ) { callback(); } }) ; } else { module.debug('Input blurred without user action, closing results'); callback(); } }, result: { mousedown: function() { module.resultsClicked = true; }, mouseup: function() { module.resultsClicked = false; }, click: function(event) { module.debug('Search result selected'); var $result = $(this), $title = $result.find(selector.title).eq(0), $link = $result.find('a[href]').eq(0), href = $link.attr('href') || false, target = $link.attr('target') || false, title = $title.html(), // title is used for result lookup value = ($title.length > 0) ? $title.text() : false, results = module.get.results(), result = $result.data(metadata.result) || module.get.result(value, results), returnedValue ; if( $.isFunction(settings.onSelect) ) { if(settings.onSelect.call(element, result, results) === false) { module.debug('Custom onSelect callback cancelled default select action'); return; } } module.hideResults(); if(value) { module.set.value(value); } if(href) { module.verbose('Opening search link found in result', $link); if(target == '_blank' || event.ctrlKey) { window.open(href); } else { window.location.href = (href); } } } } }, handleKeyboard: function(event) { var // force selector refresh $result = $module.find(selector.result), $category = $module.find(selector.category), currentIndex = $result.index( $result.filter('.' + className.active) ), resultSize = $result.length, keyCode = event.which, keys = { backspace : 8, enter : 13, escape : 27, upArrow : 38, downArrow : 40 }, newIndex ; // search shortcuts if(keyCode == keys.escape) { module.verbose('Escape key pressed, blurring search field'); module.trigger.blur(); } if( module.is.visible() ) { if(keyCode == keys.enter) { module.verbose('Enter key pressed, selecting active result'); if( $result.filter('.' + className.active).length > 0 ) { module.event.result.click.call($result.filter('.' + className.active), event); event.preventDefault(); return false; } } else if(keyCode == keys.upArrow) { module.verbose('Up key pressed, changing active result'); newIndex = (currentIndex - 1 < 0) ? currentIndex : currentIndex - 1 ; $category .removeClass(className.active) ; $result .removeClass(className.active) .eq(newIndex) .addClass(className.active) .closest($category) .addClass(className.active) ; event.preventDefault(); } else if(keyCode == keys.downArrow) { module.verbose('Down key pressed, changing active result'); newIndex = (currentIndex + 1 >= resultSize) ? currentIndex : currentIndex + 1 ; $category .removeClass(className.active) ; $result .removeClass(className.active) .eq(newIndex) .addClass(className.active) .closest($category) .addClass(className.active) ; event.preventDefault(); } } else { // query shortcuts if(keyCode == keys.enter) { module.verbose('Enter key pressed, executing query'); module.query(); module.set.buttonPressed(); $prompt.one('keyup', module.remove.buttonFocus); } } }, setup: { api: function() { var apiSettings = { debug : settings.debug, on : false, cache : 'local', action : 'search', onError : module.error }, searchHTML ; module.verbose('First request, initializing API'); $module.api(apiSettings); } }, can: { useAPI: function() { return $.fn.api !== undefined; }, show: function() { return module.is.focused() && !module.is.visible() && !module.is.empty(); }, transition: function() { return settings.transition && $.fn.transition !== undefined && $module.transition('is supported'); } }, is: { animating: function() { return $results.hasClass(className.animating); }, hidden: function() { return $results.hasClass(className.hidden); }, empty: function() { return ($results.html() === ''); }, visible: function() { return ($results.filter(':visible').length > 0); }, focused: function() { return ($prompt.filter(':focus').length > 0); } }, trigger: { blur: function() { var events = document.createEvent('HTMLEvents'), promptElement = $prompt[0] ; if(promptElement) { module.verbose('Triggering native blur event'); events.initEvent('blur', false, false); promptElement.dispatchEvent(events); } } }, get: { inputEvent: function() { var prompt = $prompt[0], inputEvent = (prompt !== undefined && prompt.oninput !== undefined) ? 'input' : (prompt !== undefined && prompt.onpropertychange !== undefined) ? 'propertychange' : 'keyup' ; return inputEvent; }, value: function() { return $prompt.val(); }, results: function() { var results = $module.data(metadata.results) ; return results; }, result: function(value, results) { var lookupFields = ['title', 'id'], result = false ; value = (value !== undefined) ? value : module.get.value() ; results = (results !== undefined) ? results : module.get.results() ; if(settings.type === 'category') { module.debug('Finding result that matches', value); $.each(results, function(index, category) { if($.isArray(category.results)) { result = module.search.object(value, category.results, lookupFields)[0]; // don't continue searching if a result is found if(result) { return false; } } }); } else { module.debug('Finding result in results object', value); result = module.search.object(value, results, lookupFields)[0]; } return result || false; }, }, set: { focus: function() { $module.addClass(className.focus); }, loading: function() { $module.addClass(className.loading); }, value: function(value) { module.verbose('Setting search input value', value); $prompt .val(value) ; }, type: function(type) { type = type || settings.type; if(settings.type == 'category') { $module.addClass(settings.type); } }, buttonPressed: function() { $searchButton.addClass(className.pressed); } }, remove: { loading: function() { $module.removeClass(className.loading); }, focus: function() { $module.removeClass(className.focus); }, buttonPressed: function() { $searchButton.removeClass(className.pressed); } }, query: function() { var searchTerm = module.get.value(), cache = module.read.cache(searchTerm) ; if( module.has.minimumCharacters() ) { if(cache) { module.debug('Reading result from cache', searchTerm); module.save.results(cache.results); module.addResults(cache.html); module.inject.id(cache.results); } else { module.debug('Querying for', searchTerm); if($.isPlainObject(settings.source) || $.isArray(settings.source)) { module.search.local(searchTerm); } else if( module.can.useAPI() ) { module.search.remote(searchTerm); } else { module.error(error.source); } } settings.onSearchQuery.call(element, searchTerm); } else { module.hideResults(); } }, search: { local: function(searchTerm) { var results = module.search.object(searchTerm, settings.content), searchHTML ; module.set.loading(); module.save.results(results); module.debug('Returned local search results', results); searchHTML = module.generateResults({ results: results }); module.remove.loading(); module.addResults(searchHTML); module.inject.id(results); module.write.cache(searchTerm, { html : searchHTML, results : results }); }, remote: function(searchTerm) { var apiSettings = { onSuccess : function(response) { module.parse.response.call(element, response, searchTerm); }, onFailure: function() { module.displayMessage(error.serverError); }, urlData: { query: searchTerm } } ; if( !$module.api('get request') ) { module.setup.api(); } $.extend(true, apiSettings, settings.apiSettings); module.debug('Executing search', apiSettings); module.cancel.query(); $module .api('setting', apiSettings) .api('query') ; }, object: function(searchTerm, source, searchFields) { var results = [], fuzzyResults = [], searchExp = searchTerm.toString().replace(regExp.escape, '\\$&'), matchRegExp = new RegExp(regExp.beginsWith + searchExp, 'i'), // avoid duplicates when pushing results addResult = function(array, result) { var notResult = ($.inArray(result, results) == -1), notFuzzyResult = ($.inArray(result, fuzzyResults) == -1) ; if(notResult && notFuzzyResult) { array.push(result); } } ; source = source || settings.source; searchFields = (searchFields !== undefined) ? searchFields : settings.searchFields ; // search fields should be array to loop correctly if(!$.isArray(searchFields)) { searchFields = [searchFields]; } // exit conditions if no source if(source === undefined || source === false) { module.error(error.source); return []; } // iterate through search fields looking for matches $.each(searchFields, function(index, field) { $.each(source, function(label, content) { var fieldExists = (typeof content[field] == 'string') ; if(fieldExists) { if( content[field].search(matchRegExp) !== -1) { // content starts with value (first in results) addResult(results, content); } else if(settings.searchFullText && module.fuzzySearch(searchTerm, content[field]) ) { // content fuzzy matches (last in results) addResult(fuzzyResults, content); } } }); }); return $.merge(results, fuzzyResults); } }, fuzzySearch: function(query, term) { var termLength = term.length, queryLength = query.length ; if(typeof query !== 'string') { return false; } query = query.toLowerCase(); term = term.toLowerCase(); if(queryLength > termLength) { return false; } if(queryLength === termLength) { return (query === term); } search: for (var characterIndex = 0, nextCharacterIndex = 0; characterIndex < queryLength; characterIndex++) { var queryCharacter = query.charCodeAt(characterIndex) ; while(nextCharacterIndex < termLength) { if(term.charCodeAt(nextCharacterIndex++) === queryCharacter) { continue search; } } return false; } return true; }, parse: { response: function(response, searchTerm) { var searchHTML = module.generateResults(response) ; module.verbose('Parsing server response', response); if(response !== undefined) { if(searchTerm !== undefined && response[fields.results] !== undefined) { module.addResults(searchHTML); module.inject.id(response[fields.results]); module.write.cache(searchTerm, { html : searchHTML, results : response[fields.results] }); module.save.results(response[fields.results]); } } } }, cancel: { query: function() { if( module.can.useAPI() ) { $module.api('abort'); } } }, has: { minimumCharacters: function() { var searchTerm = module.get.value(), numCharacters = searchTerm.length ; return (numCharacters >= settings.minCharacters); } }, clear: { cache: function(value) { var cache = $module.data(metadata.cache) ; if(!value) { module.debug('Clearing cache', value); $module.removeData(metadata.cache); } else if(value && cache && cache[value]) { module.debug('Removing value from cache', value); delete cache[value]; $module.data(metadata.cache, cache); } } }, read: { cache: function(name) { var cache = $module.data(metadata.cache) ; if(settings.cache) { module.verbose('Checking cache for generated html for query', name); return (typeof cache == 'object') && (cache[name] !== undefined) ? cache[name] : false ; } return false; } }, create: { id: function(resultIndex, categoryIndex) { var resultID = (resultIndex + 1), // not zero indexed categoryID = (categoryIndex + 1), firstCharCode, letterID, id ; if(categoryIndex !== undefined) { // start char code for "A" letterID = String.fromCharCode(97 + categoryIndex); id = letterID + resultID; module.verbose('Creating category result id', id); } else { id = resultID; module.verbose('Creating result id', id); } return id; }, results: function() { if($results.length === 0) { $results = $('<div />') .addClass(className.results) .appendTo($module) ; } } }, inject: { result: function(result, resultIndex, categoryIndex) { module.verbose('Injecting result into results'); var $selectedResult = (categoryIndex !== undefined) ? $results .children().eq(categoryIndex) .children(selector.result).eq(resultIndex) : $results .children(selector.result).eq(resultIndex) ; module.verbose('Injecting results metadata', $selectedResult); $selectedResult .data(metadata.result, result) ; }, id: function(results) { module.debug('Injecting unique ids into results'); var // since results may be object, we must use counters categoryIndex = 0, resultIndex = 0 ; if(settings.type === 'category') { // iterate through each category result $.each(results, function(index, category) { resultIndex = 0; $.each(category.results, function(index, value) { var result = category.results[index] ; if(result.id === undefined) { result.id = module.create.id(resultIndex, categoryIndex); } module.inject.result(result, resultIndex, categoryIndex); resultIndex++; }); categoryIndex++; }); } else { // top level $.each(results, function(index, value) { var result = results[index] ; if(result.id === undefined) { result.id = module.create.id(resultIndex); } module.inject.result(result, resultIndex); resultIndex++; }); } return results; } }, save: { results: function(results) { module.verbose('Saving current search results to metadata', results); $module.data(metadata.results, results); } }, write: { cache: function(name, value) { var cache = ($module.data(metadata.cache) !== undefined) ? $module.data(metadata.cache) : {} ; if(settings.cache) { module.verbose('Writing generated html to cache', name, value); cache[name] = value; $module .data(metadata.cache, cache) ; } } }, addResults: function(html) { if( $.isFunction(settings.onResultsAdd) ) { if( settings.onResultsAdd.call($results, html) === false ) { module.debug('onResultsAdd callback cancelled default action'); return false; } } $results .html(html) ; if( module.can.show() ) { module.showResults(); } }, showResults: function() { if(!module.is.visible()) { if( module.can.transition() ) { module.debug('Showing results with css animations'); $results .transition({ animation : settings.transition + ' in', debug : settings.debug, verbose : settings.verbose, duration : settings.duration, queue : true }) ; } else { module.debug('Showing results with javascript'); $results .stop() .fadeIn(settings.duration, settings.easing) ; } settings.onResultsOpen.call($results); } }, hideResults: function() { if( module.is.visible() ) { if( module.can.transition() ) { module.debug('Hiding results with css animations'); $results .transition({ animation : settings.transition + ' out', debug : settings.debug, verbose : settings.verbose, duration : settings.duration, queue : true }) ; } else { module.debug('Hiding results with javascript'); $results .stop() .fadeOut(settings.duration, settings.easing) ; } settings.onResultsClose.call($results); } }, generateResults: function(response) { module.debug('Generating html from response', response); var template = settings.templates[settings.type], isProperObject = ($.isPlainObject(response[fields.results]) && !$.isEmptyObject(response[fields.results])), isProperArray = ($.isArray(response[fields.results]) && response[fields.results].length > 0), html = '' ; if(isProperObject || isProperArray ) { if(settings.maxResults > 0) { if(isProperObject) { if(settings.type == 'standard') { module.error(error.maxResults); } } else { response[fields.results] = response[fields.results].slice(0, settings.maxResults); } } if($.isFunction(template)) { html = template(response, fields); } else { module.error(error.noTemplate, false); } } else { html = module.displayMessage(error.noResults, 'empty'); } settings.onResults.call(element, response); return html; }, displayMessage: function(text, type) { type = type || 'standard'; module.debug('Displaying message', text, type); module.addResults( settings.templates.message(text, type) ); return settings.templates.message(text, type); }, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.search.settings = { name : 'Search', namespace : 'search', debug : false, verbose : false, performance : true, type : 'standard', // template to use (specified in settings.templates) minCharacters : 1, // minimum characters required to search apiSettings : false, // API config source : false, // object to search searchFields : [ 'title', 'description' ], // fields to search displayField : '', // field to display in standard results template searchFullText : true, // whether to include fuzzy results in local search automatic : true, // whether to add events to prompt automatically hideDelay : 0, // delay before hiding menu after blur searchDelay : 200, // delay before searching maxResults : 7, // maximum results returned from local cache : true, // whether to store lookups in local cache // transition settings transition : 'scale', duration : 200, easing : 'easeOutExpo', // callbacks onSelect : false, onResultsAdd : false, onSearchQuery : function(query){}, onResults : function(response){}, onResultsOpen : function(){}, onResultsClose : function(){}, className: { animating : 'animating', active : 'active', empty : 'empty', focus : 'focus', hidden : 'hidden', loading : 'loading', results : 'results', pressed : 'down' }, error : { source : 'Cannot search. No source used, and Semantic API module was not included', noResults : 'Your search returned no results', logging : 'Error in debug logging, exiting.', noEndpoint : 'No search endpoint was specified', noTemplate : 'A valid template name was not specified.', serverError : 'There was an issue querying the server.', maxResults : 'Results must be an array to use maxResults setting', method : 'The method you called is not defined.' }, metadata: { cache : 'cache', results : 'results', result : 'result' }, regExp: { escape : /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, beginsWith : '(?:\s|^)' }, // maps api response attributes to internal representation fields: { categories : 'results', // array of categories (category view) categoryName : 'name', // name of category (category view) categoryResults : 'results', // array of results (category view) description : 'description', // result description image : 'image', // result image price : 'price', // result price results : 'results', // array of results (standard) title : 'title', // result title url : 'url', // result url action : 'action', // "view more" object name actionText : 'text', // "view more" text actionURL : 'url' // "view more" url }, selector : { prompt : '.prompt', searchButton : '.search.button', results : '.results', category : '.category', result : '.result', title : '.title, .name' }, templates: { escape: function(string) { var badChars = /[&<>"'`]/g, shouldEscape = /[&<>"'`]/, escape = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }, escapedChar = function(chr) { return escape[chr]; } ; if(shouldEscape.test(string)) { return string.replace(badChars, escapedChar); } return string; }, message: function(message, type) { var html = '' ; if(message !== undefined && type !== undefined) { html += '' + '<div class="message ' + type + '">' ; // message type if(type == 'empty') { html += '' + '<div class="header">No Results</div class="header">' + '<div class="description">' + message + '</div class="description">' ; } else { html += ' <div class="description">' + message + '</div>'; } html += '</div>'; } return html; }, category: function(response, fields) { var html = '', escape = $.fn.search.settings.templates.escape ; if(response[fields.categoryResults] !== undefined) { // each category $.each(response[fields.categoryResults], function(index, category) { if(category[fields.results] !== undefined && category.results.length > 0) { html += '<div class="category">'; if(category[fields.categoryName] !== undefined) { html += '<div class="name">' + category[fields.categoryName] + '</div>'; } // each item inside category $.each(category.results, function(index, result) { if(result[fields.url]) { html += '<a class="result" href="' + result[fields.url] + '">'; } else { html += '<a class="result">'; } if(result[fields.image] !== undefined) { html += '' + '<div class="image">' + ' <img src="' + result[fields.image] + '">' + '</div>' ; } html += '<div class="content">'; if(result[fields.price] !== undefined) { html += '<div class="price">' + result[fields.price] + '</div>'; } if(result[fields.title] !== undefined) { html += '<div class="title">' + result[fields.title] + '</div>'; } if(result[fields.description] !== undefined) { html += '<div class="description">' + result[fields.description] + '</div>'; } html += '' + '</div>' ; html += '</a>'; }); html += '' + '</div>' ; } }); if(response[fields.action]) { html += '' + '<a href="' + response[fields.action][fields.actionURL] + '" class="action">' + response[fields.action][fields.actionText] + '</a>'; } return html; } return false; }, standard: function(response, fields) { var html = '' ; if(response[fields.results] !== undefined) { // each result $.each(response[fields.results], function(index, result) { if(result[fields.url]) { html += '<a class="result" href="' + result[fields.url] + '">'; } else { html += '<a class="result">'; } if(result[fields.image] !== undefined) { html += '' + '<div class="image">' + ' <img src="' + result[fields.image] + '">' + '</div>' ; } html += '<div class="content">'; if(result[fields.price] !== undefined) { html += '<div class="price">' + result[fields.price] + '</div>'; } if(result[fields.title] !== undefined) { html += '<div class="title">' + result[fields.title] + '</div>'; } if(result[fields.description] !== undefined) { html += '<div class="description">' + result[fields.description] + '</div>'; } html += '' + '</div>' ; html += '</a>'; }); if(response[fields.action]) { html += '' + '<a href="' + response[fields.action][fields.actionURL] + '" class="action">' + response[fields.action][fields.actionText] + '</a>'; } return html; } return false; } } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Shape * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.shape = function(parameters) { var $allModules = $(this), $body = $('body'), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, returnedValue ; $allModules .each(function() { var moduleSelector = $allModules.selector || '', settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.shape.settings, parameters) : $.extend({}, $.fn.shape.settings), // internal aliases namespace = settings.namespace, selector = settings.selector, error = settings.error, className = settings.className, // define namespaces for modules eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, // selector cache $module = $(this), $sides = $module.find(selector.sides), $side = $module.find(selector.side), // private variables nextIndex = false, $activeSide, $nextSide, // standard module element = this, instance = $module.data(moduleNamespace), module ; module = { initialize: function() { module.verbose('Initializing module for', element); module.set.defaultSide(); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, instance) ; }, destroy: function() { module.verbose('Destroying previous module for', element); $module .removeData(moduleNamespace) .off(eventNamespace) ; }, refresh: function() { module.verbose('Refreshing selector cache for', element); $module = $(element); $sides = $(this).find(selector.shape); $side = $(this).find(selector.side); }, repaint: function() { module.verbose('Forcing repaint event'); var shape = $sides[0] || document.createElement('div'), fakeAssignment = shape.offsetWidth ; }, animate: function(propertyObject, callback) { module.verbose('Animating box with properties', propertyObject); callback = callback || function(event) { module.verbose('Executing animation callback'); if(event !== undefined) { event.stopPropagation(); } module.reset(); module.set.active(); }; settings.beforeChange.call($nextSide[0]); if(module.get.transitionEvent()) { module.verbose('Starting CSS animation'); $module .addClass(className.animating) ; $sides .css(propertyObject) .one(module.get.transitionEvent(), callback) ; module.set.duration(settings.duration); requestAnimationFrame(function() { $module .addClass(className.animating) ; $activeSide .addClass(className.hidden) ; }); } else { callback(); } }, queue: function(method) { module.debug('Queueing animation of', method); $sides .one(module.get.transitionEvent(), function() { module.debug('Executing queued animation'); setTimeout(function(){ $module.shape(method); }, 0); }) ; }, reset: function() { module.verbose('Animating states reset'); $module .removeClass(className.animating) .attr('style', '') .removeAttr('style') ; // removeAttr style does not consistently work in safari $sides .attr('style', '') .removeAttr('style') ; $side .attr('style', '') .removeAttr('style') .removeClass(className.hidden) ; $nextSide .removeClass(className.animating) .attr('style', '') .removeAttr('style') ; }, is: { complete: function() { return ($side.filter('.' + className.active)[0] == $nextSide[0]); }, animating: function() { return $module.hasClass(className.animating); } }, set: { defaultSide: function() { $activeSide = $module.find('.' + settings.className.active); $nextSide = ( $activeSide.next(selector.side).length > 0 ) ? $activeSide.next(selector.side) : $module.find(selector.side).first() ; nextIndex = false; module.verbose('Active side set to', $activeSide); module.verbose('Next side set to', $nextSide); }, duration: function(duration) { duration = duration || settings.duration; duration = (typeof duration == 'number') ? duration + 'ms' : duration ; module.verbose('Setting animation duration', duration); if(settings.duration || settings.duration === 0) { $sides.add($side) .css({ '-webkit-transition-duration': duration, '-moz-transition-duration': duration, '-ms-transition-duration': duration, '-o-transition-duration': duration, 'transition-duration': duration }) ; } }, currentStageSize: function() { var $activeSide = $module.find('.' + settings.className.active), width = $activeSide.outerWidth(true), height = $activeSide.outerHeight(true) ; $module .css({ width: width, height: height }) ; }, stageSize: function() { var $clone = $module.clone().addClass(className.loading), $activeSide = $clone.find('.' + settings.className.active), $nextSide = (nextIndex) ? $clone.find(selector.side).eq(nextIndex) : ( $activeSide.next(selector.side).length > 0 ) ? $activeSide.next(selector.side) : $clone.find(selector.side).first(), newSize = {} ; module.set.currentStageSize(); $activeSide.removeClass(className.active); $nextSide.addClass(className.active); $clone.insertAfter($module); newSize = { width : $nextSide.outerWidth(true), height : $nextSide.outerHeight(true) }; $clone.remove(); $module .css(newSize) ; module.verbose('Resizing stage to fit new content', newSize); }, nextSide: function(selector) { nextIndex = selector; $nextSide = $side.filter(selector); nextIndex = $side.index($nextSide); if($nextSide.length === 0) { module.set.defaultSide(); module.error(error.side); } module.verbose('Next side manually set to', $nextSide); }, active: function() { module.verbose('Setting new side to active', $nextSide); $side .removeClass(className.active) ; $nextSide .addClass(className.active) ; settings.onChange.call($nextSide[0]); module.set.defaultSide(); } }, flip: { up: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping up', $nextSide); module.set.stageSize(); module.stage.above(); module.animate( module.get.transform.up() ); } else { module.queue('flip up'); } }, down: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping down', $nextSide); module.set.stageSize(); module.stage.below(); module.animate( module.get.transform.down() ); } else { module.queue('flip down'); } }, left: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping left', $nextSide); module.set.stageSize(); module.stage.left(); module.animate(module.get.transform.left() ); } else { module.queue('flip left'); } }, right: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping right', $nextSide); module.set.stageSize(); module.stage.right(); module.animate(module.get.transform.right() ); } else { module.queue('flip right'); } }, over: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping over', $nextSide); module.set.stageSize(); module.stage.behind(); module.animate(module.get.transform.over() ); } else { module.queue('flip over'); } }, back: function() { if(module.is.complete() && !module.is.animating() && !settings.allowRepeats) { module.debug('Side already visible', $nextSide); return; } if( !module.is.animating()) { module.debug('Flipping back', $nextSide); module.set.stageSize(); module.stage.behind(); module.animate(module.get.transform.back() ); } else { module.queue('flip back'); } } }, get: { transform: { up: function() { var translate = { y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), z: -($activeSide.outerHeight(true) / 2) } ; return { transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(-90deg)' }; }, down: function() { var translate = { y: -(($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), z: -($activeSide.outerHeight(true) / 2) } ; return { transform: 'translateY(' + translate.y + 'px) translateZ('+ translate.z + 'px) rotateX(90deg)' }; }, left: function() { var translate = { x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2), z : -($activeSide.outerWidth(true) / 2) } ; return { transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(90deg)' }; }, right: function() { var translate = { x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2), z : -($activeSide.outerWidth(true) / 2) } ; return { transform: 'translateX(' + translate.x + 'px) translateZ(' + translate.z + 'px) rotateY(-90deg)' }; }, over: function() { var translate = { x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2) } ; return { transform: 'translateX(' + translate.x + 'px) rotateY(180deg)' }; }, back: function() { var translate = { x : -(($activeSide.outerWidth(true) - $nextSide.outerWidth(true)) / 2) } ; return { transform: 'translateX(' + translate.x + 'px) rotateY(-180deg)' }; } }, transitionEvent: function() { var element = document.createElement('element'), transitions = { 'transition' :'transitionend', 'OTransition' :'oTransitionEnd', 'MozTransition' :'transitionend', 'WebkitTransition' :'webkitTransitionEnd' }, transition ; for(transition in transitions){ if( element.style[transition] !== undefined ){ return transitions[transition]; } } }, nextSide: function() { return ( $activeSide.next(selector.side).length > 0 ) ? $activeSide.next(selector.side) : $module.find(selector.side).first() ; } }, stage: { above: function() { var box = { origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), depth : { active : ($nextSide.outerHeight(true) / 2), next : ($activeSide.outerHeight(true) / 2) } } ; module.verbose('Setting the initial animation position as above', $nextSide, box); $sides .css({ 'transform' : 'translateZ(-' + box.depth.active + 'px)' }) ; $activeSide .css({ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' }) ; $nextSide .addClass(className.animating) .css({ 'top' : box.origin + 'px', 'transform' : 'rotateX(90deg) translateZ(' + box.depth.next + 'px)' }) ; }, below: function() { var box = { origin : (($activeSide.outerHeight(true) - $nextSide.outerHeight(true)) / 2), depth : { active : ($nextSide.outerHeight(true) / 2), next : ($activeSide.outerHeight(true) / 2) } } ; module.verbose('Setting the initial animation position as below', $nextSide, box); $sides .css({ 'transform' : 'translateZ(-' + box.depth.active + 'px)' }) ; $activeSide .css({ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' }) ; $nextSide .addClass(className.animating) .css({ 'top' : box.origin + 'px', 'transform' : 'rotateX(-90deg) translateZ(' + box.depth.next + 'px)' }) ; }, left: function() { var height = { active : $activeSide.outerWidth(true), next : $nextSide.outerWidth(true) }, box = { origin : ( ( height.active - height.next ) / 2), depth : { active : (height.next / 2), next : (height.active / 2) } } ; module.verbose('Setting the initial animation position as left', $nextSide, box); $sides .css({ 'transform' : 'translateZ(-' + box.depth.active + 'px)' }) ; $activeSide .css({ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' }) ; $nextSide .addClass(className.animating) .css({ 'left' : box.origin + 'px', 'transform' : 'rotateY(-90deg) translateZ(' + box.depth.next + 'px)' }) ; }, right: function() { var height = { active : $activeSide.outerWidth(true), next : $nextSide.outerWidth(true) }, box = { origin : ( ( height.active - height.next ) / 2), depth : { active : (height.next / 2), next : (height.active / 2) } } ; module.verbose('Setting the initial animation position as left', $nextSide, box); $sides .css({ 'transform' : 'translateZ(-' + box.depth.active + 'px)' }) ; $activeSide .css({ 'transform' : 'rotateY(0deg) translateZ(' + box.depth.active + 'px)' }) ; $nextSide .addClass(className.animating) .css({ 'left' : box.origin + 'px', 'transform' : 'rotateY(90deg) translateZ(' + box.depth.next + 'px)' }) ; }, behind: function() { var height = { active : $activeSide.outerWidth(true), next : $nextSide.outerWidth(true) }, box = { origin : ( ( height.active - height.next ) / 2), depth : { active : (height.next / 2), next : (height.active / 2) } } ; module.verbose('Setting the initial animation position as behind', $nextSide, box); $activeSide .css({ 'transform' : 'rotateY(0deg)' }) ; $nextSide .addClass(className.animating) .css({ 'left' : box.origin + 'px', 'transform' : 'rotateY(-180deg)' }) ; } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.shape.settings = { // module info name : 'Shape', // debug content outputted to console debug : false, // verbose debug output verbose : false, // performance data output performance: true, // event namespace namespace : 'shape', // callback occurs on side change beforeChange : function() {}, onChange : function() {}, // allow animation to same side allowRepeats: false, // animation duration duration : false, // possible errors error: { side : 'You tried to switch to a side that does not exist.', method : 'The method you called is not defined' }, // classnames used className : { animating : 'animating', hidden : 'hidden', loading : 'loading', active : 'active' }, // selectors used selector : { sides : '.sides', side : '.side' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Sidebar * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.sidebar = function(parameters) { var $allModules = $(this), $window = $(window), $document = $(document), $html = $('html'), $head = $('head'), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.sidebar.settings, parameters) : $.extend({}, $.fn.sidebar.settings), selector = settings.selector, className = settings.className, namespace = settings.namespace, regExp = settings.regExp, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $context = $(settings.context), $sidebars = $module.children(selector.sidebar), $fixed = $context.children(selector.fixed), $pusher = $context.children(selector.pusher), $style, element = this, instance = $module.data(moduleNamespace), elementNamespace, id, currentScroll, transitionEvent, module ; module = { initialize: function() { module.debug('Initializing sidebar', parameters); module.create.id(); transitionEvent = module.get.transitionEvent(); if(module.is.ios()) { module.set.ios(); } // avoids locking rendering if initialized in onReady if(settings.delaySetup) { requestAnimationFrame(module.setup.layout); } else { module.setup.layout(); } requestAnimationFrame(function() { module.setup.cache(); }); module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, create: { id: function() { id = (Math.random().toString(16) + '000000000').substr(2,8); elementNamespace = '.' + id; module.verbose('Creating unique id for element', id); } }, destroy: function() { module.verbose('Destroying previous module for', $module); $module .off(eventNamespace) .removeData(moduleNamespace) ; if(module.is.ios()) { module.remove.ios(); } // bound by uuid $context.off(elementNamespace); $window.off(elementNamespace); $document.off(elementNamespace); }, event: { clickaway: function(event) { var clickedInPusher = ($pusher.find(event.target).length > 0 || $pusher.is(event.target)), clickedContext = ($context.is(event.target)) ; if(clickedInPusher) { module.verbose('User clicked on dimmed page'); module.hide(); } if(clickedContext) { module.verbose('User clicked on dimmable context (scaled out page)'); module.hide(); } }, touch: function(event) { //event.stopPropagation(); }, containScroll: function(event) { if(element.scrollTop <= 0) { element.scrollTop = 1; } if((element.scrollTop + element.offsetHeight) >= element.scrollHeight) { element.scrollTop = element.scrollHeight - element.offsetHeight - 1; } }, scroll: function(event) { if( $(event.target).closest(selector.sidebar).length === 0 ) { event.preventDefault(); } } }, bind: { clickaway: function() { module.verbose('Adding clickaway events to context', $context); if(settings.closable) { $context .on('click' + elementNamespace, module.event.clickaway) .on('touchend' + elementNamespace, module.event.clickaway) ; } }, scrollLock: function() { if(settings.scrollLock) { module.debug('Disabling page scroll'); $window .on('DOMMouseScroll' + elementNamespace, module.event.scroll) ; } module.verbose('Adding events to contain sidebar scroll'); $document .on('touchmove' + elementNamespace, module.event.touch) ; $module .on('scroll' + eventNamespace, module.event.containScroll) ; } }, unbind: { clickaway: function() { module.verbose('Removing clickaway events from context', $context); $context.off(elementNamespace); }, scrollLock: function() { module.verbose('Removing scroll lock from page'); $document.off(elementNamespace); $window.off(elementNamespace); $module.off('scroll' + eventNamespace); } }, add: { inlineCSS: function() { var width = module.cache.width || $module.outerWidth(), height = module.cache.height || $module.outerHeight(), isRTL = module.is.rtl(), direction = module.get.direction(), distance = { left : width, right : -width, top : height, bottom : -height }, style ; if(isRTL){ module.verbose('RTL detected, flipping widths'); distance.left = -width; distance.right = width; } style = '<style>'; if(direction === 'left' || direction === 'right') { module.debug('Adding CSS rules for animation distance', width); style += '' + ' .ui.visible.' + direction + '.sidebar ~ .fixed,' + ' .ui.visible.' + direction + '.sidebar ~ .pusher {' + ' -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);' + ' transform: translate3d('+ distance[direction] + 'px, 0, 0);' + ' }' ; } else if(direction === 'top' || direction == 'bottom') { style += '' + ' .ui.visible.' + direction + '.sidebar ~ .fixed,' + ' .ui.visible.' + direction + '.sidebar ~ .pusher {' + ' -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);' + ' transform: translate3d(0, ' + distance[direction] + 'px, 0);' + ' }' ; } /* IE is only browser not to create context with transforms */ /* https://www.w3.org/Bugs/Public/show_bug.cgi?id=16328 */ if( module.is.ie() ) { if(direction === 'left' || direction === 'right') { module.debug('Adding CSS rules for animation distance', width); style += '' + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {' + ' -webkit-transform: translate3d('+ distance[direction] + 'px, 0, 0);' + ' transform: translate3d('+ distance[direction] + 'px, 0, 0);' + ' }' ; } else if(direction === 'top' || direction == 'bottom') { style += '' + ' body.pushable > .ui.visible.' + direction + '.sidebar ~ .pusher:after {' + ' -webkit-transform: translate3d(0, ' + distance[direction] + 'px, 0);' + ' transform: translate3d(0, ' + distance[direction] + 'px, 0);' + ' }' ; } /* opposite sides visible forces content overlay */ style += '' + ' body.pushable > .ui.visible.left.sidebar ~ .ui.visible.right.sidebar ~ .pusher:after,' + ' body.pushable > .ui.visible.right.sidebar ~ .ui.visible.left.sidebar ~ .pusher:after {' + ' -webkit-transform: translate3d(0px, 0, 0);' + ' transform: translate3d(0px, 0, 0);' + ' }' ; } style += '</style>'; $style = $(style) .appendTo($head) ; module.debug('Adding sizing css to head', $style); } }, refresh: function() { module.verbose('Refreshing selector cache'); $context = $(settings.context); $sidebars = $context.children(selector.sidebar); $pusher = $context.children(selector.pusher); $fixed = $context.children(selector.fixed); module.clear.cache(); }, refreshSidebars: function() { module.verbose('Refreshing other sidebars'); $sidebars = $context.children(selector.sidebar); }, repaint: function() { module.verbose('Forcing repaint event'); element.style.display = 'none'; var ignored = element.offsetHeight; element.scrollTop = element.scrollTop; element.style.display = ''; }, setup: { cache: function() { module.cache = { width : $module.outerWidth(), height : $module.outerHeight(), rtl : ($module.css('direction') == 'rtl') }; }, layout: function() { if( $context.children(selector.pusher).length === 0 ) { module.debug('Adding wrapper element for sidebar'); module.error(error.pusher); $pusher = $('<div class="pusher" />'); $context .children() .not(selector.omitted) .not($sidebars) .wrapAll($pusher) ; module.refresh(); } if($module.nextAll(selector.pusher).length === 0 || $module.nextAll(selector.pusher)[0] !== $pusher[0]) { module.debug('Moved sidebar to correct parent element'); module.error(error.movedSidebar, element); $module.detach().prependTo($context); module.refresh(); } module.clear.cache(); module.set.pushable(); module.set.direction(); } }, attachEvents: function(selector, event) { var $toggle = $(selector) ; event = $.isFunction(module[event]) ? module[event] : module.toggle ; if($toggle.length > 0) { module.debug('Attaching sidebar events to element', selector, event); $toggle .on('click' + eventNamespace, event) ; } else { module.error(error.notFound, selector); } }, show: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if(module.is.hidden()) { module.refreshSidebars(); if(settings.overlay) { module.error(error.overlay); settings.transition = 'overlay'; } module.refresh(); if(module.othersActive()) { module.debug('Other sidebars currently visible'); if(settings.exclusive) { // if not overlay queue animation after hide if(settings.transition != 'overlay') { module.hideOthers(module.show); return; } else { module.hideOthers(); } } else { settings.transition = 'overlay'; } } module.pushPage(function() { callback.call(element); settings.onShow.call(element); }); settings.onChange.call(element); settings.onVisible.call(element); } else { module.debug('Sidebar is already visible'); } }, hide: function(callback) { callback = $.isFunction(callback) ? callback : function(){} ; if(module.is.visible() || module.is.animating()) { module.debug('Hiding sidebar', callback); module.refreshSidebars(); module.pullPage(function() { callback.call(element); settings.onHidden.call(element); }); settings.onChange.call(element); settings.onHide.call(element); } }, othersAnimating: function() { return ($sidebars.not($module).filter('.' + className.animating).length > 0); }, othersVisible: function() { return ($sidebars.not($module).filter('.' + className.visible).length > 0); }, othersActive: function() { return(module.othersVisible() || module.othersAnimating()); }, hideOthers: function(callback) { var $otherSidebars = $sidebars.not($module).filter('.' + className.visible), sidebarCount = $otherSidebars.length, callbackCount = 0 ; callback = callback || function(){}; $otherSidebars .sidebar('hide', function() { callbackCount++; if(callbackCount == sidebarCount) { callback(); } }) ; }, toggle: function() { module.verbose('Determining toggled direction'); if(module.is.hidden()) { module.show(); } else { module.hide(); } }, pushPage: function(callback) { var transition = module.get.transition(), $transition = (transition === 'overlay' || module.othersActive()) ? $module : $pusher, animate, dim, transitionEnd ; callback = $.isFunction(callback) ? callback : function(){} ; if(settings.transition == 'scale down') { module.scrollToTop(); } module.set.transition(transition); module.repaint(); animate = function() { module.bind.clickaway(); module.add.inlineCSS(); module.set.animating(); module.set.visible(); }; dim = function() { module.set.dimmed(); }; transitionEnd = function(event) { if( event.target == $transition[0] ) { $transition.off(transitionEvent + elementNamespace, transitionEnd); module.remove.animating(); module.bind.scrollLock(); callback.call(element); } }; $transition.off(transitionEvent + elementNamespace); $transition.on(transitionEvent + elementNamespace, transitionEnd); requestAnimationFrame(animate); if(settings.dimPage && !module.othersVisible()) { requestAnimationFrame(dim); } }, pullPage: function(callback) { var transition = module.get.transition(), $transition = (transition == 'overlay' || module.othersActive()) ? $module : $pusher, animate, transitionEnd ; callback = $.isFunction(callback) ? callback : function(){} ; module.verbose('Removing context push state', module.get.direction()); module.unbind.clickaway(); module.unbind.scrollLock(); animate = function() { module.set.transition(transition); module.set.animating(); module.remove.visible(); if(settings.dimPage && !module.othersVisible()) { $pusher.removeClass(className.dimmed); } }; transitionEnd = function(event) { if( event.target == $transition[0] ) { $transition.off(transitionEvent + elementNamespace, transitionEnd); module.remove.animating(); module.remove.transition(); module.remove.inlineCSS(); if(transition == 'scale down' || (settings.returnScroll && module.is.mobile()) ) { module.scrollBack(); } callback.call(element); } }; $transition.off(transitionEvent + elementNamespace); $transition.on(transitionEvent + elementNamespace, transitionEnd); requestAnimationFrame(animate); }, scrollToTop: function() { module.verbose('Scrolling to top of page to avoid animation issues'); currentScroll = $(window).scrollTop(); $module.scrollTop(0); window.scrollTo(0, 0); }, scrollBack: function() { module.verbose('Scrolling back to original page position'); window.scrollTo(0, currentScroll); }, clear: { cache: function() { module.verbose('Clearing cached dimensions'); module.cache = {}; } }, set: { // ios only (scroll on html not document). This prevent auto-resize canvas/scroll in ios ios: function() { $html.addClass(className.ios); }, // container pushed: function() { $context.addClass(className.pushed); }, pushable: function() { $context.addClass(className.pushable); }, // pusher dimmed: function() { $pusher.addClass(className.dimmed); }, // sidebar active: function() { $module.addClass(className.active); }, animating: function() { $module.addClass(className.animating); }, transition: function(transition) { transition = transition || module.get.transition(); $module.addClass(transition); }, direction: function(direction) { direction = direction || module.get.direction(); $module.addClass(className[direction]); }, visible: function() { $module.addClass(className.visible); }, overlay: function() { $module.addClass(className.overlay); } }, remove: { inlineCSS: function() { module.debug('Removing inline css styles', $style); if($style && $style.length > 0) { $style.remove(); } }, // ios scroll on html not document ios: function() { $html.removeClass(className.ios); }, // context pushed: function() { $context.removeClass(className.pushed); }, pushable: function() { $context.removeClass(className.pushable); }, // sidebar active: function() { $module.removeClass(className.active); }, animating: function() { $module.removeClass(className.animating); }, transition: function(transition) { transition = transition || module.get.transition(); $module.removeClass(transition); }, direction: function(direction) { direction = direction || module.get.direction(); $module.removeClass(className[direction]); }, visible: function() { $module.removeClass(className.visible); }, overlay: function() { $module.removeClass(className.overlay); } }, get: { direction: function() { if($module.hasClass(className.top)) { return className.top; } else if($module.hasClass(className.right)) { return className.right; } else if($module.hasClass(className.bottom)) { return className.bottom; } return className.left; }, transition: function() { var direction = module.get.direction(), transition ; transition = ( module.is.mobile() ) ? (settings.mobileTransition == 'auto') ? settings.defaultTransition.mobile[direction] : settings.mobileTransition : (settings.transition == 'auto') ? settings.defaultTransition.computer[direction] : settings.transition ; module.verbose('Determined transition', transition); return transition; }, transitionEvent: function() { var element = document.createElement('element'), transitions = { 'transition' :'transitionend', 'OTransition' :'oTransitionEnd', 'MozTransition' :'transitionend', 'WebkitTransition' :'webkitTransitionEnd' }, transition ; for(transition in transitions){ if( element.style[transition] !== undefined ){ return transitions[transition]; } } } }, is: { ie: function() { var isIE11 = (!(window.ActiveXObject) && 'ActiveXObject' in window), isIE = ('ActiveXObject' in window) ; return (isIE11 || isIE); }, ios: function() { var userAgent = navigator.userAgent, isIOS = userAgent.match(regExp.ios), isMobileChrome = userAgent.match(regExp.mobileChrome) ; if(isIOS && !isMobileChrome) { module.verbose('Browser was found to be iOS', userAgent); return true; } else { return false; } }, mobile: function() { var userAgent = navigator.userAgent, isMobile = userAgent.match(regExp.mobile) ; if(isMobile) { module.verbose('Browser was found to be mobile', userAgent); return true; } else { module.verbose('Browser is not mobile, using regular transition', userAgent); return false; } }, hidden: function() { return !module.is.visible(); }, visible: function() { return $module.hasClass(className.visible); }, // alias open: function() { return module.is.visible(); }, closed: function() { return module.is.hidden(); }, vertical: function() { return $module.hasClass(className.top); }, animating: function() { return $context.hasClass(className.animating); }, rtl: function () { if(module.cache.rtl === undefined) { module.cache.rtl = ($module.css('direction') == 'rtl'); } return module.cache.rtl; } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } } ; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { module.invoke('destroy'); } module.initialize(); } }); return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.sidebar.settings = { name : 'Sidebar', namespace : 'sidebar', debug : false, verbose : false, performance : true, transition : 'auto', mobileTransition : 'auto', defaultTransition : { computer: { left : 'uncover', right : 'uncover', top : 'overlay', bottom : 'overlay' }, mobile: { left : 'uncover', right : 'uncover', top : 'overlay', bottom : 'overlay' } }, context : 'body', exclusive : false, closable : true, dimPage : true, scrollLock : false, returnScroll : false, delaySetup : false, duration : 500, onChange : function(){}, onShow : function(){}, onHide : function(){}, onHidden : function(){}, onVisible : function(){}, className : { active : 'active', animating : 'animating', dimmed : 'dimmed', ios : 'ios', pushable : 'pushable', pushed : 'pushed', right : 'right', top : 'top', left : 'left', bottom : 'bottom', visible : 'visible' }, selector: { fixed : '.fixed', omitted : 'script, link, style, .ui.modal, .ui.dimmer, .ui.nag, .ui.fixed', pusher : '.pusher', sidebar : '.ui.sidebar' }, regExp: { ios : /(iPad|iPhone|iPod)/g, mobileChrome : /(CriOS)/g, mobile : /Mobile|iP(hone|od|ad)|Android|BlackBerry|IEMobile|Kindle|NetFront|Silk-Accelerated|(hpw|web)OS|Fennec|Minimo|Opera M(obi|ini)|Blazer|Dolfin|Dolphin|Skyfire|Zune/g }, error : { method : 'The method you called is not defined.', pusher : 'Had to add pusher element. For optimal performance make sure body content is inside a pusher element', movedSidebar : 'Had to move sidebar. For optimal performance make sure sidebar and pusher are direct children of your body tag', overlay : 'The overlay setting is no longer supported, use animation: overlay', notFound : 'There were no elements that matched the specified selector' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Sticky * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.sticky = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.sticky.settings, parameters) : $.extend({}, $.fn.sticky.settings), className = settings.className, namespace = settings.namespace, error = settings.error, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $module = $(this), $window = $(window), $scroll = $(settings.scrollContext), $container, $context, selector = $module.selector || '', instance = $module.data(moduleNamespace), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, element = this, observer, module ; module = { initialize: function() { module.determineContainer(); module.determineContext(); module.verbose('Initializing sticky', settings, $container); module.save.positions(); module.checkErrors(); module.bind.events(); if(settings.observeChanges) { module.observeChanges(); } module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous instance'); module.reset(); if(observer) { observer.disconnect(); } $window .off('load' + eventNamespace, module.event.load) .off('resize' + eventNamespace, module.event.resize) ; $scroll .off('scrollchange' + eventNamespace, module.event.scrollchange) ; $module.removeData(moduleNamespace); }, observeChanges: function() { var context = $context[0] ; if('MutationObserver' in window) { observer = new MutationObserver(function(mutations) { clearTimeout(module.timer); module.timer = setTimeout(function() { module.verbose('DOM tree modified, updating sticky menu', mutations); module.refresh(); }, 100); }); observer.observe(element, { childList : true, subtree : true }); observer.observe(context, { childList : true, subtree : true }); module.debug('Setting up mutation observer', observer); } }, determineContainer: function() { $container = $module.offsetParent(); }, determineContext: function() { if(settings.context) { $context = $(settings.context); } else { $context = $container; } if($context.length === 0) { module.error(error.invalidContext, settings.context, $module); return; } }, checkErrors: function() { if( module.is.hidden() ) { module.error(error.visible, $module); } if(module.cache.element.height > module.cache.context.height) { module.reset(); module.error(error.elementSize, $module); return; } }, bind: { events: function() { $window .on('load' + eventNamespace, module.event.load) .on('resize' + eventNamespace, module.event.resize) ; // pub/sub pattern $scroll .off('scroll' + eventNamespace) .on('scroll' + eventNamespace, module.event.scroll) .on('scrollchange' + eventNamespace, module.event.scrollchange) ; } }, event: { load: function() { module.verbose('Page contents finished loading'); requestAnimationFrame(module.refresh); }, resize: function() { module.verbose('Window resized'); requestAnimationFrame(module.refresh); }, scroll: function() { requestAnimationFrame(function() { $scroll.triggerHandler('scrollchange' + eventNamespace, $scroll.scrollTop() ); }); }, scrollchange: function(event, scrollPosition) { module.stick(scrollPosition); settings.onScroll.call(element); } }, refresh: function(hardRefresh) { module.reset(); if(!settings.context) { module.determineContext(); } if(hardRefresh) { module.determineContainer(); } module.save.positions(); module.stick(); settings.onReposition.call(element); }, supports: { sticky: function() { var $element = $('<div/>'), element = $element[0] ; $element.addClass(className.supported); return($element.css('position').match('sticky')); } }, save: { lastScroll: function(scroll) { module.lastScroll = scroll; }, elementScroll: function(scroll) { module.elementScroll = scroll; }, positions: function() { var scrollContext = { height : $scroll.height() }, element = { margin: { top : parseInt($module.css('margin-top'), 10), bottom : parseInt($module.css('margin-bottom'), 10), }, offset : $module.offset(), width : $module.outerWidth(), height : $module.outerHeight() }, context = { offset : $context.offset(), height : $context.outerHeight() }, container = { height: $container.outerHeight() } ; if( !module.is.standardScroll() ) { module.debug('Non-standard scroll. Removing scroll offset from element offset'); scrollContext.top = $scroll.scrollTop(); scrollContext.left = $scroll.scrollLeft(); element.offset.top += scrollContext.top; context.offset.top += scrollContext.top; element.offset.left += scrollContext.left; context.offset.left += scrollContext.left; } module.cache = { fits : ( element.height < scrollContext.height ), scrollContext : { height : scrollContext.height }, element: { margin : element.margin, top : element.offset.top - element.margin.top, left : element.offset.left, width : element.width, height : element.height, bottom : element.offset.top + element.height }, context: { top : context.offset.top, height : context.height, bottom : context.offset.top + context.height } }; module.set.containerSize(); module.set.size(); module.stick(); module.debug('Caching element positions', module.cache); } }, get: { direction: function(scroll) { var direction = 'down' ; scroll = scroll || $scroll.scrollTop(); if(module.lastScroll !== undefined) { if(module.lastScroll < scroll) { direction = 'down'; } else if(module.lastScroll > scroll) { direction = 'up'; } } return direction; }, scrollChange: function(scroll) { scroll = scroll || $scroll.scrollTop(); return (module.lastScroll) ? (scroll - module.lastScroll) : 0 ; }, currentElementScroll: function() { if(module.elementScroll) { return module.elementScroll; } return ( module.is.top() ) ? Math.abs(parseInt($module.css('top'), 10)) || 0 : Math.abs(parseInt($module.css('bottom'), 10)) || 0 ; }, elementScroll: function(scroll) { scroll = scroll || $scroll.scrollTop(); var element = module.cache.element, scrollContext = module.cache.scrollContext, delta = module.get.scrollChange(scroll), maxScroll = (element.height - scrollContext.height + settings.offset), elementScroll = module.get.currentElementScroll(), possibleScroll = (elementScroll + delta) ; if(module.cache.fits || possibleScroll < 0) { elementScroll = 0; } else if(possibleScroll > maxScroll ) { elementScroll = maxScroll; } else { elementScroll = possibleScroll; } return elementScroll; } }, remove: { lastScroll: function() { delete module.lastScroll; }, elementScroll: function(scroll) { delete module.elementScroll; }, offset: function() { $module.css('margin-top', ''); } }, set: { offset: function() { module.verbose('Setting offset on element', settings.offset); $module .css('margin-top', settings.offset) ; }, containerSize: function() { var tagName = $container.get(0).tagName ; if(tagName === 'HTML' || tagName == 'body') { // this can trigger for too many reasons //module.error(error.container, tagName, $module); module.determineContainer(); } else { if( Math.abs($container.outerHeight() - module.cache.context.height) > settings.jitter) { module.debug('Context has padding, specifying exact height for container', module.cache.context.height); $container.css({ height: module.cache.context.height }); } } }, minimumSize: function() { var element = module.cache.element ; $container .css('min-height', element.height) ; }, scroll: function(scroll) { module.debug('Setting scroll on element', scroll); if(module.elementScroll == scroll) { return; } if( module.is.top() ) { $module .css('bottom', '') .css('top', -scroll) ; } if( module.is.bottom() ) { $module .css('top', '') .css('bottom', scroll) ; } }, size: function() { if(module.cache.element.height !== 0 && module.cache.element.width !== 0) { element.style.setProperty('width', module.cache.element.width + 'px', 'important'); element.style.setProperty('height', module.cache.element.height + 'px', 'important'); } } }, is: { standardScroll: function() { return ($scroll[0] == window); }, top: function() { return $module.hasClass(className.top); }, bottom: function() { return $module.hasClass(className.bottom); }, initialPosition: function() { return (!module.is.fixed() && !module.is.bound()); }, hidden: function() { return (!$module.is(':visible')); }, bound: function() { return $module.hasClass(className.bound); }, fixed: function() { return $module.hasClass(className.fixed); } }, stick: function(scroll) { var cachedPosition = scroll || $scroll.scrollTop(), cache = module.cache, fits = cache.fits, element = cache.element, scrollContext = cache.scrollContext, context = cache.context, offset = (module.is.bottom() && settings.pushing) ? settings.bottomOffset : settings.offset, scroll = { top : cachedPosition + offset, bottom : cachedPosition + offset + scrollContext.height }, direction = module.get.direction(scroll.top), elementScroll = (fits) ? 0 : module.get.elementScroll(scroll.top), // shorthand doesntFit = !fits, elementVisible = (element.height !== 0) ; if(elementVisible) { if( module.is.initialPosition() ) { if(scroll.top >= context.bottom) { module.debug('Initial element position is bottom of container'); module.bindBottom(); } else if(scroll.top > element.top) { if( (element.height + scroll.top - elementScroll) >= context.bottom ) { module.debug('Initial element position is bottom of container'); module.bindBottom(); } else { module.debug('Initial element position is fixed'); module.fixTop(); } } } else if( module.is.fixed() ) { // currently fixed top if( module.is.top() ) { if( scroll.top <= element.top ) { module.debug('Fixed element reached top of container'); module.setInitialPosition(); } else if( (element.height + scroll.top - elementScroll) >= context.bottom ) { module.debug('Fixed element reached bottom of container'); module.bindBottom(); } // scroll element if larger than screen else if(doesntFit) { module.set.scroll(elementScroll); module.save.lastScroll(scroll.top); module.save.elementScroll(elementScroll); } } // currently fixed bottom else if(module.is.bottom() ) { // top edge if( (scroll.bottom - element.height) <= element.top) { module.debug('Bottom fixed rail has reached top of container'); module.setInitialPosition(); } // bottom edge else if(scroll.bottom >= context.bottom) { module.debug('Bottom fixed rail has reached bottom of container'); module.bindBottom(); } // scroll element if larger than screen else if(doesntFit) { module.set.scroll(elementScroll); module.save.lastScroll(scroll.top); module.save.elementScroll(elementScroll); } } } else if( module.is.bottom() ) { if( scroll.top <= element.top ) { module.debug('Jumped from bottom fixed to top fixed, most likely used home/end button'); module.setInitialPosition(); } else { if(settings.pushing) { if(module.is.bound() && scroll.bottom <= context.bottom ) { module.debug('Fixing bottom attached element to bottom of browser.'); module.fixBottom(); } } else { if(module.is.bound() && (scroll.top <= context.bottom - element.height) ) { module.debug('Fixing bottom attached element to top of browser.'); module.fixTop(); } } } } } }, bindTop: function() { module.debug('Binding element to top of parent container'); module.remove.offset(); $module .css({ left : '', top : '', marginBottom : '' }) .removeClass(className.fixed) .removeClass(className.bottom) .addClass(className.bound) .addClass(className.top) ; settings.onTop.call(element); settings.onUnstick.call(element); }, bindBottom: function() { module.debug('Binding element to bottom of parent container'); module.remove.offset(); $module .css({ left : '', top : '' }) .removeClass(className.fixed) .removeClass(className.top) .addClass(className.bound) .addClass(className.bottom) ; settings.onBottom.call(element); settings.onUnstick.call(element); }, setInitialPosition: function() { module.debug('Returning to initial position'); module.unfix(); module.unbind(); }, fixTop: function() { module.debug('Fixing element to top of page'); module.set.minimumSize(); module.set.offset(); $module .css({ left : module.cache.element.left, bottom : '', marginBottom : '' }) .removeClass(className.bound) .removeClass(className.bottom) .addClass(className.fixed) .addClass(className.top) ; settings.onStick.call(element); }, fixBottom: function() { module.debug('Sticking element to bottom of page'); module.set.minimumSize(); module.set.offset(); $module .css({ left : module.cache.element.left, bottom : '', marginBottom : '' }) .removeClass(className.bound) .removeClass(className.top) .addClass(className.fixed) .addClass(className.bottom) ; settings.onStick.call(element); }, unbind: function() { if( module.is.bound() ) { module.debug('Removing container bound position on element'); module.remove.offset(); $module .removeClass(className.bound) .removeClass(className.top) .removeClass(className.bottom) ; } }, unfix: function() { if( module.is.fixed() ) { module.debug('Removing fixed position on element'); module.remove.offset(); $module .removeClass(className.fixed) .removeClass(className.top) .removeClass(className.bottom) ; settings.onUnstick.call(element); } }, reset: function() { module.debug('Reseting elements position'); module.unbind(); module.unfix(); module.resetCSS(); module.remove.offset(); module.remove.lastScroll(); }, resetCSS: function() { $module .css({ width : '', height : '' }) ; $container .css({ height: '' }) ; }, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 0); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.sticky.settings = { name : 'Sticky', namespace : 'sticky', debug : false, verbose : true, performance : true, // whether to stick in the opposite direction on scroll up pushing : false, context : false, // Context to watch scroll events scrollContext : window, // Offset to adjust scroll offset : 0, // Offset to adjust scroll when attached to bottom of screen bottomOffset : 0, jitter : 5, // will only set container height if difference between context and container is larger than this number // Whether to automatically observe changes with Mutation Observers observeChanges : false, // Called when position is recalculated onReposition : function(){}, // Called on each scroll onScroll : function(){}, // Called when element is stuck to viewport onStick : function(){}, // Called when element is unstuck from viewport onUnstick : function(){}, // Called when element reaches top of context onTop : function(){}, // Called when element reaches bottom of context onBottom : function(){}, error : { container : 'Sticky element must be inside a relative container', visible : 'Element is hidden, you must call refresh after element becomes visible', method : 'The method you called is not defined.', invalidContext : 'Context specified does not exist', elementSize : 'Sticky element is larger than its container, cannot create sticky.' }, className : { bound : 'bound', fixed : 'fixed', supported : 'native', top : 'top', bottom : 'bottom' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Tab * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ($, window, document, undefined) { "use strict"; $.fn.tab = function(parameters) { var // use window context if none specified $allModules = $.isFunction(this) ? $(window) : $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), initializedHistory = false, returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.tab.settings, parameters) : $.extend({}, $.fn.tab.settings), className = settings.className, metadata = settings.metadata, selector = settings.selector, error = settings.error, eventNamespace = '.' + settings.namespace, moduleNamespace = 'module-' + settings.namespace, $module = $(this), $context, $tabs, cache = {}, firstLoad = true, recursionDepth = 0, element = this, instance = $module.data(moduleNamespace), activeTabPath, parameterArray, module, historyEvent ; module = { initialize: function() { module.debug('Initializing tab menu item', $module); module.fix.callbacks(); module.determineTabs(); module.debug('Determining tabs', settings.context, $tabs); // set up automatic routing if(settings.auto) { module.set.auto(); } module.bind.events(); if(settings.history && !initializedHistory) { module.initializeHistory(); initializedHistory = true; } module.instantiate(); }, instantiate: function () { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.debug('Destroying tabs', $module); $module .removeData(moduleNamespace) .off(eventNamespace) ; }, bind: { events: function() { // if using $.tab don't add events if( !$.isWindow( element ) ) { module.debug('Attaching tab activation events to element', $module); $module .on('click' + eventNamespace, module.event.click) ; } } }, determineTabs: function() { var $reference ; // determine tab context if(settings.context === 'parent') { if($module.closest(selector.ui).length > 0) { $reference = $module.closest(selector.ui); module.verbose('Using closest UI element as parent', $reference); } else { $reference = $module; } $context = $reference.parent(); module.verbose('Determined parent element for creating context', $context); } else if(settings.context) { $context = $(settings.context); module.verbose('Using selector for tab context', settings.context, $context); } else { $context = $('body'); } // find tabs if(settings.childrenOnly) { $tabs = $context.children(selector.tabs); module.debug('Searching tab context children for tabs', $context, $tabs); } else { $tabs = $context.find(selector.tabs); module.debug('Searching tab context for tabs', $context, $tabs); } }, fix: { callbacks: function() { if( $.isPlainObject(parameters) && (parameters.onTabLoad || parameters.onTabInit) ) { if(parameters.onTabLoad) { parameters.onLoad = parameters.onTabLoad; delete parameters.onTabLoad; module.error(error.legacyLoad, parameters.onLoad); } if(parameters.onTabInit) { parameters.onFirstLoad = parameters.onTabInit; delete parameters.onTabInit; module.error(error.legacyInit, parameters.onFirstLoad); } settings = $.extend(true, {}, $.fn.tab.settings, parameters); } } }, initializeHistory: function() { module.debug('Initializing page state'); if( $.address === undefined ) { module.error(error.state); return false; } else { if(settings.historyType == 'state') { module.debug('Using HTML5 to manage state'); if(settings.path !== false) { $.address .history(true) .state(settings.path) ; } else { module.error(error.path); return false; } } $.address .bind('change', module.event.history.change) ; } }, event: { click: function(event) { var tabPath = $(this).data(metadata.tab) ; if(tabPath !== undefined) { if(settings.history) { module.verbose('Updating page state', event); $.address.value(tabPath); } else { module.verbose('Changing tab', event); module.changeTab(tabPath); } event.preventDefault(); } else { module.debug('No tab specified'); } }, history: { change: function(event) { var tabPath = event.pathNames.join('/') || module.get.initialPath(), pageTitle = settings.templates.determineTitle(tabPath) || false ; module.performance.display(); module.debug('History change event', tabPath, event); historyEvent = event; if(tabPath !== undefined) { module.changeTab(tabPath); } if(pageTitle) { $.address.title(pageTitle); } } } }, refresh: function() { if(activeTabPath) { module.debug('Refreshing tab', activeTabPath); module.changeTab(activeTabPath); } }, cache: { read: function(cacheKey) { return (cacheKey !== undefined) ? cache[cacheKey] : false ; }, add: function(cacheKey, content) { cacheKey = cacheKey || activeTabPath; module.debug('Adding cached content for', cacheKey); cache[cacheKey] = content; }, remove: function(cacheKey) { cacheKey = cacheKey || activeTabPath; module.debug('Removing cached content for', cacheKey); delete cache[cacheKey]; } }, set: { auto: function() { var url = (typeof settings.path == 'string') ? settings.path.replace(/\/$/, '') + '/{$tab}' : '/{$tab}' ; module.verbose('Setting up automatic tab retrieval from server', url); if($.isPlainObject(settings.apiSettings)) { settings.apiSettings.url = url; } else { settings.apiSettings = { url: url }; } }, loading: function(tabPath) { var $tab = module.get.tabElement(tabPath), isLoading = $tab.hasClass(className.loading) ; if(!isLoading) { module.verbose('Setting loading state for', $tab); $tab .addClass(className.loading) .siblings($tabs) .removeClass(className.active + ' ' + className.loading) ; if($tab.length > 0) { settings.onRequest.call($tab[0], tabPath); } } }, state: function(state) { $.address.value(state); } }, changeTab: function(tabPath) { var pushStateAvailable = (window.history && window.history.pushState), shouldIgnoreLoad = (pushStateAvailable && settings.ignoreFirstLoad && firstLoad), remoteContent = (settings.auto || $.isPlainObject(settings.apiSettings) ), // only add default path if not remote content pathArray = (remoteContent && !shouldIgnoreLoad) ? module.utilities.pathToArray(tabPath) : module.get.defaultPathArray(tabPath) ; tabPath = module.utilities.arrayToPath(pathArray); $.each(pathArray, function(index, tab) { var currentPathArray = pathArray.slice(0, index + 1), currentPath = module.utilities.arrayToPath(currentPathArray), isTab = module.is.tab(currentPath), isLastIndex = (index + 1 == pathArray.length), $tab = module.get.tabElement(currentPath), $anchor, nextPathArray, nextPath, isLastTab ; module.verbose('Looking for tab', tab); if(isTab) { module.verbose('Tab was found', tab); // scope up activeTabPath = currentPath; parameterArray = module.utilities.filterArray(pathArray, currentPathArray); if(isLastIndex) { isLastTab = true; } else { nextPathArray = pathArray.slice(0, index + 2); nextPath = module.utilities.arrayToPath(nextPathArray); isLastTab = ( !module.is.tab(nextPath) ); if(isLastTab) { module.verbose('Tab parameters found', nextPathArray); } } if(isLastTab && remoteContent) { if(!shouldIgnoreLoad) { module.activate.navigation(currentPath); module.fetch.content(currentPath, tabPath); } else { module.debug('Ignoring remote content on first tab load', currentPath); firstLoad = false; module.cache.add(tabPath, $tab.html()); module.activate.all(currentPath); settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); } return false; } else { module.debug('Opened local tab', currentPath); module.activate.all(currentPath); if( !module.cache.read(currentPath) ) { module.cache.add(currentPath, true); module.debug('First time tab loaded calling tab init'); settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); } settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); } } else if(tabPath.search('/') == -1 && tabPath !== '') { // look for in page anchor $anchor = $('#' + tabPath + ', a[name="' + tabPath + '"]'); currentPath = $anchor.closest('[data-tab]').data(metadata.tab); $tab = module.get.tabElement(currentPath); // if anchor exists use parent tab if($anchor && $anchor.length > 0 && currentPath) { module.debug('Anchor link used, opening parent tab', $tab, $anchor); if( !$tab.hasClass(className.active) ) { setTimeout(function() { module.scrollTo($anchor); }, 0); } module.activate.all(currentPath); if( !module.cache.read(currentPath) ) { module.cache.add(currentPath, true); module.debug('First time tab loaded calling tab init'); settings.onFirstLoad.call($tab[0], currentPath, parameterArray, historyEvent); } settings.onLoad.call($tab[0], currentPath, parameterArray, historyEvent); return false; } } else { module.error(error.missingTab, $module, $context, currentPath); return false; } }); }, scrollTo: function($element) { var scrollOffset = ($element && $element.length > 0) ? $element.offset().top : false ; if(scrollOffset !== false) { module.debug('Forcing scroll to an in-page link in a hidden tab', scrollOffset, $element); $(document).scrollTop(scrollOffset); } }, update: { content: function(tabPath, html, evaluateScripts) { var $tab = module.get.tabElement(tabPath), tab = $tab[0] ; evaluateScripts = (evaluateScripts !== undefined) ? evaluateScripts : settings.evaluateScripts ; if(evaluateScripts) { module.debug('Updating HTML and evaluating inline scripts', tabPath, html); $tab.html(html); } else { module.debug('Updating HTML', tabPath, html); tab.innerHTML = html; } } }, fetch: { content: function(tabPath, fullTabPath) { var $tab = module.get.tabElement(tabPath), apiSettings = { dataType : 'html', encodeParameters : false, on : 'now', cache : settings.alwaysRefresh, headers : { 'X-Remote': true }, onSuccess : function(response) { module.cache.add(fullTabPath, response); module.update.content(tabPath, response); if(tabPath == activeTabPath) { module.debug('Content loaded', tabPath); module.activate.tab(tabPath); } else { module.debug('Content loaded in background', tabPath); } settings.onFirstLoad.call($tab[0], tabPath, parameterArray, historyEvent); settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent); }, urlData: { tab: fullTabPath } }, request = $tab.api('get request') || false, existingRequest = ( request && request.state() === 'pending' ), requestSettings, cachedContent ; fullTabPath = fullTabPath || tabPath; cachedContent = module.cache.read(fullTabPath); if(settings.cache && cachedContent) { module.activate.tab(tabPath); module.debug('Adding cached content', fullTabPath); if(settings.evaluateScripts == 'once') { module.update.content(tabPath, cachedContent, false); } else { module.update.content(tabPath, cachedContent); } settings.onLoad.call($tab[0], tabPath, parameterArray, historyEvent); } else if(existingRequest) { module.set.loading(tabPath); module.debug('Content is already loading', fullTabPath); } else if($.api !== undefined) { requestSettings = $.extend(true, {}, settings.apiSettings, apiSettings); module.debug('Retrieving remote content', fullTabPath, requestSettings); module.set.loading(tabPath); $tab.api(requestSettings); } else { module.error(error.api); } } }, activate: { all: function(tabPath) { module.activate.tab(tabPath); module.activate.navigation(tabPath); }, tab: function(tabPath) { var $tab = module.get.tabElement(tabPath), isActive = $tab.hasClass(className.active) ; module.verbose('Showing tab content for', $tab); if(!isActive) { $tab .addClass(className.active) .siblings($tabs) .removeClass(className.active + ' ' + className.loading) ; if($tab.length > 0) { settings.onVisible.call($tab[0], tabPath); } } }, navigation: function(tabPath) { var $navigation = module.get.navElement(tabPath), isActive = $navigation.hasClass(className.active) ; module.verbose('Activating tab navigation for', $navigation, tabPath); if(!isActive) { $navigation .addClass(className.active) .siblings($allModules) .removeClass(className.active + ' ' + className.loading) ; } } }, deactivate: { all: function() { module.deactivate.navigation(); module.deactivate.tabs(); }, navigation: function() { $allModules .removeClass(className.active) ; }, tabs: function() { $tabs .removeClass(className.active + ' ' + className.loading) ; } }, is: { tab: function(tabName) { return (tabName !== undefined) ? ( module.get.tabElement(tabName).length > 0 ) : false ; } }, get: { initialPath: function() { return $allModules.eq(0).data(metadata.tab) || $tabs.eq(0).data(metadata.tab); }, path: function() { return $.address.value(); }, // adds default tabs to tab path defaultPathArray: function(tabPath) { return module.utilities.pathToArray( module.get.defaultPath(tabPath) ); }, defaultPath: function(tabPath) { var $defaultNav = $allModules.filter('[data-' + metadata.tab + '^="' + tabPath + '/"]').eq(0), defaultTab = $defaultNav.data(metadata.tab) || false ; if( defaultTab ) { module.debug('Found default tab', defaultTab); if(recursionDepth < settings.maxDepth) { recursionDepth++; return module.get.defaultPath(defaultTab); } module.error(error.recursion); } else { module.debug('No default tabs found for', tabPath, $tabs); } recursionDepth = 0; return tabPath; }, navElement: function(tabPath) { tabPath = tabPath || activeTabPath; return $allModules.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); }, tabElement: function(tabPath) { var $fullPathTab, $simplePathTab, tabPathArray, lastTab ; tabPath = tabPath || activeTabPath; tabPathArray = module.utilities.pathToArray(tabPath); lastTab = module.utilities.last(tabPathArray); $fullPathTab = $tabs.filter('[data-' + metadata.tab + '="' + tabPath + '"]'); $simplePathTab = $tabs.filter('[data-' + metadata.tab + '="' + lastTab + '"]'); return ($fullPathTab.length > 0) ? $fullPathTab : $simplePathTab ; }, tab: function() { return activeTabPath; } }, utilities: { filterArray: function(keepArray, removeArray) { return $.grep(keepArray, function(keepValue) { return ( $.inArray(keepValue, removeArray) == -1); }); }, last: function(array) { return $.isArray(array) ? array[ array.length - 1] : false ; }, pathToArray: function(pathName) { if(pathName === undefined) { pathName = activeTabPath; } return typeof pathName == 'string' ? pathName.split('/') : [pathName] ; }, arrayToPath: function(pathArray) { return $.isArray(pathArray) ? pathArray.join('/') : false ; } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; // shortcut for tabbed content with no defined navigation $.tab = function() { $(window).tab.apply(this, arguments); }; $.fn.tab.settings = { name : 'Tab', namespace : 'tab', debug : false, verbose : false, performance : true, auto : false, // uses pjax style endpoints fetching content from same url with remote-content headers history : false, // use browser history historyType : 'hash', // #/ or html5 state path : false, // base path of url context : false, // specify a context that tabs must appear inside childrenOnly : false, // use only tabs that are children of context maxDepth : 25, // max depth a tab can be nested alwaysRefresh : false, // load tab content new every tab click cache : true, // cache the content requests to pull locally ignoreFirstLoad : false, // don't load remote content on first load apiSettings : false, // settings for api call evaluateScripts : 'once', // whether inline scripts should be parsed (true/false/once). Once will not re-evaluate on cached content onFirstLoad : function(tabPath, parameterArray, historyEvent) {}, // called first time loaded onLoad : function(tabPath, parameterArray, historyEvent) {}, // called on every load onVisible : function(tabPath, parameterArray, historyEvent) {}, // called every time tab visible onRequest : function(tabPath, parameterArray, historyEvent) {}, // called ever time a tab beings loading remote content templates : { determineTitle: function(tabArray) {} // returns page title for path }, error: { api : 'You attempted to load content without API module', method : 'The method you called is not defined', missingTab : 'Activated tab cannot be found. Tabs are case-sensitive.', noContent : 'The tab you specified is missing a content url.', path : 'History enabled, but no path was specified', recursion : 'Max recursive depth reached', legacyInit : 'onTabInit has been renamed to onFirstLoad in 2.0, please adjust your code.', legacyLoad : 'onTabLoad has been renamed to onLoad in 2.0. Please adjust your code', state : 'History requires Asual\'s Address library <https://github.com/asual/jquery-address>' }, metadata : { tab : 'tab', loaded : 'loaded', promise: 'promise' }, className : { loading : 'loading', active : 'active' }, selector : { tabs : '.ui.tab', ui : '.ui' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Transition * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.transition = function() { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], moduleArguments = arguments, query = moduleArguments[0], queryArguments = [].slice.call(arguments, 1), methodInvoked = (typeof query === 'string'), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, returnedValue ; $allModules .each(function(index) { var $module = $(this), element = this, // set at run time settings, instance, error, className, metadata, animationEnd, animationName, namespace, moduleNamespace, eventNamespace, module ; module = { initialize: function() { // get full settings settings = module.get.settings.apply(element, moduleArguments); // shorthand className = settings.className; error = settings.error; metadata = settings.metadata; // define namespace eventNamespace = '.' + settings.namespace; moduleNamespace = 'module-' + settings.namespace; instance = $module.data(moduleNamespace) || module; // get vendor specific events animationEnd = module.get.animationEndEvent(); if(methodInvoked) { methodInvoked = module.invoke(query); } // method not invoked, lets run an animation if(methodInvoked === false) { module.verbose('Converted arguments into settings object', settings); if(settings.interval) { module.delay(settings.animate); } else { module.animate(); } module.instantiate(); } }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, instance) ; }, destroy: function() { module.verbose('Destroying previous module for', element); $module .removeData(moduleNamespace) ; }, refresh: function() { module.verbose('Refreshing display type on next animation'); delete module.displayType; }, forceRepaint: function() { module.verbose('Forcing element repaint'); var $parentElement = $module.parent(), $nextElement = $module.next() ; if($nextElement.length === 0) { $module.detach().appendTo($parentElement); } else { $module.detach().insertBefore($nextElement); } }, repaint: function() { module.verbose('Repainting element'); var fakeAssignment = element.offsetWidth ; }, delay: function(interval) { var direction = module.get.animationDirection(), shouldReverse, delay ; if(!direction) { direction = module.can.transition() ? module.get.direction() : 'static' ; } interval = (interval !== undefined) ? interval : settings.interval ; shouldReverse = (settings.reverse == 'auto' && direction == className.outward); delay = (shouldReverse || settings.reverse == true) ? ($allModules.length - index) * settings.interval : index * settings.interval ; module.debug('Delaying animation by', delay); setTimeout(module.animate, delay); }, animate: function(overrideSettings) { settings = overrideSettings || settings; if(!module.is.supported()) { module.error(error.support); return false; } module.debug('Preparing animation', settings.animation); if(module.is.animating()) { if(settings.queue) { if(!settings.allowRepeats && module.has.direction() && module.is.occurring() && module.queuing !== true) { module.debug('Animation is currently occurring, preventing queueing same animation', settings.animation); } else { module.queue(settings.animation); } return false; } else if(!settings.allowRepeats && module.is.occurring()) { module.debug('Animation is already occurring, will not execute repeated animation', settings.animation); return false; } else { module.debug('New animation started, completing previous early', settings.animation); instance.complete(); } } if( module.can.animate() ) { module.set.animating(settings.animation); } else { module.error(error.noAnimation, settings.animation, element); } }, reset: function() { module.debug('Resetting animation to beginning conditions'); module.remove.animationCallbacks(); module.restore.conditions(); module.remove.animating(); }, queue: function(animation) { module.debug('Queueing animation of', animation); module.queuing = true; $module .one(animationEnd + '.queue' + eventNamespace, function() { module.queuing = false; module.repaint(); module.animate.apply(this, settings); }) ; }, complete: function (event) { module.debug('Animation complete', settings.animation); module.remove.completeCallback(); module.remove.failSafe(); if(!module.is.looping()) { if( module.is.outward() ) { module.verbose('Animation is outward, hiding element'); module.restore.conditions(); module.hide(); } else if( module.is.inward() ) { module.verbose('Animation is outward, showing element'); module.restore.conditions(); module.show(); } else { module.verbose('Static animation completed'); module.restore.conditions(); settings.onComplete.call(element); } } }, force: { visible: function() { var style = $module.attr('style'), userStyle = module.get.userStyle(), displayType = module.get.displayType(), overrideStyle = userStyle + 'display: ' + displayType + ' !important;', currentDisplay = $module.css('display'), emptyStyle = (style === undefined || style === '') ; if(currentDisplay !== displayType) { module.verbose('Overriding default display to show element', displayType); $module .attr('style', overrideStyle) ; } else if(emptyStyle) { $module.removeAttr('style'); } }, hidden: function() { var style = $module.attr('style'), currentDisplay = $module.css('display'), emptyStyle = (style === undefined || style === '') ; if(currentDisplay !== 'none' && !module.is.hidden()) { module.verbose('Overriding default display to hide element'); $module .css('display', 'none') ; } else if(emptyStyle) { $module .removeAttr('style') ; } } }, has: { direction: function(animation) { var hasDirection = false ; animation = animation || settings.animation; if(typeof animation === 'string') { animation = animation.split(' '); $.each(animation, function(index, word){ if(word === className.inward || word === className.outward) { hasDirection = true; } }); } return hasDirection; }, inlineDisplay: function() { var style = $module.attr('style') || '' ; return $.isArray(style.match(/display.*?;/, '')); } }, set: { animating: function(animation) { var animationClass, direction ; // remove previous callbacks module.remove.completeCallback(); // determine exact animation animation = animation || settings.animation; animationClass = module.get.animationClass(animation); // save animation class in cache to restore class names module.save.animation(animationClass); // override display if necessary so animation appears visibly module.force.visible(); module.remove.hidden(); module.remove.direction(); module.start.animation(animationClass); }, duration: function(animationName, duration) { duration = duration || settings.duration; duration = (typeof duration == 'number') ? duration + 'ms' : duration ; if(duration || duration === 0) { module.verbose('Setting animation duration', duration); $module .css({ 'animation-duration': duration }) ; } }, direction: function(direction) { direction = direction || module.get.direction(); if(direction == className.inward) { module.set.inward(); } else { module.set.outward(); } }, looping: function() { module.debug('Transition set to loop'); $module .addClass(className.looping) ; }, hidden: function() { $module .addClass(className.transition) .addClass(className.hidden) ; }, inward: function() { module.debug('Setting direction to inward'); $module .removeClass(className.outward) .addClass(className.inward) ; }, outward: function() { module.debug('Setting direction to outward'); $module .removeClass(className.inward) .addClass(className.outward) ; }, visible: function() { $module .addClass(className.transition) .addClass(className.visible) ; } }, start: { animation: function(animationClass) { animationClass = animationClass || module.get.animationClass(); module.debug('Starting tween', animationClass); $module .addClass(animationClass) .one(animationEnd + '.complete' + eventNamespace, module.complete) ; if(settings.useFailSafe) { module.add.failSafe(); } module.set.duration(settings.duration); settings.onStart.call(element); } }, save: { animation: function(animation) { if(!module.cache) { module.cache = {}; } module.cache.animation = animation; }, displayType: function(displayType) { if(displayType !== 'none') { $module.data(metadata.displayType, displayType); } }, transitionExists: function(animation, exists) { $.fn.transition.exists[animation] = exists; module.verbose('Saving existence of transition', animation, exists); } }, restore: { conditions: function() { var animation = module.get.currentAnimation() ; if(animation) { $module .removeClass(animation) ; module.verbose('Removing animation class', module.cache); } module.remove.duration(); } }, add: { failSafe: function() { var duration = module.get.duration() ; module.timer = setTimeout(function() { $module.triggerHandler(animationEnd); }, duration + settings.failSafeDelay); module.verbose('Adding fail safe timer', module.timer); } }, remove: { animating: function() { $module.removeClass(className.animating); }, animationCallbacks: function() { module.remove.queueCallback(); module.remove.completeCallback(); }, queueCallback: function() { $module.off('.queue' + eventNamespace); }, completeCallback: function() { $module.off('.complete' + eventNamespace); }, display: function() { $module.css('display', ''); }, direction: function() { $module .removeClass(className.inward) .removeClass(className.outward) ; }, duration: function() { $module .css('animation-duration', '') ; }, failSafe: function() { module.verbose('Removing fail safe timer', module.timer); if(module.timer) { clearTimeout(module.timer); } }, hidden: function() { $module.removeClass(className.hidden); }, visible: function() { $module.removeClass(className.visible); }, looping: function() { module.debug('Transitions are no longer looping'); if( module.is.looping() ) { module.reset(); $module .removeClass(className.looping) ; } }, transition: function() { $module .removeClass(className.visible) .removeClass(className.hidden) ; } }, get: { settings: function(animation, duration, onComplete) { // single settings object if(typeof animation == 'object') { return $.extend(true, {}, $.fn.transition.settings, animation); } // all arguments provided else if(typeof onComplete == 'function') { return $.extend({}, $.fn.transition.settings, { animation : animation, onComplete : onComplete, duration : duration }); } // only duration provided else if(typeof duration == 'string' || typeof duration == 'number') { return $.extend({}, $.fn.transition.settings, { animation : animation, duration : duration }); } // duration is actually settings object else if(typeof duration == 'object') { return $.extend({}, $.fn.transition.settings, duration, { animation : animation }); } // duration is actually callback else if(typeof duration == 'function') { return $.extend({}, $.fn.transition.settings, { animation : animation, onComplete : duration }); } // only animation provided else { return $.extend({}, $.fn.transition.settings, { animation : animation }); } return $.fn.transition.settings; }, animationClass: function(animation) { var animationClass = animation || settings.animation, directionClass = (module.can.transition() && !module.has.direction()) ? module.get.direction() + ' ' : '' ; return className.animating + ' ' + className.transition + ' ' + directionClass + animationClass ; }, currentAnimation: function() { return (module.cache && module.cache.animation !== undefined) ? module.cache.animation : false ; }, currentDirection: function() { return module.is.inward() ? className.inward : className.outward ; }, direction: function() { return module.is.hidden() || !module.is.visible() ? className.inward : className.outward ; }, animationDirection: function(animation) { var direction ; animation = animation || settings.animation; if(typeof animation === 'string') { animation = animation.split(' '); // search animation name for out/in class $.each(animation, function(index, word){ if(word === className.inward) { direction = className.inward; } else if(word === className.outward) { direction = className.outward; } }); } // return found direction if(direction) { return direction; } return false; }, duration: function(duration) { duration = duration || settings.duration; if(duration === false) { duration = $module.css('animation-duration') || 0; } return (typeof duration === 'string') ? (duration.indexOf('ms') > -1) ? parseFloat(duration) : parseFloat(duration) * 1000 : duration ; }, displayType: function() { if(settings.displayType) { return settings.displayType; } if($module.data(metadata.displayType) === undefined) { // create fake element to determine display state module.can.transition(true); } return $module.data(metadata.displayType); }, userStyle: function(style) { style = style || $module.attr('style') || ''; return style.replace(/display.*?;/, ''); }, transitionExists: function(animation) { return $.fn.transition.exists[animation]; }, animationStartEvent: function() { var element = document.createElement('div'), animations = { 'animation' :'animationstart', 'OAnimation' :'oAnimationStart', 'MozAnimation' :'mozAnimationStart', 'WebkitAnimation' :'webkitAnimationStart' }, animation ; for(animation in animations){ if( element.style[animation] !== undefined ){ return animations[animation]; } } return false; }, animationEndEvent: function() { var element = document.createElement('div'), animations = { 'animation' :'animationend', 'OAnimation' :'oAnimationEnd', 'MozAnimation' :'mozAnimationEnd', 'WebkitAnimation' :'webkitAnimationEnd' }, animation ; for(animation in animations){ if( element.style[animation] !== undefined ){ return animations[animation]; } } return false; } }, can: { transition: function(forced) { var animation = settings.animation, transitionExists = module.get.transitionExists(animation), elementClass, tagName, $clone, currentAnimation, inAnimation, directionExists, displayType ; if( transitionExists === undefined || forced) { module.verbose('Determining whether animation exists'); elementClass = $module.attr('class'); tagName = $module.prop('tagName'); $clone = $('<' + tagName + ' />').addClass( elementClass ).insertAfter($module); currentAnimation = $clone .addClass(animation) .removeClass(className.inward) .removeClass(className.outward) .addClass(className.animating) .addClass(className.transition) .css('animationName') ; inAnimation = $clone .addClass(className.inward) .css('animationName') ; displayType = $clone .attr('class', elementClass) .removeAttr('style') .removeClass(className.hidden) .removeClass(className.visible) .show() .css('display') ; module.verbose('Determining final display state', displayType); module.save.displayType(displayType); $clone.remove(); if(currentAnimation != inAnimation) { module.debug('Direction exists for animation', animation); directionExists = true; } else if(currentAnimation == 'none' || !currentAnimation) { module.debug('No animation defined in css', animation); return; } else { module.debug('Static animation found', animation, displayType); directionExists = false; } module.save.transitionExists(animation, directionExists); } return (transitionExists !== undefined) ? transitionExists : directionExists ; }, animate: function() { // can transition does not return a value if animation does not exist return (module.can.transition() !== undefined); } }, is: { animating: function() { return $module.hasClass(className.animating); }, inward: function() { return $module.hasClass(className.inward); }, outward: function() { return $module.hasClass(className.outward); }, looping: function() { return $module.hasClass(className.looping); }, occurring: function(animation) { animation = animation || settings.animation; animation = '.' + animation.replace(' ', '.'); return ( $module.filter(animation).length > 0 ); }, visible: function() { return $module.is(':visible'); }, hidden: function() { return $module.css('visibility') === 'hidden'; }, supported: function() { return(animationEnd !== false); } }, hide: function() { module.verbose('Hiding element'); if( module.is.animating() ) { module.reset(); } element.blur(); // IE will trigger focus change if element is not blurred before hiding module.remove.display(); module.remove.visible(); module.set.hidden(); module.force.hidden(); settings.onHide.call(element); settings.onComplete.call(element); // module.repaint(); }, show: function(display) { module.verbose('Showing element', display); module.remove.hidden(); module.set.visible(); module.force.visible(); settings.onShow.call(element); settings.onComplete.call(element); // module.repaint(); }, toggle: function() { if( module.is.visible() ) { module.hide(); } else { module.show(); } }, stop: function() { module.debug('Stopping current animation'); $module.triggerHandler(animationEnd); }, stopAll: function() { module.debug('Stopping all animation'); module.remove.queueCallback(); $module.triggerHandler(animationEnd); }, clear: { queue: function() { module.debug('Clearing animation queue'); module.remove.queueCallback(); } }, enable: function() { module.verbose('Starting animation'); $module.removeClass(className.disabled); }, disable: function() { module.debug('Stopping animation'); $module.addClass(className.disabled); }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if($allModules.length > 1) { title += ' ' + '(' + $allModules.length + ')'; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, // modified for transition to return invoke success invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return (found !== undefined) ? found : false ; } }; module.initialize(); }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; // Records if CSS transition is available $.fn.transition.exists = {}; $.fn.transition.settings = { // module info name : 'Transition', // debug content outputted to console debug : false, // verbose debug output verbose : false, // performance data output performance : true, // event namespace namespace : 'transition', // delay between animations in group interval : 0, // whether group animations should be reversed reverse : 'auto', // animation callback event onStart : function() {}, onComplete : function() {}, onShow : function() {}, onHide : function() {}, // whether timeout should be used to ensure callback fires in cases animationend does not useFailSafe : true, // delay in ms for fail safe failSafeDelay : 100, // whether EXACT animation can occur twice in a row allowRepeats : false, // Override final display type on visible displayType : false, // animation duration animation : 'fade', duration : false, // new animations will occur after previous ones queue : true, metadata : { displayType: 'display' }, className : { animating : 'animating', disabled : 'disabled', hidden : 'hidden', inward : 'in', loading : 'loading', looping : 'looping', outward : 'out', transition : 'transition', visible : 'visible' }, // possible errors error: { noAnimation : 'Element is no longer attached to DOM. Unable to animate.', repeated : 'That animation is already occurring, cancelling repeated animation', method : 'The method you called is not defined', support : 'This browser does not support CSS animations' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - API * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.api = $.fn.api = function(parameters) { var // use window context if none specified $allModules = $.isFunction(this) ? $(window) : $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.api.settings, parameters) : $.extend({}, $.fn.api.settings), // internal aliases namespace = settings.namespace, metadata = settings.metadata, selector = settings.selector, error = settings.error, className = settings.className, // define namespaces for modules eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, // element that creates request $module = $(this), $form = $module.closest(selector.form), // context used for state $context = (settings.stateContext) ? $(settings.stateContext) : $module, // request details ajaxSettings, requestSettings, url, data, requestStartTime, // standard module element = this, context = $context[0], instance = $module.data(moduleNamespace), module ; module = { initialize: function() { if(!methodInvoked) { module.bind.events(); } module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, instance) ; }, destroy: function() { module.verbose('Destroying previous module for', element); $module .removeData(moduleNamespace) .off(eventNamespace) ; }, bind: { events: function() { var triggerEvent = module.get.event() ; if( triggerEvent ) { module.verbose('Attaching API events to element', triggerEvent); $module .on(triggerEvent + eventNamespace, module.event.trigger) ; } else if(settings.on == 'now') { module.debug('Querying API endpoint immediately'); module.query(); } } }, decode: { json: function(response) { if(response !== undefined && typeof response == 'string') { try { response = JSON.parse(response); } catch(e) { // isnt json string } } return response; } }, read: { cachedResponse: function(url) { var response ; if(window.Storage === undefined) { module.error(error.noStorage); return; } response = sessionStorage.getItem(url); module.debug('Using cached response', url, response); response = module.decode.json(response); return false; } }, write: { cachedResponse: function(url, response) { if(response && response === '') { module.debug('Response empty, not caching', response); return; } if(window.Storage === undefined) { module.error(error.noStorage); return; } if( $.isPlainObject(response) ) { response = JSON.stringify(response); } sessionStorage.setItem(url, response); module.verbose('Storing cached response for url', url, response); } }, query: function() { if(module.is.disabled()) { module.debug('Element is disabled API request aborted'); return; } if(module.is.loading()) { if(settings.interruptRequests) { module.debug('Interrupting previous request'); module.abort(); } else { module.debug('Cancelling request, previous request is still pending'); return; } } // pass element metadata to url (value, text) if(settings.defaultData) { $.extend(true, settings.urlData, module.get.defaultData()); } // Add form content if(settings.serializeForm) { settings.data = module.add.formData(settings.data); } // call beforesend and get any settings changes requestSettings = module.get.settings(); // check if before send cancelled request if(requestSettings === false) { module.cancelled = true; module.error(error.beforeSend); return; } else { module.cancelled = false; } // get url url = module.get.templatedURL(); if(!url && !module.is.mocked()) { module.error(error.missingURL); return; } // replace variables url = module.add.urlData( url ); // missing url parameters if( !url && !module.is.mocked()) { return; } requestSettings.url = settings.base + url; // look for jQuery ajax parameters in settings ajaxSettings = $.extend(true, {}, settings, { type : settings.method || settings.type, data : data, url : settings.base + url, beforeSend : settings.beforeXHR, success : function() {}, failure : function() {}, complete : function() {} }); module.debug('Querying URL', ajaxSettings.url); module.verbose('Using AJAX settings', ajaxSettings); if(settings.cache === 'local' && module.read.cachedResponse(url)) { module.debug('Response returned from local cache'); module.request = module.create.request(); module.request.resolveWith(context, [ module.read.cachedResponse(url) ]); return; } if( !settings.throttle ) { module.debug('Sending request', data, ajaxSettings.method); module.send.request(); } else { if(!settings.throttleFirstRequest && !module.timer) { module.debug('Sending request', data, ajaxSettings.method); module.send.request(); module.timer = setTimeout(function(){}, settings.throttle); } else { module.debug('Throttling request', settings.throttle); clearTimeout(module.timer); module.timer = setTimeout(function() { if(module.timer) { delete module.timer; } module.debug('Sending throttled request', data, ajaxSettings.method); module.send.request(); }, settings.throttle); } } }, should: { removeError: function() { return ( settings.hideError === true || (settings.hideError === 'auto' && !module.is.form()) ); } }, is: { disabled: function() { return ($module.filter(selector.disabled).length > 0); }, form: function() { return $module.is('form') || $context.is('form'); }, mocked: function() { return (settings.mockResponse || settings.mockResponseAsync || settings.response || settings.responseAsync); }, input: function() { return $module.is('input'); }, loading: function() { return (module.request && module.request.state() == 'pending'); }, abortedRequest: function(xhr) { if(xhr && xhr.readyState !== undefined && xhr.readyState === 0) { module.verbose('XHR request determined to be aborted'); return true; } else { module.verbose('XHR request was not aborted'); return false; } }, validResponse: function(response) { if( (settings.dataType !== 'json' && settings.dataType !== 'jsonp') || !$.isFunction(settings.successTest) ) { module.verbose('Response is not JSON, skipping validation', settings.successTest, response); return true; } module.debug('Checking JSON returned success', settings.successTest, response); if( settings.successTest(response) ) { module.debug('Response passed success test', response); return true; } else { module.debug('Response failed success test', response); return false; } } }, was: { cancelled: function() { return (module.cancelled || false); }, succesful: function() { return (module.request && module.request.state() == 'resolved'); }, failure: function() { return (module.request && module.request.state() == 'rejected'); }, complete: function() { return (module.request && (module.request.state() == 'resolved' || module.request.state() == 'rejected') ); } }, add: { urlData: function(url, urlData) { var requiredVariables, optionalVariables ; if(url) { requiredVariables = url.match(settings.regExp.required); optionalVariables = url.match(settings.regExp.optional); urlData = urlData || settings.urlData; if(requiredVariables) { module.debug('Looking for required URL variables', requiredVariables); $.each(requiredVariables, function(index, templatedString) { var // allow legacy {$var} style variable = (templatedString.indexOf('$') !== -1) ? templatedString.substr(2, templatedString.length - 3) : templatedString.substr(1, templatedString.length - 2), value = ($.isPlainObject(urlData) && urlData[variable] !== undefined) ? urlData[variable] : ($module.data(variable) !== undefined) ? $module.data(variable) : ($context.data(variable) !== undefined) ? $context.data(variable) : urlData[variable] ; // remove value if(value === undefined) { module.error(error.requiredParameter, variable, url); url = false; return false; } else { module.verbose('Found required variable', variable, value); value = (settings.encodeParameters) ? module.get.urlEncodedValue(value) : value ; url = url.replace(templatedString, value); } }); } if(optionalVariables) { module.debug('Looking for optional URL variables', requiredVariables); $.each(optionalVariables, function(index, templatedString) { var // allow legacy {/$var} style variable = (templatedString.indexOf('$') !== -1) ? templatedString.substr(3, templatedString.length - 4) : templatedString.substr(2, templatedString.length - 3), value = ($.isPlainObject(urlData) && urlData[variable] !== undefined) ? urlData[variable] : ($module.data(variable) !== undefined) ? $module.data(variable) : ($context.data(variable) !== undefined) ? $context.data(variable) : urlData[variable] ; // optional replacement if(value !== undefined) { module.verbose('Optional variable Found', variable, value); url = url.replace(templatedString, value); } else { module.verbose('Optional variable not found', variable); // remove preceding slash if set if(url.indexOf('/' + templatedString) !== -1) { url = url.replace('/' + templatedString, ''); } else { url = url.replace(templatedString, ''); } } }); } } return url; }, formData: function(data) { var canSerialize = ($.fn.serializeObject !== undefined), formData = (canSerialize) ? $form.serializeObject() : $form.serialize(), hasOtherData ; data = data || settings.data; hasOtherData = $.isPlainObject(data); if(hasOtherData) { if(canSerialize) { module.debug('Extending existing data with form data', data, formData); data = $.extend(true, {}, data, formData); } else { module.error(error.missingSerialize); module.debug('Cant extend data. Replacing data with form data', data, formData); data = formData; } } else { module.debug('Adding form data', formData); data = formData; } return data; } }, send: { request: function() { module.set.loading(); module.request = module.create.request(); if( module.is.mocked() ) { module.mockedXHR = module.create.mockedXHR(); } else { module.xhr = module.create.xhr(); } settings.onRequest.call(context, module.request, module.xhr); } }, event: { trigger: function(event) { module.query(); if(event.type == 'submit' || event.type == 'click') { event.preventDefault(); } }, xhr: { always: function() { // nothing special }, done: function(response, textStatus, xhr) { var context = this, elapsedTime = (new Date().getTime() - requestStartTime), timeLeft = (settings.loadingDuration - elapsedTime), translatedResponse = ( $.isFunction(settings.onResponse) ) ? settings.onResponse.call(context, $.extend(true, {}, response)) : false ; timeLeft = (timeLeft > 0) ? timeLeft : 0 ; if(translatedResponse) { module.debug('Modified API response in onResponse callback', settings.onResponse, translatedResponse, response); response = translatedResponse; } if(timeLeft > 0) { module.debug('Response completed early delaying state change by', timeLeft); } setTimeout(function() { if( module.is.validResponse(response) ) { module.request.resolveWith(context, [response, xhr]); } else { module.request.rejectWith(context, [xhr, 'invalid']); } }, timeLeft); }, fail: function(xhr, status, httpMessage) { var context = this, elapsedTime = (new Date().getTime() - requestStartTime), timeLeft = (settings.loadingDuration - elapsedTime) ; timeLeft = (timeLeft > 0) ? timeLeft : 0 ; if(timeLeft > 0) { module.debug('Response completed early delaying state change by', timeLeft); } setTimeout(function() { if( module.is.abortedRequest(xhr) ) { module.request.rejectWith(context, [xhr, 'aborted', httpMessage]); } else { module.request.rejectWith(context, [xhr, 'error', status, httpMessage]); } }, timeLeft); } }, request: { done: function(response, xhr) { module.debug('Successful API Response', response); if(settings.cache === 'local' && url) { module.write.cachedResponse(url, response); module.debug('Saving server response locally', module.cache); } settings.onSuccess.call(context, response, $module, xhr); }, complete: function(firstParameter, secondParameter) { var xhr, response ; // have to guess callback parameters based on request success if( module.was.succesful() ) { response = firstParameter; xhr = secondParameter; } else { xhr = firstParameter; response = module.get.responseFromXHR(xhr); } module.remove.loading(); settings.onComplete.call(context, response, $module, xhr); }, fail: function(xhr, status, httpMessage) { var // pull response from xhr if available response = module.get.responseFromXHR(xhr), errorMessage = module.get.errorFromRequest(response, status, httpMessage) ; if(status == 'aborted') { module.debug('XHR Aborted (Most likely caused by page navigation or CORS Policy)', status, httpMessage); settings.onAbort.call(context, status, $module, xhr); } else if(status == 'invalid') { module.debug('JSON did not pass success test. A server-side error has most likely occurred', response); } else if(status == 'error') { if(xhr !== undefined) { module.debug('XHR produced a server error', status, httpMessage); // make sure we have an error to display to console if( xhr.status != 200 && httpMessage !== undefined && httpMessage !== '') { module.error(error.statusMessage + httpMessage, ajaxSettings.url); } settings.onError.call(context, errorMessage, $module, xhr); } } if(settings.errorDuration && status !== 'aborted') { module.debug('Adding error state'); module.set.error(); if( module.should.removeError() ) { setTimeout(module.remove.error, settings.errorDuration); } } module.debug('API Request failed', errorMessage, xhr); settings.onFailure.call(context, response, $module, xhr); } } }, create: { request: function() { // api request promise return $.Deferred() .always(module.event.request.complete) .done(module.event.request.done) .fail(module.event.request.fail) ; }, mockedXHR: function () { var // xhr does not simulate these properties of xhr but must return them textStatus = false, status = false, httpMessage = false, responder = settings.mockResponse || settings.response, asyncResponder = settings.mockResponseAsync || settings.responseAsync, asyncCallback, response, mockedXHR ; mockedXHR = $.Deferred() .always(module.event.xhr.complete) .done(module.event.xhr.done) .fail(module.event.xhr.fail) ; if(responder) { if( $.isFunction(responder) ) { module.debug('Using specified synchronous callback', responder); response = responder.call(context, requestSettings); } else { module.debug('Using settings specified response', responder); response = responder; } // simulating response mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]); } else if( $.isFunction(asyncResponder) ) { asyncCallback = function(response) { module.debug('Async callback returned response', response); if(response) { mockedXHR.resolveWith(context, [ response, textStatus, { responseText: response }]); } else { mockedXHR.rejectWith(context, [{ responseText: response }, status, httpMessage]); } }; module.debug('Using specified async response callback', asyncResponder); asyncResponder.call(context, requestSettings, asyncCallback); } return mockedXHR; }, xhr: function() { var xhr ; // ajax request promise xhr = $.ajax(ajaxSettings) .always(module.event.xhr.always) .done(module.event.xhr.done) .fail(module.event.xhr.fail) ; module.verbose('Created server request', xhr); return xhr; } }, set: { error: function() { module.verbose('Adding error state to element', $context); $context.addClass(className.error); }, loading: function() { module.verbose('Adding loading state to element', $context); $context.addClass(className.loading); requestStartTime = new Date().getTime(); } }, remove: { error: function() { module.verbose('Removing error state from element', $context); $context.removeClass(className.error); }, loading: function() { module.verbose('Removing loading state from element', $context); $context.removeClass(className.loading); } }, get: { responseFromXHR: function(xhr) { return $.isPlainObject(xhr) ? (settings.dataType == 'json' || settings.dataType == 'jsonp') ? module.decode.json(xhr.responseText) : xhr.responseText : false ; }, errorFromRequest: function(response, status, httpMessage) { return ($.isPlainObject(response) && response.error !== undefined) ? response.error // use json error message : (settings.error[status] !== undefined) // use server error message ? settings.error[status] : httpMessage ; }, request: function() { return module.request || false; }, xhr: function() { return module.xhr || false; }, settings: function() { var runSettings ; runSettings = settings.beforeSend.call(context, settings); if(runSettings) { if(runSettings.success !== undefined) { module.debug('Legacy success callback detected', runSettings); module.error(error.legacyParameters, runSettings.success); runSettings.onSuccess = runSettings.success; } if(runSettings.failure !== undefined) { module.debug('Legacy failure callback detected', runSettings); module.error(error.legacyParameters, runSettings.failure); runSettings.onFailure = runSettings.failure; } if(runSettings.complete !== undefined) { module.debug('Legacy complete callback detected', runSettings); module.error(error.legacyParameters, runSettings.complete); runSettings.onComplete = runSettings.complete; } } if(runSettings === undefined) { module.error(error.noReturnedValue); } return (runSettings !== undefined) ? $.extend(true, {}, runSettings) : $.extend(true, {}, settings) ; }, urlEncodedValue: function(value) { var decodedValue = window.decodeURIComponent(value), encodedValue = window.encodeURIComponent(value), alreadyEncoded = (decodedValue !== value) ; if(alreadyEncoded) { module.debug('URL value is already encoded, avoiding double encoding', value); return value; } module.verbose('Encoding value using encodeURIComponent', value, encodedValue); return encodedValue; }, defaultData: function() { var data = {} ; if( !$.isWindow(element) ) { if( module.is.input() ) { data.value = $module.val(); } else if( !module.is.form() ) { } else { data.text = $module.text(); } } return data; }, event: function() { if( $.isWindow(element) || settings.on == 'now' ) { module.debug('API called without element, no events attached'); return false; } else if(settings.on == 'auto') { if( $module.is('input') ) { return (element.oninput !== undefined) ? 'input' : (element.onpropertychange !== undefined) ? 'propertychange' : 'keyup' ; } else if( $module.is('form') ) { return 'submit'; } else { return 'click'; } } else { return settings.on; } }, templatedURL: function(action) { action = action || $module.data(metadata.action) || settings.action || false; url = $module.data(metadata.url) || settings.url || false; if(url) { module.debug('Using specified url', url); return url; } if(action) { module.debug('Looking up url for action', action, settings.api); if(settings.api[action] === undefined && !module.is.mocked()) { module.error(error.missingAction, settings.action, settings.api); return; } url = settings.api[action]; } else if( module.is.form() ) { url = $module.attr('action') || $context.attr('action') || false; module.debug('No url or action specified, defaulting to form action', url); } return url; } }, abort: function() { var xhr = module.get.xhr() ; if( xhr && xhr.state() !== 'resolved') { module.debug('Cancelling API request'); xhr.abort(); } }, // reset state reset: function() { module.remove.error(); module.remove.loading(); }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', //'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.api.settings = { name : 'API', namespace : 'api', debug : false, verbose : false, performance : true, // object containing all templates endpoints api : {}, // whether to cache responses cache : true, // whether new requests should abort previous requests interruptRequests : true, // event binding on : 'auto', // context for applying state classes stateContext : false, // duration for loading state loadingDuration : 0, // whether to hide errors after a period of time hideError : 'auto', // duration for error state errorDuration : 2000, // whether parameters should be encoded with encodeURIComponent encodeParameters : true, // API action to use action : false, // templated URL to use url : false, // base URL to apply to all endpoints base : '', // data that will urlData : {}, // whether to add default data to url data defaultData : true, // whether to serialize closest form serializeForm : false, // how long to wait before request should occur throttle : 0, // whether to throttle first request or only repeated throttleFirstRequest : true, // standard ajax settings method : 'get', data : {}, dataType : 'json', // mock response mockResponse : false, mockResponseAsync : false, // aliases for mock response : false, responseAsync : false, // callbacks before request beforeSend : function(settings) { return settings; }, beforeXHR : function(xhr) {}, onRequest : function(promise, xhr) {}, // after request onResponse : false, // function(response) { }, // response was successful, if JSON passed validation onSuccess : function(response, $module) {}, // request finished without aborting onComplete : function(response, $module) {}, // failed JSON success test onFailure : function(response, $module) {}, // server error onError : function(errorMessage, $module) {}, // request aborted onAbort : function(errorMessage, $module) {}, successTest : false, // errors error : { beforeSend : 'The before send function has aborted the request', error : 'There was an error with your request', exitConditions : 'API Request Aborted. Exit conditions met', JSONParse : 'JSON could not be parsed during error handling', legacyParameters : 'You are using legacy API success callback names', method : 'The method you called is not defined', missingAction : 'API action used but no url was defined', missingSerialize : 'jquery-serialize-object is required to add form data to an existing data object', missingURL : 'No URL specified for api event', noReturnedValue : 'The beforeSend callback must return a settings object, beforeSend ignored.', noStorage : 'Caching responses locally requires session storage', parseError : 'There was an error parsing your request', requiredParameter : 'Missing a required URL parameter: ', statusMessage : 'Server gave an error: ', timeout : 'Your request timed out' }, regExp : { required : /\{\$*[A-z0-9]+\}/g, optional : /\{\/\$*[A-z0-9]+\}/g, }, className: { loading : 'loading', error : 'error' }, selector: { disabled : '.disabled', form : 'form' }, metadata: { action : 'action', url : 'url' } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - State * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.state = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', hasTouch = ('ontouchstart' in document.documentElement), time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.state.settings, parameters) : $.extend({}, $.fn.state.settings), error = settings.error, metadata = settings.metadata, className = settings.className, namespace = settings.namespace, states = settings.states, text = settings.text, eventNamespace = '.' + namespace, moduleNamespace = namespace + '-module', $module = $(this), element = this, instance = $module.data(moduleNamespace), module ; module = { initialize: function() { module.verbose('Initializing module'); // allow module to guess desired state based on element if(settings.automatic) { module.add.defaults(); } // bind events with delegated events if(settings.context && moduleSelector !== '') { $(settings.context) .on(moduleSelector, 'mouseenter' + eventNamespace, module.change.text) .on(moduleSelector, 'mouseleave' + eventNamespace, module.reset.text) .on(moduleSelector, 'click' + eventNamespace, module.toggle.state) ; } else { $module .on('mouseenter' + eventNamespace, module.change.text) .on('mouseleave' + eventNamespace, module.reset.text) .on('click' + eventNamespace, module.toggle.state) ; } module.instantiate(); }, instantiate: function() { module.verbose('Storing instance of module', module); instance = module; $module .data(moduleNamespace, module) ; }, destroy: function() { module.verbose('Destroying previous module', instance); $module .off(eventNamespace) .removeData(moduleNamespace) ; }, refresh: function() { module.verbose('Refreshing selector cache'); $module = $(element); }, add: { defaults: function() { var userStates = parameters && $.isPlainObject(parameters.states) ? parameters.states : {} ; $.each(settings.defaults, function(type, typeStates) { if( module.is[type] !== undefined && module.is[type]() ) { module.verbose('Adding default states', type, element); $.extend(settings.states, typeStates, userStates); } }); } }, is: { active: function() { return $module.hasClass(className.active); }, loading: function() { return $module.hasClass(className.loading); }, inactive: function() { return !( $module.hasClass(className.active) ); }, state: function(state) { if(className[state] === undefined) { return false; } return $module.hasClass( className[state] ); }, enabled: function() { return !( $module.is(settings.filter.active) ); }, disabled: function() { return ( $module.is(settings.filter.active) ); }, textEnabled: function() { return !( $module.is(settings.filter.text) ); }, // definitions for automatic type detection button: function() { return $module.is('.button:not(a, .submit)'); }, input: function() { return $module.is('input'); }, progress: function() { return $module.is('.ui.progress'); } }, allow: function(state) { module.debug('Now allowing state', state); states[state] = true; }, disallow: function(state) { module.debug('No longer allowing', state); states[state] = false; }, allows: function(state) { return states[state] || false; }, enable: function() { $module.removeClass(className.disabled); }, disable: function() { $module.addClass(className.disabled); }, setState: function(state) { if(module.allows(state)) { $module.addClass( className[state] ); } }, removeState: function(state) { if(module.allows(state)) { $module.removeClass( className[state] ); } }, toggle: { state: function() { var apiRequest, requestCancelled ; if( module.allows('active') && module.is.enabled() ) { module.refresh(); if($.fn.api !== undefined) { apiRequest = $module.api('get request'); requestCancelled = $module.api('was cancelled'); if( requestCancelled ) { module.debug('API Request cancelled by beforesend'); settings.activateTest = function(){ return false; }; settings.deactivateTest = function(){ return false; }; } else if(apiRequest) { module.listenTo(apiRequest); return; } } module.change.state(); } } }, listenTo: function(apiRequest) { module.debug('API request detected, waiting for state signal', apiRequest); if(apiRequest) { if(text.loading) { module.update.text(text.loading); } $.when(apiRequest) .then(function() { if(apiRequest.state() == 'resolved') { module.debug('API request succeeded'); settings.activateTest = function(){ return true; }; settings.deactivateTest = function(){ return true; }; } else { module.debug('API request failed'); settings.activateTest = function(){ return false; }; settings.deactivateTest = function(){ return false; }; } module.change.state(); }) ; } }, // checks whether active/inactive state can be given change: { state: function() { module.debug('Determining state change direction'); // inactive to active change if( module.is.inactive() ) { module.activate(); } else { module.deactivate(); } if(settings.sync) { module.sync(); } settings.onChange.call(element); }, text: function() { if( module.is.textEnabled() ) { if(module.is.disabled() ) { module.verbose('Changing text to disabled text', text.hover); module.update.text(text.disabled); } else if( module.is.active() ) { if(text.hover) { module.verbose('Changing text to hover text', text.hover); module.update.text(text.hover); } else if(text.deactivate) { module.verbose('Changing text to deactivating text', text.deactivate); module.update.text(text.deactivate); } } else { if(text.hover) { module.verbose('Changing text to hover text', text.hover); module.update.text(text.hover); } else if(text.activate){ module.verbose('Changing text to activating text', text.activate); module.update.text(text.activate); } } } } }, activate: function() { if( settings.activateTest.call(element) ) { module.debug('Setting state to active'); $module .addClass(className.active) ; module.update.text(text.active); settings.onActivate.call(element); } }, deactivate: function() { if( settings.deactivateTest.call(element) ) { module.debug('Setting state to inactive'); $module .removeClass(className.active) ; module.update.text(text.inactive); settings.onDeactivate.call(element); } }, sync: function() { module.verbose('Syncing other buttons to current state'); if( module.is.active() ) { $allModules .not($module) .state('activate'); } else { $allModules .not($module) .state('deactivate') ; } }, get: { text: function() { return (settings.selector.text) ? $module.find(settings.selector.text).text() : $module.html() ; }, textFor: function(state) { return text[state] || false; } }, flash: { text: function(text, duration, callback) { var previousText = module.get.text() ; module.debug('Flashing text message', text, duration); text = text || settings.text.flash; duration = duration || settings.flashDuration; callback = callback || function() {}; module.update.text(text); setTimeout(function(){ module.update.text(previousText); callback.call(element); }, duration); } }, reset: { // on mouseout sets text to previous value text: function() { var activeText = text.active || $module.data(metadata.storedText), inactiveText = text.inactive || $module.data(metadata.storedText) ; if( module.is.textEnabled() ) { if( module.is.active() && activeText) { module.verbose('Resetting active text', activeText); module.update.text(activeText); } else if(inactiveText) { module.verbose('Resetting inactive text', activeText); module.update.text(inactiveText); } } } }, update: { text: function(text) { var currentText = module.get.text() ; if(text && text !== currentText) { module.debug('Updating text', text); if(settings.selector.text) { $module .data(metadata.storedText, text) .find(settings.selector.text) .text(text) ; } else { $module .data(metadata.storedText, text) .html(text) ; } } else { module.debug('Text is already set, ignoring update', text); } } }, setting: function(name, value) { module.debug('Changing setting', name, value); if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.state.settings = { // module info name : 'State', // debug output debug : false, // verbose debug output verbose : false, // namespace for events namespace : 'state', // debug data includes performance performance : true, // callback occurs on state change onActivate : function() {}, onDeactivate : function() {}, onChange : function() {}, // state test functions activateTest : function() { return true; }, deactivateTest : function() { return true; }, // whether to automatically map default states automatic : true, // activate / deactivate changes all elements instantiated at same time sync : false, // default flash text duration, used for temporarily changing text of an element flashDuration : 1000, // selector filter filter : { text : '.loading, .disabled', active : '.disabled' }, context : false, // error error: { beforeSend : 'The before send function has cancelled state change', method : 'The method you called is not defined.' }, // metadata metadata: { promise : 'promise', storedText : 'stored-text' }, // change class on state className: { active : 'active', disabled : 'disabled', error : 'error', loading : 'loading', success : 'success', warning : 'warning' }, selector: { // selector for text node text: false }, defaults : { input: { disabled : true, loading : true, active : true }, button: { disabled : true, loading : true, active : true, }, progress: { active : true, success : true, warning : true, error : true } }, states : { active : true, disabled : true, error : true, loading : true, success : true, warning : true }, text : { disabled : false, flash : false, hover : false, active : false, inactive : false, activate : false, deactivate : false } }; })( jQuery, window, document ); /*! * # Semantic UI 2.1.7 - Visibility * http://github.com/semantic-org/semantic-ui/ * * * Copyright 2015 Contributors * Released under the MIT license * http://opensource.org/licenses/MIT * */ ;(function ( $, window, document, undefined ) { "use strict"; $.fn.visibility = function(parameters) { var $allModules = $(this), moduleSelector = $allModules.selector || '', time = new Date().getTime(), performance = [], query = arguments[0], methodInvoked = (typeof query == 'string'), queryArguments = [].slice.call(arguments, 1), returnedValue ; $allModules .each(function() { var settings = ( $.isPlainObject(parameters) ) ? $.extend(true, {}, $.fn.visibility.settings, parameters) : $.extend({}, $.fn.visibility.settings), className = settings.className, namespace = settings.namespace, error = settings.error, metadata = settings.metadata, eventNamespace = '.' + namespace, moduleNamespace = 'module-' + namespace, $window = $(window), $module = $(this), $context = $(settings.context), $placeholder, selector = $module.selector || '', instance = $module.data(moduleNamespace), requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) { setTimeout(callback, 0); }, element = this, disabled = false, observer, module ; module = { initialize: function() { module.debug('Initializing', settings); module.setup.cache(); if( module.should.trackChanges() ) { if(settings.type == 'image') { module.setup.image(); } if(settings.type == 'fixed') { module.setup.fixed(); } if(settings.observeChanges) { module.observeChanges(); } module.bind.events(); } module.save.position(); if( !module.is.visible() ) { module.error(error.visible, $module); } if(settings.initialCheck) { module.checkVisibility(); } module.instantiate(); }, instantiate: function() { module.debug('Storing instance', module); $module .data(moduleNamespace, module) ; instance = module; }, destroy: function() { module.verbose('Destroying previous module'); if(observer) { observer.disconnect(); } $window .off('load' + eventNamespace, module.event.load) .off('resize' + eventNamespace, module.event.resize) ; $context .off('scrollchange' + eventNamespace, module.event.scrollchange) ; $module .off(eventNamespace) .removeData(moduleNamespace) ; }, observeChanges: function() { if('MutationObserver' in window) { observer = new MutationObserver(function(mutations) { module.verbose('DOM tree modified, updating visibility calculations'); module.timer = setTimeout(function() { module.verbose('DOM tree modified, updating sticky menu'); module.refresh(); }, 100); }); observer.observe(element, { childList : true, subtree : true }); module.debug('Setting up mutation observer', observer); } }, bind: { events: function() { module.verbose('Binding visibility events to scroll and resize'); if(settings.refreshOnLoad) { $window .on('load' + eventNamespace, module.event.load) ; } $window .on('resize' + eventNamespace, module.event.resize) ; // pub/sub pattern $context .off('scroll' + eventNamespace) .on('scroll' + eventNamespace, module.event.scroll) .on('scrollchange' + eventNamespace, module.event.scrollchange) ; } }, event: { resize: function() { module.debug('Window resized'); if(settings.refreshOnResize) { requestAnimationFrame(module.refresh); } }, load: function() { module.debug('Page finished loading'); requestAnimationFrame(module.refresh); }, // publishes scrollchange event on one scroll scroll: function() { if(settings.throttle) { clearTimeout(module.timer); module.timer = setTimeout(function() { $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]); }, settings.throttle); } else { requestAnimationFrame(function() { $context.triggerHandler('scrollchange' + eventNamespace, [ $context.scrollTop() ]); }); } }, // subscribes to scrollchange scrollchange: function(event, scrollPosition) { module.checkVisibility(scrollPosition); }, }, precache: function(images, callback) { if (!(images instanceof Array)) { images = [images]; } var imagesLength = images.length, loadedCounter = 0, cache = [], cacheImage = document.createElement('img'), handleLoad = function() { loadedCounter++; if (loadedCounter >= images.length) { if ($.isFunction(callback)) { callback(); } } } ; while (imagesLength--) { cacheImage = document.createElement('img'); cacheImage.onload = handleLoad; cacheImage.onerror = handleLoad; cacheImage.src = images[imagesLength]; cache.push(cacheImage); } }, enableCallbacks: function() { module.debug('Allowing callbacks to occur'); disabled = false; }, disableCallbacks: function() { module.debug('Disabling all callbacks temporarily'); disabled = true; }, should: { trackChanges: function() { if(methodInvoked) { module.debug('One time query, no need to bind events'); return false; } module.debug('Callbacks being attached'); return true; } }, setup: { cache: function() { module.cache = { occurred : {}, screen : {}, element : {}, }; }, image: function() { var src = $module.data(metadata.src) ; if(src) { module.verbose('Lazy loading image', src); settings.once = true; settings.observeChanges = false; // show when top visible settings.onOnScreen = function() { module.debug('Image on screen', element); module.precache(src, function() { module.set.image(src); }); }; } }, fixed: function() { module.debug('Setting up fixed'); settings.once = false; settings.observeChanges = false; settings.initialCheck = true; settings.refreshOnLoad = true; if(!parameters.transition) { settings.transition = false; } module.create.placeholder(); module.debug('Added placeholder', $placeholder); settings.onTopPassed = function() { module.debug('Element passed, adding fixed position', $module); module.show.placeholder(); module.set.fixed(); if(settings.transition) { if($.fn.transition !== undefined) { $module.transition(settings.transition, settings.duration); } } }; settings.onTopPassedReverse = function() { module.debug('Element returned to position, removing fixed', $module); module.hide.placeholder(); module.remove.fixed(); }; } }, create: { placeholder: function() { module.verbose('Creating fixed position placeholder'); $placeholder = $module .clone(false) .css('display', 'none') .addClass(className.placeholder) .insertAfter($module) ; } }, show: { placeholder: function() { module.verbose('Showing placeholder'); $placeholder .css('display', 'block') .css('visibility', 'hidden') ; } }, hide: { placeholder: function() { module.verbose('Hiding placeholder'); $placeholder .css('display', 'none') .css('visibility', '') ; } }, set: { fixed: function() { module.verbose('Setting element to fixed position'); $module .addClass(className.fixed) .css({ position : 'fixed', top : settings.offset + 'px', left : 'auto', zIndex : '1' }) ; }, image: function(src) { $module .attr('src', src) ; if(settings.transition) { if( $.fn.transition !== undefined ) { $module.transition(settings.transition, settings.duration); } else { $module.fadeIn(settings.duration); } } else { $module.show(); } } }, is: { onScreen: function() { var calculations = module.get.elementCalculations() ; return calculations.onScreen; }, offScreen: function() { var calculations = module.get.elementCalculations() ; return calculations.offScreen; }, visible: function() { if(module.cache && module.cache.element) { return !(module.cache.element.width === 0 && module.cache.element.offset.top === 0); } return false; } }, refresh: function() { module.debug('Refreshing constants (width/height)'); if(settings.type == 'fixed') { module.remove.fixed(); module.remove.occurred(); } module.reset(); module.save.position(); if(settings.checkOnRefresh) { module.checkVisibility(); } settings.onRefresh.call(element); }, reset: function() { module.verbose('Reseting all cached values'); if( $.isPlainObject(module.cache) ) { module.cache.screen = {}; module.cache.element = {}; } }, checkVisibility: function(scroll) { module.verbose('Checking visibility of element', module.cache.element); if( !disabled && module.is.visible() ) { // save scroll position module.save.scroll(scroll); // update calculations derived from scroll module.save.calculations(); // percentage module.passed(); // reverse (must be first) module.passingReverse(); module.topVisibleReverse(); module.bottomVisibleReverse(); module.topPassedReverse(); module.bottomPassedReverse(); // one time module.onScreen(); module.offScreen(); module.passing(); module.topVisible(); module.bottomVisible(); module.topPassed(); module.bottomPassed(); // on update callback if(settings.onUpdate) { settings.onUpdate.call(element, module.get.elementCalculations()); } } }, passed: function(amount, newCallback) { var calculations = module.get.elementCalculations(), amountInPixels ; // assign callback if(amount && newCallback) { settings.onPassed[amount] = newCallback; } else if(amount !== undefined) { return (module.get.pixelsPassed(amount) > calculations.pixelsPassed); } else if(calculations.passing) { $.each(settings.onPassed, function(amount, callback) { if(calculations.bottomVisible || calculations.pixelsPassed > module.get.pixelsPassed(amount)) { module.execute(callback, amount); } else if(!settings.once) { module.remove.occurred(callback); } }); } }, onScreen: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onOnScreen, callbackName = 'onScreen' ; if(newCallback) { module.debug('Adding callback for onScreen', newCallback); settings.onOnScreen = newCallback; } if(calculations.onScreen) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback !== undefined) { return calculations.onOnScreen; } }, offScreen: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onOffScreen, callbackName = 'offScreen' ; if(newCallback) { module.debug('Adding callback for offScreen', newCallback); settings.onOffScreen = newCallback; } if(calculations.offScreen) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback !== undefined) { return calculations.onOffScreen; } }, passing: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onPassing, callbackName = 'passing' ; if(newCallback) { module.debug('Adding callback for passing', newCallback); settings.onPassing = newCallback; } if(calculations.passing) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback !== undefined) { return calculations.passing; } }, topVisible: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onTopVisible, callbackName = 'topVisible' ; if(newCallback) { module.debug('Adding callback for top visible', newCallback); settings.onTopVisible = newCallback; } if(calculations.topVisible) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return calculations.topVisible; } }, bottomVisible: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onBottomVisible, callbackName = 'bottomVisible' ; if(newCallback) { module.debug('Adding callback for bottom visible', newCallback); settings.onBottomVisible = newCallback; } if(calculations.bottomVisible) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return calculations.bottomVisible; } }, topPassed: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onTopPassed, callbackName = 'topPassed' ; if(newCallback) { module.debug('Adding callback for top passed', newCallback); settings.onTopPassed = newCallback; } if(calculations.topPassed) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return calculations.topPassed; } }, bottomPassed: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onBottomPassed, callbackName = 'bottomPassed' ; if(newCallback) { module.debug('Adding callback for bottom passed', newCallback); settings.onBottomPassed = newCallback; } if(calculations.bottomPassed) { module.execute(callback, callbackName); } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return calculations.bottomPassed; } }, passingReverse: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onPassingReverse, callbackName = 'passingReverse' ; if(newCallback) { module.debug('Adding callback for passing reverse', newCallback); settings.onPassingReverse = newCallback; } if(!calculations.passing) { if(module.get.occurred('passing')) { module.execute(callback, callbackName); } } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback !== undefined) { return !calculations.passing; } }, topVisibleReverse: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onTopVisibleReverse, callbackName = 'topVisibleReverse' ; if(newCallback) { module.debug('Adding callback for top visible reverse', newCallback); settings.onTopVisibleReverse = newCallback; } if(!calculations.topVisible) { if(module.get.occurred('topVisible')) { module.execute(callback, callbackName); } } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return !calculations.topVisible; } }, bottomVisibleReverse: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onBottomVisibleReverse, callbackName = 'bottomVisibleReverse' ; if(newCallback) { module.debug('Adding callback for bottom visible reverse', newCallback); settings.onBottomVisibleReverse = newCallback; } if(!calculations.bottomVisible) { if(module.get.occurred('bottomVisible')) { module.execute(callback, callbackName); } } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return !calculations.bottomVisible; } }, topPassedReverse: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onTopPassedReverse, callbackName = 'topPassedReverse' ; if(newCallback) { module.debug('Adding callback for top passed reverse', newCallback); settings.onTopPassedReverse = newCallback; } if(!calculations.topPassed) { if(module.get.occurred('topPassed')) { module.execute(callback, callbackName); } } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return !calculations.onTopPassed; } }, bottomPassedReverse: function(newCallback) { var calculations = module.get.elementCalculations(), callback = newCallback || settings.onBottomPassedReverse, callbackName = 'bottomPassedReverse' ; if(newCallback) { module.debug('Adding callback for bottom passed reverse', newCallback); settings.onBottomPassedReverse = newCallback; } if(!calculations.bottomPassed) { if(module.get.occurred('bottomPassed')) { module.execute(callback, callbackName); } } else if(!settings.once) { module.remove.occurred(callbackName); } if(newCallback === undefined) { return !calculations.bottomPassed; } }, execute: function(callback, callbackName) { var calculations = module.get.elementCalculations(), screen = module.get.screenCalculations() ; callback = callback || false; if(callback) { if(settings.continuous) { module.debug('Callback being called continuously', callbackName, calculations); callback.call(element, calculations, screen); } else if(!module.get.occurred(callbackName)) { module.debug('Conditions met', callbackName, calculations); callback.call(element, calculations, screen); } } module.save.occurred(callbackName); }, remove: { fixed: function() { module.debug('Removing fixed position'); $module .removeClass(className.fixed) .css({ position : '', top : '', left : '', zIndex : '' }) ; }, occurred: function(callback) { if(callback) { var occurred = module.cache.occurred ; if(occurred[callback] !== undefined && occurred[callback] === true) { module.debug('Callback can now be called again', callback); module.cache.occurred[callback] = false; } } else { module.cache.occurred = {}; } } }, save: { calculations: function() { module.verbose('Saving all calculations necessary to determine positioning'); module.save.direction(); module.save.screenCalculations(); module.save.elementCalculations(); }, occurred: function(callback) { if(callback) { if(module.cache.occurred[callback] === undefined || (module.cache.occurred[callback] !== true)) { module.verbose('Saving callback occurred', callback); module.cache.occurred[callback] = true; } } }, scroll: function(scrollPosition) { scrollPosition = scrollPosition + settings.offset || $context.scrollTop() + settings.offset; module.cache.scroll = scrollPosition; }, direction: function() { var scroll = module.get.scroll(), lastScroll = module.get.lastScroll(), direction ; if(scroll > lastScroll && lastScroll) { direction = 'down'; } else if(scroll < lastScroll && lastScroll) { direction = 'up'; } else { direction = 'static'; } module.cache.direction = direction; return module.cache.direction; }, elementPosition: function() { var element = module.cache.element, screen = module.get.screenSize() ; module.verbose('Saving element position'); // (quicker than $.extend) element.fits = (element.height < screen.height); element.offset = $module.offset(); element.width = $module.outerWidth(); element.height = $module.outerHeight(); // store module.cache.element = element; return element; }, elementCalculations: function() { var screen = module.get.screenCalculations(), element = module.get.elementPosition() ; // offset if(settings.includeMargin) { element.margin = {}; element.margin.top = parseInt($module.css('margin-top'), 10); element.margin.bottom = parseInt($module.css('margin-bottom'), 10); element.top = element.offset.top - element.margin.top; element.bottom = element.offset.top + element.height + element.margin.bottom; } else { element.top = element.offset.top; element.bottom = element.offset.top + element.height; } // visibility element.topVisible = (screen.bottom >= element.top); element.topPassed = (screen.top >= element.top); element.bottomVisible = (screen.bottom >= element.bottom); element.bottomPassed = (screen.top >= element.bottom); element.pixelsPassed = 0; element.percentagePassed = 0; // meta calculations element.onScreen = (element.topVisible && !element.bottomPassed); element.passing = (element.topPassed && !element.bottomPassed); element.offScreen = (!element.onScreen); // passing calculations if(element.passing) { element.pixelsPassed = (screen.top - element.top); element.percentagePassed = (screen.top - element.top) / element.height; } module.cache.element = element; module.verbose('Updated element calculations', element); return element; }, screenCalculations: function() { var scroll = module.get.scroll() ; module.save.direction(); module.cache.screen.top = scroll; module.cache.screen.bottom = scroll + module.cache.screen.height; return module.cache.screen; }, screenSize: function() { module.verbose('Saving window position'); module.cache.screen = { height: $context.height() }; }, position: function() { module.save.screenSize(); module.save.elementPosition(); } }, get: { pixelsPassed: function(amount) { var element = module.get.elementCalculations() ; if(amount.search('%') > -1) { return ( element.height * (parseInt(amount, 10) / 100) ); } return parseInt(amount, 10); }, occurred: function(callback) { return (module.cache.occurred !== undefined) ? module.cache.occurred[callback] || false : false ; }, direction: function() { if(module.cache.direction === undefined) { module.save.direction(); } return module.cache.direction; }, elementPosition: function() { if(module.cache.element === undefined) { module.save.elementPosition(); } return module.cache.element; }, elementCalculations: function() { if(module.cache.element === undefined) { module.save.elementCalculations(); } return module.cache.element; }, screenCalculations: function() { if(module.cache.screen === undefined) { module.save.screenCalculations(); } return module.cache.screen; }, screenSize: function() { if(module.cache.screen === undefined) { module.save.screenSize(); } return module.cache.screen; }, scroll: function() { if(module.cache.scroll === undefined) { module.save.scroll(); } return module.cache.scroll; }, lastScroll: function() { if(module.cache.screen === undefined) { module.debug('First scroll event, no last scroll could be found'); return false; } return module.cache.screen.top; } }, setting: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, settings, name); } else if(value !== undefined) { settings[name] = value; } else { return settings[name]; } }, internal: function(name, value) { if( $.isPlainObject(name) ) { $.extend(true, module, name); } else if(value !== undefined) { module[name] = value; } else { return module[name]; } }, debug: function() { if(settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.debug = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.debug.apply(console, arguments); } } }, verbose: function() { if(settings.verbose && settings.debug) { if(settings.performance) { module.performance.log(arguments); } else { module.verbose = Function.prototype.bind.call(console.info, console, settings.name + ':'); module.verbose.apply(console, arguments); } } }, error: function() { module.error = Function.prototype.bind.call(console.error, console, settings.name + ':'); module.error.apply(console, arguments); }, performance: { log: function(message) { var currentTime, executionTime, previousTime ; if(settings.performance) { currentTime = new Date().getTime(); previousTime = time || currentTime; executionTime = currentTime - previousTime; time = currentTime; performance.push({ 'Name' : message[0], 'Arguments' : [].slice.call(message, 1) || '', 'Element' : element, 'Execution Time' : executionTime }); } clearTimeout(module.performance.timer); module.performance.timer = setTimeout(module.performance.display, 500); }, display: function() { var title = settings.name + ':', totalTime = 0 ; time = false; clearTimeout(module.performance.timer); $.each(performance, function(index, data) { totalTime += data['Execution Time']; }); title += ' ' + totalTime + 'ms'; if(moduleSelector) { title += ' \'' + moduleSelector + '\''; } if( (console.group !== undefined || console.table !== undefined) && performance.length > 0) { console.groupCollapsed(title); if(console.table) { console.table(performance); } else { $.each(performance, function(index, data) { console.log(data['Name'] + ': ' + data['Execution Time']+'ms'); }); } console.groupEnd(); } performance = []; } }, invoke: function(query, passedArguments, context) { var object = instance, maxDepth, found, response ; passedArguments = passedArguments || queryArguments; context = element || context; if(typeof query == 'string' && object !== undefined) { query = query.split(/[\. ]/); maxDepth = query.length - 1; $.each(query, function(depth, value) { var camelCaseValue = (depth != maxDepth) ? value + query[depth + 1].charAt(0).toUpperCase() + query[depth + 1].slice(1) : query ; if( $.isPlainObject( object[camelCaseValue] ) && (depth != maxDepth) ) { object = object[camelCaseValue]; } else if( object[camelCaseValue] !== undefined ) { found = object[camelCaseValue]; return false; } else if( $.isPlainObject( object[value] ) && (depth != maxDepth) ) { object = object[value]; } else if( object[value] !== undefined ) { found = object[value]; return false; } else { module.error(error.method, query); return false; } }); } if ( $.isFunction( found ) ) { response = found.apply(context, passedArguments); } else if(found !== undefined) { response = found; } if($.isArray(returnedValue)) { returnedValue.push(response); } else if(returnedValue !== undefined) { returnedValue = [returnedValue, response]; } else if(response !== undefined) { returnedValue = response; } return found; } }; if(methodInvoked) { if(instance === undefined) { module.initialize(); } instance.save.scroll(); instance.save.calculations(); module.invoke(query); } else { if(instance !== undefined) { instance.invoke('destroy'); } module.initialize(); } }) ; return (returnedValue !== undefined) ? returnedValue : this ; }; $.fn.visibility.settings = { name : 'Visibility', namespace : 'visibility', debug : false, verbose : false, performance : true, // whether to use mutation observers to follow changes observeChanges : true, // check position immediately on init initialCheck : true, // whether to refresh calculations after all page images load refreshOnLoad : true, // whether to refresh calculations after page resize event refreshOnResize : true, // should call callbacks on refresh event (resize, etc) checkOnRefresh : true, // callback should only occur one time once : true, // callback should fire continuously whe evaluates to true continuous : false, // offset to use with scroll top offset : 0, // whether to include margin in elements position includeMargin : false, // scroll context for visibility checks context : window, // visibility check delay in ms (defaults to animationFrame) throttle : false, // special visibility type (image, fixed) type : false, // image only animation settings transition : 'fade in', duration : 1000, // array of callbacks for percentage onPassed : {}, // standard callbacks onOnScreen : false, onOffScreen : false, onPassing : false, onTopVisible : false, onBottomVisible : false, onTopPassed : false, onBottomPassed : false, // reverse callbacks onPassingReverse : false, onTopVisibleReverse : false, onBottomVisibleReverse : false, onTopPassedReverse : false, onBottomPassedReverse : false, // utility callbacks onUpdate : false, // disabled by default for performance onRefresh : function(){}, metadata : { src: 'src' }, className: { fixed : 'fixed', placeholder : 'placeholder' }, error : { method : 'The method you called is not defined.', visible : 'Element is hidden, you must call refresh after element becomes visible' } }; })( jQuery, window, document );

Related: See More


Questions / Comments: