commit 386ce0b3de4c188e8e2ac727c5f90180a036d0a3 Author: fghrsh Date: Sun Dec 26 20:47:31 2021 +0800 first commit diff --git a/assets/css/default.css b/assets/css/default.css new file mode 100755 index 0000000..f834c42 --- /dev/null +++ b/assets/css/default.css @@ -0,0 +1,19255 @@ +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in + * IE on Windows Phone and in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers (opinionated). + */ + +body { + margin: 0; +} + +/** + * Add the correct display in IE 9-. + */ + +article, +aside, +footer, +header, +nav, +section { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: .67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + * 1. Add the correct display in IE. + */ + +figcaption, +figure, +main { + /* 1 */ + display: block; +} + +/** + * Add the correct margin in IE 8. + */ + +figure { + margin: 1em 40px; +} + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * 1. Remove the gray background on active links in IE 10. + * 2. Remove gaps in links underline in iOS 8+ and Safari 8+. + */ + +a { + background-color: transparent; /* 1 */ + -webkit-text-decoration-skip: objects; /* 2 */ +} + +/** + * 1. Remove the bottom border in Chrome 57- and Firefox 39-. + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Prevent the duplicate application of `bolder` by the next rule in Safari 6. + */ + +b, +strong { + font-weight: inherit; +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} +.tlinks{text-indent:-9999px;height:0;line-height:0;font-size:0;overflow:hidden;} +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font style in Android 4.3-. + */ + +dfn { + font-style: italic; +} + +/** + * Add the correct background and color in IE 9-. + */ + +mark { + background-color: #ff0; + color: #000; +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +audio, +video { + display: inline-block; +} + +/** + * Add the correct display in iOS 4-7. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Remove the border on images inside links in IE 10-. + */ + +img { + border-style: none; +} + +/** + * Hide the overflow in IE. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers (opinionated). + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: sans-serif; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` + * controls in Android 4. + * 2. Correct the inability to style clickable types in iOS and Safari. + */ + +button, +html [type="button"], +/* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; /* 2 */ +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: .35em .75em .625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * 1. Add the correct display in IE 9-. + * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Remove the default vertical scrollbar in IE. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10-. + * 2. Remove the padding in IE 10-. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding and cancel buttons in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-cancel-button, +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in IE 9-. + * 1. Add the correct display in Edge, IE, and Firefox. + */ + +details, +/* 1 */ +menu { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Scripting + ========================================================================== */ + +/** + * Add the correct display in IE 9-. + */ + +canvas { + display: inline-block; +} + +/** + * Add the correct display in IE. + */ + +template { + display: none; +} + +/* Hidden + ========================================================================== */ + +/** + * Add the correct display in IE 10-. + */ + +[hidden] { + display: none; +} + +/** + * Manually forked from SUIT CSS Base: https://github.com/suitcss/base + * A thin layer on top of normalize.css that provides a starting point more + * suitable for web applications. + */ + +/** + * 1. Prevent padding and border from affecting element width + * https://goo.gl/pYtbK7 + * 2. Change the default font family in all browsers (opinionated) + */ + +html { + box-sizing: border-box; /* 1 */ + font-family: sans-serif; /* 2 */ +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +/** + * Removes the default spacing and border for appropriate elements. + */ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +figure, +p, +pre { + margin: 0; +} + +button { + background: transparent; + padding: 0; +} + +/** + * Work around a Firefox/IE bug where the transparent `button` background + * results in a loss of the default `button` focus styles. + */ + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +fieldset { + margin: 0; + padding: 0; +} + +ol, +ul { + margin: 0; +} + +/** + * Tailwind custom reset styles + */ + +/** + * Allow adding a border to an element by just adding a border-width. + * + * By default, the way the browser specifies that an element should have no + * border is by setting it's border-style to `none` in the user-agent + * stylesheet. + * + * In order to easily add borders to elements by just setting the `border-width` + * property, we change the default border-style for all elements to `solid`, and + * use border-width to hide them instead. This way our `border` utilities only + * need to set the `border-width` property instead of the entire `border` + * shorthand, making our border utilities much more straightforward to compose. + * + * https://github.com/tailwindcss/tailwindcss/pull/116 + */ + +*, +*::before, +*::after { + border-width: 0; + border-style: solid; + border-color: #dae1e7; +} + +/** + * Undo the `border-style: none` reset that Normalize applies to images so that + * our `border-{width}` utilities have the expected effect. + * + * The Normalize reset is unnecessary for us since we default the border-width + * to 0 on all elements. + * + * https://github.com/tailwindcss/tailwindcss/issues/362 + */ + +img { + border-style: solid; +} + +/** + * Temporary reset for a change introduced in Chrome 62 but now reverted. + * + * We can remove this when the reversion is in a normal Chrome release. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + border-radius: 0; +} + +textarea { + resize: vertical; +} + +img { + max-width: 100%; + height: auto; +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; +} + +input::placeholder, +textarea::placeholder { + color: inherit; + opacity: .5; +} + +button, +[role=button] { + cursor: pointer; +} + +table { + border-collapse: collapse; +} + +.container { + width: 100%; +} + +@media (min-width: 576px) { + .container { + max-width: 576px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 992px) { + .container { + max-width: 992px; + } +} + +@media (min-width: 1200px) { + .container { + max-width: 1200px; + } +} + +.max-width-tiny { + max-width: 7rem; +} + +.libre-bg-grey { + background-color: #c4cdd5; +} + +.libre-bg-yellow { + background-color: #ffc48b; +} + +.libre-bg-pink { + background-color: #fdac9a; +} + +.bg-indigo-medium { + background-color: #7DB9DE; +} + +.bg-grey-lighter-2 { + background-color: #eaf1f7; +} + +.py-1\/2 { + padding-top: .15rem; + padding-bottom: .15rem; +} + +.transition-normal { + transition: all 200ms ease; +} + +.appearance-none { + -webkit-appearance: none; + appearance: none; +} + +.leading-medium { + leading: 1.3; +} + +.js-tab:before { + transition: .5s all ease; + position: absolute; + left: 50%; + right: 50%; + bottom: -2px; + opacity: 0; + content: ""; + height: 2px; + background-color: #005CAF; +} + +.js-tab:hover:before { + transition: .5s all ease; + left: 0; + right: 0; + opacity: 1; +} + +.js-tab-pane { + display: none; +} + +.js-tab.active:before { + opacity: 1; + left: 0; + right: 0; +} + +.js-tab-pane.active { + display: flex; +} + +#sidenav-icon.rotate { + transform-origin: center center; + transform: rotate(180deg); + transition: transform .3s ease-in-out; +} + +.hover\:brighter:hover { + filter: brightness(110%); +} + +.hover\:translate-y-1:hover { + transform: translateY(-1px); +} + +.active\:translate-y-1:active { + transform: translateY(1px); +} + +.tippy-tooltip { + padding: 1rem; + text-align: left; +} + +.-order-1 { + order: -1; +} + +.order-0 { + order: 0; +} + +.order-1 { + order: 1; +} + +.order-2 { + order: 2; +} + +.toggle { + position: relative; +} + +.toggle span, +.toggle span:before, +.toggle span:after { + content: ''; + position: absolute; + height: 2px; + width: 18px; + border-radius: 2px; + background: white; + display: block; + cursor: pointer; + transition: all .3s ease-in-out; + right: 0; +} + +.toggle span:before { + top: -6px; +} + +.toggle span:after { + bottom: -6px; +} + +.toggle.open span { + background-color: transparent; +} + +.toggle.open span:before, +.toggle.open span:after { + top: 0; +} + +.toggle.open span:before { + transform: rotate(45deg); +} + +.toggle.open span:after { + transform: rotate(-45deg); +} + +.list-reset { + list-style: none; + padding: 0; +} + +.appearance-none { + appearance: none; +} + +.bg-fixed { + background-attachment: fixed; +} + +.bg-local { + background-attachment: local; +} + +.bg-scroll { + background-attachment: scroll; +} + +.bg-transparent { + background-color: transparent; +} + +.bg-black { + background-color: #22292f; +} + +.bg-grey-darkest { + background-color: #3d4852; +} + +.bg-grey-darker { + background-color: #606f7b; +} + +.bg-grey-dark { + background-color: #0B346E; +} + +.bg-grey { + background-color: #828282; +} + +.bg-grey-light { + background-color: #dae1e7; +} + +.bg-grey-lighter { + background-color: #f1f5f8; +} + +.bg-grey-lightest { + background-color: #f8fafc; +} + +.bg-white { + background-color: #fff; +} + +.bg-indigo-darkest { + background-color: #191e38; +} + +.bg-indigo-darker { + background-color: #2EA9DF; +} + +.bg-indigo-dark { + background-color: #005CAF; +} + +.bg-indigo { + background-color: #005CAF; +} + +.bg-indigo-light { + background-color: #7886d7; +} + +.bg-indigo-lighter { + background-color: #A5DEE4; +} + +.bg-indigo-lightest { + background-color: #e6e8ff; +} + +.bg-magenta-dark { + background-color: #CB1B45; +} + +.bg-magenta-darker { + background-color: #DB4D6D; +} + +.hover\:bg-transparent:hover { + background-color: transparent; +} + +.hover\:bg-black:hover { + background-color: #22292f; +} + +.hover\:bg-grey-darkest:hover { + background-color: #3d4852; +} + +.hover\:bg-grey-darker:hover { + background-color: #606f7b; +} + +.hover\:bg-grey-dark:hover { + background-color: #0B346E; +} + +.hover\:bg-grey:hover { + background-color: #b8c2cc; +} + +.hover\:bg-grey-light:hover { + background-color: #dae1e7; +} + +.hover\:bg-grey-lighter:hover { + background-color: #f1f5f8; +} + +.hover\:bg-grey-lightest:hover { + background-color: #f8fafc; +} + +.hover\:bg-white:hover { + background-color: #fff; +} + +.hover\:bg-indigo-darkest:hover { + background-color: #191e38; +} + +.hover\:bg-indigo-darker:hover { + background-color: #2EA9DF; +} + +.hover\:bg-indigo-dark:hover { + background-color: #005CAF; +} + +.hover\:bg-indigo:hover { + background-color: #005CAF; +} + +.hover\:bg-indigo-light:hover { + background-color: #7886d7; +} + +.hover\:bg-indigo-lighter:hover { + background-color: #A5DEE4; +} + +.hover\:bg-indigo-lightest:hover { + background-color: #e6e8ff; +} + +.hover\:bg-magenta-darker:hover { + background-color: #DB4D6D; +} + +.focus\:bg-transparent:focus { + background-color: transparent; +} + +.focus\:bg-black:focus { + background-color: #22292f; +} + +.focus\:bg-grey-darkest:focus { + background-color: #3d4852; +} + +.focus\:bg-grey-darker:focus { + background-color: #606f7b; +} + +.focus\:bg-grey-dark:focus { + background-color: #0B346E; +} + +.focus\:bg-grey:focus { + background-color: #b8c2cc; +} + +.focus\:bg-grey-light:focus { + background-color: #dae1e7; +} + +.focus\:bg-grey-lighter:focus { + background-color: #f1f5f8; +} + +.focus\:bg-grey-lightest:focus { + background-color: #f8fafc; +} + +.focus\:bg-white:focus { + background-color: #fff; +} + +.focus\:bg-indigo-darkest:focus { + background-color: #191e38; +} + +.focus\:bg-indigo-darker:focus { + background-color: #2EA9DF; +} + +.focus\:bg-indigo-dark:focus { + background-color: #005CAF; +} + +.focus\:bg-indigo:focus { + background-color: #005CAF; +} + +.focus\:bg-indigo-light:focus { + background-color: #7886d7; +} + +.focus\:bg-indigo-lighter:focus { + background-color: #A5DEE4; +} + +.focus\:bg-indigo-lightest:focus { + background-color: #e6e8ff; +} + +.bg-bottom { + background-position: bottom; +} + +.bg-center { + background-position: center; +} + +.bg-left { + background-position: left; +} + +.bg-left-bottom { + background-position: left bottom; +} + +.bg-left-top { + background-position: left top; +} + +.bg-right { + background-position: right; +} + +.bg-right-bottom { + background-position: right bottom; +} + +.bg-right-top { + background-position: right top; +} + +.bg-top { + background-position: top; +} + +.bg-repeat { + background-repeat: repeat; +} + +.bg-no-repeat { + background-repeat: no-repeat; +} + +.bg-repeat-x { + background-repeat: repeat-x; +} + +.bg-repeat-y { + background-repeat: repeat-y; +} + +.bg-auto { + background-size: auto; +} + +.bg-cover { + background-size: cover; +} + +.bg-contain { + background-size: contain; +} + +.border-collapse { + border-collapse: collapse; +} + +.border-separate { + border-collapse: separate; +} + +.border-transparent { + border-color: transparent; +} + +.border-black { + border-color: #22292f; +} + +.border-grey-darkest { + border-color: #3d4852; +} + +.border-grey-darker { + border-color: #606f7b; +} + +.border-grey-dark { + border-color: #0B346E; +} + +.border-grey { + border-color: #b8c2cc; +} + +.border-grey-light { + border-color: #dae1e7; +} + +.border-grey-lighter { + border-color: #f1f5f8; +} + +.border-grey-lightest { + border-color: #f8fafc; +} + +.border-white { + border-color: #fff; +} + +.border-indigo-darkest { + border-color: #191e38; +} + +.border-indigo-darker { + border-color: #2EA9DF; +} + +.border-indigo-dark { + border-color: #005CAF; +} + +.border-indigo { + border-color: #005CAF; +} + +.border-indigo-light { + border-color: #7886d7; +} + +.border-indigo-lighter { + border-color: #A5DEE4; +} + +.border-indigo-lightest { + border-color: #e6e8ff; +} + +.hover\:border-transparent:hover { + border-color: transparent; +} + +.hover\:border-black:hover { + border-color: #22292f; +} + +.hover\:border-grey-darkest:hover { + border-color: #3d4852; +} + +.hover\:border-grey-darker:hover { + border-color: #606f7b; +} + +.hover\:border-grey-dark:hover { + border-color: #0B346E; +} + +.hover\:border-grey:hover { + border-color: #b8c2cc; +} + +.hover\:border-grey-light:hover { + border-color: #dae1e7; +} + +.hover\:border-grey-lighter:hover { + border-color: #f1f5f8; +} + +.hover\:border-grey-lightest:hover { + border-color: #f8fafc; +} + +.hover\:border-white:hover { + border-color: #fff; +} + +.hover\:border-indigo-darkest:hover { + border-color: #191e38; +} + +.hover\:border-indigo-darker:hover { + border-color: #2EA9DF; +} + +.hover\:border-indigo-dark:hover { + border-color: #005CAF; +} + +.hover\:border-indigo:hover { + border-color: #005CAF; +} + +.hover\:border-indigo-light:hover { + border-color: #7886d7; +} + +.hover\:border-indigo-lighter:hover { + border-color: #A5DEE4; +} + +.hover\:border-indigo-lightest:hover { + border-color: #e6e8ff; +} + +.focus\:border-transparent:focus { + border-color: transparent; +} + +.focus\:border-black:focus { + border-color: #22292f; +} + +.focus\:border-grey-darkest:focus { + border-color: #3d4852; +} + +.focus\:border-grey-darker:focus { + border-color: #606f7b; +} + +.focus\:border-grey-dark:focus { + border-color: #0B346E; +} + +.focus\:border-grey:focus { + border-color: #b8c2cc; +} + +.focus\:border-grey-light:focus { + border-color: #dae1e7; +} + +.focus\:border-grey-lighter:focus { + border-color: #f1f5f8; +} + +.focus\:border-grey-lightest:focus { + border-color: #f8fafc; +} + +.focus\:border-white:focus { + border-color: #fff; +} + +.focus\:border-indigo-darkest:focus { + border-color: #191e38; +} + +.focus\:border-indigo-darker:focus { + border-color: #2EA9DF; +} + +.focus\:border-indigo-dark:focus { + border-color: #005CAF; +} + +.focus\:border-indigo:focus { + border-color: #005CAF; +} + +.focus\:border-indigo-light:focus { + border-color: #7886d7; +} + +.focus\:border-indigo-lighter:focus { + border-color: #A5DEE4; +} + +.focus\:border-indigo-lightest:focus { + border-color: #e6e8ff; +} + +.rounded-none { + border-radius: 0; +} + +.rounded-sm { + border-radius: .125rem; +} + +.rounded { + border-radius: .25rem; +} + +.rounded-lg { + border-radius: .5rem; +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-t-none { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.rounded-r-none { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.rounded-b-none { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} + +.rounded-l-none { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.rounded-t-sm { + border-top-left-radius: .125rem; + border-top-right-radius: .125rem; +} + +.rounded-r-sm { + border-top-right-radius: .125rem; + border-bottom-right-radius: .125rem; +} + +.rounded-b-sm { + border-bottom-right-radius: .125rem; + border-bottom-left-radius: .125rem; +} + +.rounded-l-sm { + border-top-left-radius: .125rem; + border-bottom-left-radius: .125rem; +} + +.rounded-t { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; +} + +.rounded-r { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; +} + +.rounded-b { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem; +} + +.rounded-l { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; +} + +.rounded-t-lg { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; +} + +.rounded-r-lg { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem; +} + +.rounded-b-lg { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem; +} + +.rounded-l-lg { + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem; +} + +.rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; +} + +.rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; +} + +.rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; +} + +.rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; +} + +.rounded-tl-none { + border-top-left-radius: 0; +} + +.rounded-tr-none { + border-top-right-radius: 0; +} + +.rounded-br-none { + border-bottom-right-radius: 0; +} + +.rounded-bl-none { + border-bottom-left-radius: 0; +} + +.rounded-tl-sm { + border-top-left-radius: .125rem; +} + +.rounded-tr-sm { + border-top-right-radius: .125rem; +} + +.rounded-br-sm { + border-bottom-right-radius: .125rem; +} + +.rounded-bl-sm { + border-bottom-left-radius: .125rem; +} + +.rounded-tl { + border-top-left-radius: .25rem; +} + +.rounded-tr { + border-top-right-radius: .25rem; +} + +.rounded-br { + border-bottom-right-radius: .25rem; +} + +.rounded-bl { + border-bottom-left-radius: .25rem; +} + +.rounded-tl-lg { + border-top-left-radius: .5rem; +} + +.rounded-tr-lg { + border-top-right-radius: .5rem; +} + +.rounded-br-lg { + border-bottom-right-radius: .5rem; +} + +.rounded-bl-lg { + border-bottom-left-radius: .5rem; +} + +.rounded-tl-full { + border-top-left-radius: 9999px; +} + +.rounded-tr-full { + border-top-right-radius: 9999px; +} + +.rounded-br-full { + border-bottom-right-radius: 9999px; +} + +.rounded-bl-full { + border-bottom-left-radius: 9999px; +} + +.border-solid { + border-style: solid; +} + +.border-dashed { + border-style: dashed; +} + +.border-dotted { + border-style: dotted; +} + +.border-none { + border-style: none; +} + +.border-0 { + border-width: 0; +} + +.border-2 { + border-width: 2px; +} + +.border-4 { + border-width: 4px; +} + +.border-8 { + border-width: 8px; +} + +.border { + border-width: 1px; +} + +.border-t-0 { + border-top-width: 0; +} + +.border-r-0 { + border-right-width: 0; +} + +.border-b-0 { + border-bottom-width: 0; +} + +.border-l-0 { + border-left-width: 0; +} + +.border-t-2 { + border-top-width: 2px; +} + +.border-r-2 { + border-right-width: 2px; +} + +.border-b-2 { + border-bottom-width: 2px; +} + +.border-l-2 { + border-left-width: 2px; +} + +.border-t-4 { + border-top-width: 4px; +} + +.border-r-4 { + border-right-width: 4px; +} + +.border-b-4 { + border-bottom-width: 4px; +} + +.border-l-4 { + border-left-width: 4px; +} + +.border-t-8 { + border-top-width: 8px; +} + +.border-r-8 { + border-right-width: 8px; +} + +.border-b-8 { + border-bottom-width: 8px; +} + +.border-l-8 { + border-left-width: 8px; +} + +.border-t { + border-top-width: 1px; +} + +.border-r { + border-right-width: 1px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-l { + border-left-width: 1px; +} + +.hover\:border-0:hover { + border-width: 0; +} + +.hover\:border-2:hover { + border-width: 2px; +} + +.hover\:border-4:hover { + border-width: 4px; +} + +.hover\:border-8:hover { + border-width: 8px; +} + +.hover\:border:hover { + border-width: 1px; +} + +.hover\:border-t-0:hover { + border-top-width: 0; +} + +.hover\:border-r-0:hover { + border-right-width: 0; +} + +.hover\:border-b-0:hover { + border-bottom-width: 0; +} + +.hover\:border-l-0:hover { + border-left-width: 0; +} + +.hover\:border-t-2:hover { + border-top-width: 2px; +} + +.hover\:border-r-2:hover { + border-right-width: 2px; +} + +.hover\:border-b-2:hover { + border-bottom-width: 2px; +} + +.hover\:border-l-2:hover { + border-left-width: 2px; +} + +.hover\:border-t-4:hover { + border-top-width: 4px; +} + +.hover\:border-r-4:hover { + border-right-width: 4px; +} + +.hover\:border-b-4:hover { + border-bottom-width: 4px; +} + +.hover\:border-l-4:hover { + border-left-width: 4px; +} + +.hover\:border-t-8:hover { + border-top-width: 8px; +} + +.hover\:border-r-8:hover { + border-right-width: 8px; +} + +.hover\:border-b-8:hover { + border-bottom-width: 8px; +} + +.hover\:border-l-8:hover { + border-left-width: 8px; +} + +.hover\:border-t:hover { + border-top-width: 1px; +} + +.hover\:border-r:hover { + border-right-width: 1px; +} + +.hover\:border-b:hover { + border-bottom-width: 1px; +} + +.hover\:border-l:hover { + border-left-width: 1px; +} + +.cursor-auto { + cursor: auto; +} + +.cursor-default { + cursor: default; +} + +.cursor-pointer { + cursor: pointer; +} + +.cursor-wait { + cursor: wait; +} + +.cursor-move { + cursor: move; +} + +.cursor-not-allowed { + cursor: not-allowed; +} + +.hover\:cursor-auto:hover { + cursor: auto; +} + +.hover\:cursor-default:hover { + cursor: default; +} + +.hover\:cursor-pointer:hover { + cursor: pointer; +} + +.hover\:cursor-wait:hover { + cursor: wait; +} + +.hover\:cursor-move:hover { + cursor: move; +} + +.hover\:cursor-not-allowed:hover { + cursor: not-allowed; +} + +.block { + display: block; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.table { + display: table; +} + +.table-row { + display: table-row; +} + +.table-cell { + display: table-cell; +} + +.hidden { + display: none; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.flex-row { + flex-direction: row; +} + +.flex-row-reverse { + flex-direction: row-reverse; +} + +.flex-col { + flex-direction: column; +} + +.flex-col-reverse { + flex-direction: column-reverse; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse; +} + +.flex-no-wrap { + flex-wrap: nowrap; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-center { + align-items: center; +} + +.items-baseline { + align-items: baseline; +} + +.items-stretch { + align-items: stretch; +} + +.self-auto { + align-self: auto; +} + +.self-start { + align-self: flex-start; +} + +.self-end { + align-self: flex-end; +} + +.self-center { + align-self: center; +} + +.self-stretch { + align-self: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.content-center { + align-content: center; +} + +.content-start { + align-content: flex-start; +} + +.content-end { + align-content: flex-end; +} + +.content-between { + align-content: space-between; +} + +.content-around { + align-content: space-around; +} + +.flex-1 { + flex: 1; +} + +.flex-auto { + flex: auto; +} + +.flex-initial { + flex: initial; +} + +.flex-none { + flex: none; +} + +.flex-grow { + flex-grow: 1; +} + +.flex-shrink { + flex-shrink: 1; +} + +.flex-no-grow { + flex-grow: 0; +} + +.flex-no-shrink { + flex-shrink: 0; +} + +.float-right { + float: right; +} + +.float-left { + float: left; +} + +.float-none { + float: none; +} + +.clearfix:after { + content: ""; + display: table; + clear: both; +} + +.font-sans { + font-family: Roboto, sans-serif; +} + +.font-serif { + font-family: Constantia, Lucida Bright, Lucidabright, Lucida Serif, Lucida, DejaVu Serif, Bitstream Vera Serif, Liberation Serif, Georgia, serif; +} + +.font-mono { + font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; +} + +.font-hairline { + font-weight: 100; +} + +.font-thin { + font-weight: 200; +} + +.font-light { + font-weight: 300; +} + +.font-normal { + font-weight: 400; +} + +.font-medium { + font-weight: 500; +} + +.font-semibold { + font-weight: 600; +} + +.font-bold { + font-weight: 700; +} + +.font-extrabold { + font-weight: 800; +} + +.font-black { + font-weight: 900; +} + +.hover\:font-hairline:hover { + font-weight: 100; +} + +.hover\:font-thin:hover { + font-weight: 200; +} + +.hover\:font-light:hover { + font-weight: 300; +} + +.hover\:font-normal:hover { + font-weight: 400; +} + +.hover\:font-medium:hover { + font-weight: 500; +} + +.hover\:font-semibold:hover { + font-weight: 600; +} + +.hover\:font-bold:hover { + font-weight: 700; +} + +.hover\:font-extrabold:hover { + font-weight: 800; +} + +.hover\:font-black:hover { + font-weight: 900; +} + +.focus\:font-hairline:focus { + font-weight: 100; +} + +.focus\:font-thin:focus { + font-weight: 200; +} + +.focus\:font-light:focus { + font-weight: 300; +} + +.focus\:font-normal:focus { + font-weight: 400; +} + +.focus\:font-medium:focus { + font-weight: 500; +} + +.focus\:font-semibold:focus { + font-weight: 600; +} + +.focus\:font-bold:focus { + font-weight: 700; +} + +.focus\:font-extrabold:focus { + font-weight: 800; +} + +.focus\:font-black:focus { + font-weight: 900; +} + +.h-1 { + height: .25rem; +} + +.h-2 { + height: .5rem; +} + +.h-3 { + height: .75rem; +} + +.h-4 { + height: 1rem; +} + +.h-5 { + height: 1.25rem; +} + +.h-6 { + height: 1.5rem; +} + +.h-8 { + height: 2rem; +} + +.h-10 { + height: 2.5rem; +} + +.h-12 { + height: 3rem; +} + +.h-16 { + height: 4rem; +} + +.h-24 { + height: 6rem; +} + +.h-32 { + height: 8rem; +} + +.h-48 { + height: 12rem; +} + +.h-64 { + height: 16rem; +} + +.h-auto { + height: auto; +} + +.h-px { + height: 1px; +} + +.h-full { + height: 100%; +} + +.h-screen { + height: 100vh; +} + +.leading-none { + line-height: 1; +} + +.leading-tight { + line-height: 1.25; +} + +.leading-normal { + line-height: 1.5; +} + +.leading-loose { + line-height: 2; +} + +.m-0 { + margin: 0; +} + +.m-1 { + margin: .25rem; +} + +.m-2 { + margin: .5rem; +} + +.m-3 { + margin: .75rem; +} + +.m-4 { + margin: 1rem; +} + +.m-5 { + margin: 1.25rem; +} + +.m-6 { + margin: 1.5rem; +} + +.m-8 { + margin: 2rem; +} + +.m-10 { + margin: 2.5rem; +} + +.m-12 { + margin: 3rem; +} + +.m-16 { + margin: 4rem; +} + +.m-20 { + margin: 5rem; +} + +.m-24 { + margin: 6rem; +} + +.m-32 { + margin: 8rem; +} + +.m-auto { + margin: auto; +} + +.m-px { + margin: 1px; +} + +.my-0 { + margin-top: 0; + margin-bottom: 0; +} + +.mx-0 { + margin-left: 0; + margin-right: 0; +} + +.my-1 { + margin-top: .25rem; + margin-bottom: .25rem; +} + +.mx-1 { + margin-left: .25rem; + margin-right: .25rem; +} + +.my-2 { + margin-top: .5rem; + margin-bottom: .5rem; +} + +.mx-2 { + margin-left: .5rem; + margin-right: .5rem; +} + +.my-3 { + margin-top: .75rem; + margin-bottom: .75rem; +} + +.mx-3 { + margin-left: .75rem; + margin-right: .75rem; +} + +.my-4 { + margin-top: 1rem; + margin-bottom: 1rem; +} + +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; +} + +.my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; +} + +.mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; +} + +.my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; +} + +.mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; +} + +.my-8 { + margin-top: 2rem; + margin-bottom: 2rem; +} + +.mx-8 { + margin-left: 2rem; + margin-right: 2rem; +} + +.my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; +} + +.mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; +} + +.my-12 { + margin-top: 3rem; + margin-bottom: 3rem; +} + +.mx-12 { + margin-left: 3rem; + margin-right: 3rem; +} + +.my-16 { + margin-top: 4rem; + margin-bottom: 4rem; +} + +.mx-16 { + margin-left: 4rem; + margin-right: 4rem; +} + +.my-20 { + margin-top: 5rem; + margin-bottom: 5rem; +} + +.mx-20 { + margin-left: 5rem; + margin-right: 5rem; +} + +.my-24 { + margin-top: 6rem; + margin-bottom: 6rem; +} + +.mx-24 { + margin-left: 6rem; + margin-right: 6rem; +} + +.my-32 { + margin-top: 8rem; + margin-bottom: 8rem; +} + +.mx-32 { + margin-left: 8rem; + margin-right: 8rem; +} + +.my-auto { + margin-top: auto; + margin-bottom: auto; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.my-px { + margin-top: 1px; + margin-bottom: 1px; +} + +.mx-px { + margin-left: 1px; + margin-right: 1px; +} + +.mt-0 { + margin-top: 0; +} + +.mr-0 { + margin-right: 0; +} + +.mb-0 { + margin-bottom: 0; +} + +.ml-0 { + margin-left: 0; +} + +.mt-1 { + margin-top: .25rem; +} + +.mr-1 { + margin-right: .25rem; +} + +.mb-1 { + margin-bottom: .25rem; +} + +.ml-1 { + margin-left: .25rem; +} + +.mt-2 { + margin-top: .5rem; +} + +.mr-2 { + margin-right: .5rem; +} + +.mb-2 { + margin-bottom: .5rem; +} + +.ml-2 { + margin-left: .5rem; +} + +.mt-3 { + margin-top: .75rem; +} + +.mr-3 { + margin-right: .75rem; +} + +.mb-3 { + margin-bottom: .75rem; +} + +.ml-3 { + margin-left: .75rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mr-4 { + margin-right: 1rem; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.ml-4 { + margin-left: 1rem; +} + +.mt-5 { + margin-top: 1.25rem; +} + +.mr-5 { + margin-right: 1.25rem; +} + +.mb-5 { + margin-bottom: 1.25rem; +} + +.ml-5 { + margin-left: 1.25rem; +} + +.mt-6 { + margin-top: 1.5rem; +} + +.mr-6 { + margin-right: 1.5rem; +} + +.mb-6 { + margin-bottom: 1.5rem; +} + +.ml-6 { + margin-left: 1.5rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.mr-8 { + margin-right: 2rem; +} + +.mb-8 { + margin-bottom: 2rem; +} + +.ml-8 { + margin-left: 2rem; +} + +.mt-10 { + margin-top: 2.5rem; +} + +.mr-10 { + margin-right: 2.5rem; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.ml-10 { + margin-left: 2.5rem; +} + +.mt-12 { + margin-top: 3rem; +} + +.mr-12 { + margin-right: 3rem; +} + +.mb-12 { + margin-bottom: 3rem; +} + +.ml-12 { + margin-left: 3rem; +} + +.mt-16 { + margin-top: 4rem; +} + +.mr-16 { + margin-right: 4rem; +} + +.mb-16 { + margin-bottom: 4rem; +} + +.ml-16 { + margin-left: 4rem; +} + +.mt-20 { + margin-top: 5rem; +} + +.mr-20 { + margin-right: 5rem; +} + +.mb-20 { + margin-bottom: 5rem; +} + +.ml-20 { + margin-left: 5rem; +} + +.mt-24 { + margin-top: 6rem; +} + +.mr-24 { + margin-right: 6rem; +} + +.mb-24 { + margin-bottom: 6rem; +} + +.ml-24 { + margin-left: 6rem; +} + +.mt-32 { + margin-top: 8rem; +} + +.mr-32 { + margin-right: 8rem; +} + +.mb-32 { + margin-bottom: 8rem; +} + +.ml-32 { + margin-left: 8rem; +} + +.mt-auto { + margin-top: auto; +} + +.mr-auto { + margin-right: auto; +} + +.mb-auto { + margin-bottom: auto; +} + +.ml-auto { + margin-left: auto; +} + +.mt-px { + margin-top: 1px; +} + +.mr-px { + margin-right: 1px; +} + +.mb-px { + margin-bottom: 1px; +} + +.ml-px { + margin-left: 1px; +} + +.max-h-full { + max-height: 100%; +} + +.max-h-screen { + max-height: 100vh; +} + +.max-w-xs { + max-width: 20rem; +} + +.max-w-sm { + max-width: 30rem; +} + +.max-w-md { + max-width: 40rem; +} + +.max-w-lg { + max-width: 50rem; +} + +.max-w-xl { + max-width: 60rem; +} + +.max-w-2xl { + max-width: 70rem; +} + +.max-w-3xl { + max-width: 80rem; +} + +.max-w-4xl { + max-width: 90rem; +} + +.max-w-5xl { + max-width: 100rem; +} + +.max-w-full { + max-width: 100%; +} + +.min-h-0 { + min-height: 0; +} + +.min-h-full { + min-height: 100%; +} + +.min-h-screen { + min-height: 100vh; +} + +.min-w-0 { + min-width: 0; +} + +.min-w-full { + min-width: 100%; +} + +.-m-0 { + margin: 0; +} + +.-m-1 { + margin: -0.25rem; +} + +.-m-2 { + margin: -0.5rem; +} + +.-m-3 { + margin: -0.75rem; +} + +.-m-4 { + margin: -1rem; +} + +.-m-5 { + margin: -1.25rem; +} + +.-m-6 { + margin: -1.5rem; +} + +.-m-8 { + margin: -2rem; +} + +.-m-10 { + margin: -2.5rem; +} + +.-m-12 { + margin: -3rem; +} + +.-m-16 { + margin: -4rem; +} + +.-m-20 { + margin: -5rem; +} + +.-m-24 { + margin: -6rem; +} + +.-m-32 { + margin: -8rem; +} + +.-m-px { + margin: -1px; +} + +.-my-0 { + margin-top: 0; + margin-bottom: 0; +} + +.-mx-0 { + margin-left: 0; + margin-right: 0; +} + +.-my-1 { + margin-top: -0.25rem; + margin-bottom: -0.25rem; +} + +.-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; +} + +.-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} + +.-mx-2 { + margin-left: -0.5rem; + margin-right: -0.5rem; +} + +.-my-3 { + margin-top: -0.75rem; + margin-bottom: -0.75rem; +} + +.-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; +} + +.-my-4 { + margin-top: -1rem; + margin-bottom: -1rem; +} + +.-mx-4 { + margin-left: -1rem; + margin-right: -1rem; +} + +.-my-5 { + margin-top: -1.25rem; + margin-bottom: -1.25rem; +} + +.-mx-5 { + margin-left: -1.25rem; + margin-right: -1.25rem; +} + +.-my-6 { + margin-top: -1.5rem; + margin-bottom: -1.5rem; +} + +.-mx-6 { + margin-left: -1.5rem; + margin-right: -1.5rem; +} + +.-my-8 { + margin-top: -2rem; + margin-bottom: -2rem; +} + +.-mx-8 { + margin-left: -2rem; + margin-right: -2rem; +} + +.-my-10 { + margin-top: -2.5rem; + margin-bottom: -2.5rem; +} + +.-mx-10 { + margin-left: -2.5rem; + margin-right: -2.5rem; +} + +.-my-12 { + margin-top: -3rem; + margin-bottom: -3rem; +} + +.-mx-12 { + margin-left: -3rem; + margin-right: -3rem; +} + +.-my-16 { + margin-top: -4rem; + margin-bottom: -4rem; +} + +.-mx-16 { + margin-left: -4rem; + margin-right: -4rem; +} + +.-my-20 { + margin-top: -5rem; + margin-bottom: -5rem; +} + +.-mx-20 { + margin-left: -5rem; + margin-right: -5rem; +} + +.-my-24 { + margin-top: -6rem; + margin-bottom: -6rem; +} + +.-mx-24 { + margin-left: -6rem; + margin-right: -6rem; +} + +.-my-32 { + margin-top: -8rem; + margin-bottom: -8rem; +} + +.-mx-32 { + margin-left: -8rem; + margin-right: -8rem; +} + +.-my-px { + margin-top: -1px; + margin-bottom: -1px; +} + +.-mx-px { + margin-left: -1px; + margin-right: -1px; +} + +.-mt-0 { + margin-top: 0; +} + +.-mr-0 { + margin-right: 0; +} + +.-mb-0 { + margin-bottom: 0; +} + +.-ml-0 { + margin-left: 0; +} + +.-mt-1 { + margin-top: -0.25rem; +} + +.-mr-1 { + margin-right: -0.25rem; +} + +.-mb-1 { + margin-bottom: -0.25rem; +} + +.-ml-1 { + margin-left: -0.25rem; +} + +.-mt-2 { + margin-top: -0.5rem; +} + +.-mr-2 { + margin-right: -0.5rem; +} + +.-mb-2 { + margin-bottom: -0.5rem; +} + +.-ml-2 { + margin-left: -0.5rem; +} + +.-mt-3 { + margin-top: -0.75rem; +} + +.-mr-3 { + margin-right: -0.75rem; +} + +.-mb-3 { + margin-bottom: -0.75rem; +} + +.-ml-3 { + margin-left: -0.75rem; +} + +.-mt-4 { + margin-top: -1rem; +} + +.-mr-4 { + margin-right: -1rem; +} + +.-mb-4 { + margin-bottom: -1rem; +} + +.-ml-4 { + margin-left: -1rem; +} + +.-mt-5 { + margin-top: -1.25rem; +} + +.-mr-5 { + margin-right: -1.25rem; +} + +.-mb-5 { + margin-bottom: -1.25rem; +} + +.-ml-5 { + margin-left: -1.25rem; +} + +.-mt-6 { + margin-top: -1.5rem; +} + +.-mr-6 { + margin-right: -1.5rem; +} + +.-mb-6 { + margin-bottom: -1.5rem; +} + +.-ml-6 { + margin-left: -1.5rem; +} + +.-mt-8 { + margin-top: -2rem; +} + +.-mr-8 { + margin-right: -2rem; +} + +.-mb-8 { + margin-bottom: -2rem; +} + +.-ml-8 { + margin-left: -2rem; +} + +.-mt-10 { + margin-top: -2.5rem; +} + +.-mr-10 { + margin-right: -2.5rem; +} + +.-mb-10 { + margin-bottom: -2.5rem; +} + +.-ml-10 { + margin-left: -2.5rem; +} + +.-mt-12 { + margin-top: -3rem; +} + +.-mr-12 { + margin-right: -3rem; +} + +.-mb-12 { + margin-bottom: -3rem; +} + +.-ml-12 { + margin-left: -3rem; +} + +.-mt-16 { + margin-top: -4rem; +} + +.-mr-16 { + margin-right: -4rem; +} + +.-mb-16 { + margin-bottom: -4rem; +} + +.-ml-16 { + margin-left: -4rem; +} + +.-mt-20 { + margin-top: -5rem; +} + +.-mr-20 { + margin-right: -5rem; +} + +.-mb-20 { + margin-bottom: -5rem; +} + +.-ml-20 { + margin-left: -5rem; +} + +.-mt-24 { + margin-top: -6rem; +} + +.-mr-24 { + margin-right: -6rem; +} + +.-mb-24 { + margin-bottom: -6rem; +} + +.-ml-24 { + margin-left: -6rem; +} + +.-mt-32 { + margin-top: -8rem; +} + +.-mr-32 { + margin-right: -8rem; +} + +.-mb-32 { + margin-bottom: -8rem; +} + +.-ml-32 { + margin-left: -8rem; +} + +.-mt-px { + margin-top: -1px; +} + +.-mr-px { + margin-right: -1px; +} + +.-mb-px { + margin-bottom: -1px; +} + +.-ml-px { + margin-left: -1px; +} + +.opacity-0 { + opacity: 0; +} + +.opacity-25 { + opacity: .25; +} + +.opacity-50 { + opacity: .5; +} + +.opacity-75 { + opacity: .75; +} + +.opacity-100 { + opacity: 1; +} + +.outline-none { + outline: 0; +} + +.focus\:outline-none:focus { + outline: 0; +} + +.overflow-auto { + overflow: auto; +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-visible { + overflow: visible; +} + +.overflow-scroll { + overflow: scroll; +} + +.overflow-x-auto { + overflow-x: auto; +} + +.overflow-y-auto { + overflow-y: auto; +} + +.overflow-x-hidden { + overflow-x: hidden; +} + +.overflow-y-hidden { + overflow-y: hidden; +} + +.overflow-x-visible { + overflow-x: visible; +} + +.overflow-y-visible { + overflow-y: visible; +} + +.overflow-x-scroll { + overflow-x: scroll; +} + +.overflow-y-scroll { + overflow-y: scroll; +} + +.scrolling-touch { + -webkit-overflow-scrolling: touch; +} + +.scrolling-auto { + -webkit-overflow-scrolling: auto; +} + +.p-0 { + padding: 0; +} + +.p-1 { + padding: .25rem; +} + +.p-2 { + padding: .5rem; +} + +.p-3 { + padding: .75rem; +} + +.p-4 { + padding: 1rem; +} + +.p-5 { + padding: 1.25rem; +} + +.p-6 { + padding: 1.5rem; +} + +.p-8 { + padding: 2rem; +} + +.p-10 { + padding: 2.5rem; +} + +.p-12 { + padding: 3rem; +} + +.p-16 { + padding: 4rem; +} + +.p-20 { + padding: 5rem; +} + +.p-24 { + padding: 6rem; +} + +.p-32 { + padding: 8rem; +} + +.p-px { + padding: 1px; +} + +.py-0 { + padding-top: 0; + padding-bottom: 0; +} + +.px-0 { + padding-left: 0; + padding-right: 0; +} + +.py-1 { + padding-top: .25rem; + padding-bottom: .25rem; +} + +.px-1 { + padding-left: .25rem; + padding-right: .25rem; +} + +.py-2 { + padding-top: .5rem; + padding-bottom: .5rem; +} + +.px-2 { + padding-left: .5rem; + padding-right: .5rem; +} + +.py-3 { + padding-top: .75rem; + padding-bottom: .75rem; +} + +.px-3 { + padding-left: .75rem; + padding-right: .75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.px-8 { + padding-left: 2rem; + padding-right: 2rem; +} + +.py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} + +.px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; +} + +.py-12 { + padding-top: 3rem; + padding-bottom: 3rem; +} + +.px-12 { + padding-left: 3rem; + padding-right: 3rem; +} + +.py-16 { + padding-top: 4rem; + padding-bottom: 4rem; +} + +.px-16 { + padding-left: 4rem; + padding-right: 4rem; +} + +.py-20 { + padding-top: 5rem; + padding-bottom: 5rem; +} + +.px-20 { + padding-left: 5rem; + padding-right: 5rem; +} + +.py-24 { + padding-top: 6rem; + padding-bottom: 6rem; +} + +.px-24 { + padding-left: 6rem; + padding-right: 6rem; +} + +.py-32 { + padding-top: 8rem; + padding-bottom: 8rem; +} + +.px-32 { + padding-left: 8rem; + padding-right: 8rem; +} + +.py-px { + padding-top: 1px; + padding-bottom: 1px; +} + +.px-px { + padding-left: 1px; + padding-right: 1px; +} + +.pt-0 { + padding-top: 0; +} + +.pr-0 { + padding-right: 0; +} + +.pb-0 { + padding-bottom: 0; +} + +.pl-0 { + padding-left: 0; +} + +.pt-1 { + padding-top: .25rem; +} + +.pr-1 { + padding-right: .25rem; +} + +.pb-1 { + padding-bottom: .25rem; +} + +.pl-1 { + padding-left: .25rem; +} + +.pt-2 { + padding-top: .5rem; +} + +.pr-2 { + padding-right: .5rem; +} + +.pb-2 { + padding-bottom: .5rem; +} + +.pl-2 { + padding-left: .5rem; +} + +.pt-3 { + padding-top: .75rem; +} + +.pr-3 { + padding-right: .75rem; +} + +.pb-3 { + padding-bottom: .75rem; +} + +.pl-3 { + padding-left: .75rem; +} + +.pt-4 { + padding-top: 1rem; +} + +.pr-4 { + padding-right: 1rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + +.pl-4 { + padding-left: 1rem; +} + +.pt-5 { + padding-top: 1.25rem; +} + +.pr-5 { + padding-right: 1.25rem; +} + +.pb-5 { + padding-bottom: 1.25rem; +} + +.pl-5 { + padding-left: 1.25rem; +} + +.pt-6 { + padding-top: 1.5rem; +} + +.pr-6 { + padding-right: 1.5rem; +} + +.pb-6 { + padding-bottom: 1.5rem; +} + +.pl-6 { + padding-left: 1.5rem; +} + +.pt-8 { + padding-top: 2rem; +} + +.pr-8 { + padding-right: 2rem; +} + +.pb-8 { + padding-bottom: 2rem; +} + +.pl-8 { + padding-left: 2rem; +} + +.pt-10 { + padding-top: 2.5rem; +} + +.pr-10 { + padding-right: 2.5rem; +} + +.pb-10 { + padding-bottom: 2.5rem; +} + +.pl-10 { + padding-left: 2.5rem; +} + +.pt-12 { + padding-top: 3rem; +} + +.pr-12 { + padding-right: 3rem; +} + +.pb-12 { + padding-bottom: 3rem; +} + +.pl-12 { + padding-left: 3rem; +} + +.pt-16 { + padding-top: 4rem; +} + +.pr-16 { + padding-right: 4rem; +} + +.pb-16 { + padding-bottom: 4rem; +} + +.pl-16 { + padding-left: 4rem; +} + +.pt-20 { + padding-top: 5rem; +} + +.pr-20 { + padding-right: 5rem; +} + +.pb-20 { + padding-bottom: 5rem; +} + +.pl-20 { + padding-left: 5rem; +} + +.pt-24 { + padding-top: 6rem; +} + +.pr-24 { + padding-right: 6rem; +} + +.pb-24 { + padding-bottom: 6rem; +} + +.pl-24 { + padding-left: 6rem; +} + +.pt-32 { + padding-top: 8rem; +} + +.pr-32 { + padding-right: 8rem; +} + +.pb-32 { + padding-bottom: 8rem; +} + +.pl-32 { + padding-left: 8rem; +} + +.pt-px { + padding-top: 1px; +} + +.pr-px { + padding-right: 1px; +} + +.pb-px { + padding-bottom: 1px; +} + +.pl-px { + padding-left: 1px; +} + +.pointer-events-none { + pointer-events: none; +} + +.pointer-events-auto { + pointer-events: auto; +} + +.static { + position: static; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +.pin-none { + top: auto; + right: auto; + bottom: auto; + left: auto; +} + +.pin { + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.pin-y { + top: 0; + bottom: 0; +} + +.pin-x { + right: 0; + left: 0; +} + +.pin-t { + top: 0; +} + +.pin-r { + right: 0; +} + +.pin-b { + bottom: 0; +} + +.pin-l { + left: 0; +} + +.resize-none { + resize: none; +} + +.resize-y { + resize: vertical; +} + +.resize-x { + resize: horizontal; +} + +.resize { + resize: both; +} + +.shadow { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); +} + +.shadow-md { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); +} + +.shadow-lg { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); +} + +.shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); +} + +.shadow-outline { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); +} + +.shadow-none { + box-shadow: none; +} + +.hover\:shadow:hover { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); +} + +.hover\:shadow-md:hover { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); +} + +.hover\:shadow-lg:hover { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); +} + +.hover\:shadow-inner:hover { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); +} + +.hover\:shadow-outline:hover { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); +} + +.hover\:shadow-none:hover { + box-shadow: none; +} + +.focus\:shadow:focus { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); +} + +.focus\:shadow-md:focus { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); +} + +.focus\:shadow-lg:focus { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); +} + +.focus\:shadow-inner:focus { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); +} + +.focus\:shadow-outline:focus { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); +} + +.focus\:shadow-none:focus { + box-shadow: none; +} + +.fill-current { + fill: currentColor; +} + +.stroke-current { + stroke: currentColor; +} + +.table-auto { + table-layout: auto; +} + +.table-fixed { + table-layout: fixed; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-transparent { + color: transparent; +} + +.text-black { + color: #22292f; +} + +.text-grey-darkest { + color: #3d4852; +} + +.text-grey-darker { + color: #606f7b; +} + +.text-grey-dark { + color: #0B346E; +} + +.text-grey { + color: #b8c2cc; +} + +.text-grey-light { + color: #dae1e7; +} + +.text-grey-lighter { + color: #f1f5f8; +} + +.text-grey-lightest { + color: #f8fafc; +} + +.text-white { + color: #fff; +} + +.text-indigo-darkest { + color: #191e38; +} + +.text-indigo-darker { + color: #2EA9DF; +} + +.text-indigo-dark { + color: #005CAF; +} + +.text-indigo { + color: #005CAF; +} + +.text-indigo-light { + color: #7886d7; +} + +.text-indigo-lighter { + color: #A5DEE4; +} + +.text-indigo-lightest { + color: #e6e8ff; +} + +.hover\:text-transparent:hover { + color: transparent; +} + +.hover\:text-black:hover { + color: #22292f; +} + +.hover\:text-grey-darkest:hover { + color: #3d4852; +} + +.hover\:text-grey-darker:hover { + color: #606f7b; +} + +.hover\:text-grey-dark:hover { + color: #0B346E; +} + +.hover\:text-grey:hover { + color: #b8c2cc; +} + +.hover\:text-grey-light:hover { + color: #dae1e7; +} + +.hover\:text-grey-lighter:hover { + color: #f1f5f8; +} + +.hover\:text-grey-lightest:hover { + color: #f8fafc; +} + +.hover\:text-white:hover { + color: #fff; +} + +.hover\:text-indigo-darkest:hover { + color: #191e38; +} + +.hover\:text-indigo-darker:hover { + color: #2EA9DF; +} + +.hover\:text-indigo-dark:hover { + color: #005CAF; +} + +.hover\:text-indigo:hover { + color: #005CAF; +} + +.hover\:text-indigo-light:hover { + color: #7886d7; +} + +.hover\:text-indigo-lighter:hover { + color: #A5DEE4; +} + +.hover\:text-indigo-lightest:hover { + color: #e6e8ff; +} + +.focus\:text-transparent:focus { + color: transparent; +} + +.focus\:text-black:focus { + color: #22292f; +} + +.focus\:text-grey-darkest:focus { + color: #3d4852; +} + +.focus\:text-grey-darker:focus { + color: #606f7b; +} + +.focus\:text-grey-dark:focus { + color: #0B346E; +} + +.focus\:text-grey:focus { + color: #b8c2cc; +} + +.focus\:text-grey-light:focus { + color: #dae1e7; +} + +.focus\:text-grey-lighter:focus { + color: #f1f5f8; +} + +.focus\:text-grey-lightest:focus { + color: #f8fafc; +} + +.focus\:text-white:focus { + color: #fff; +} + +.focus\:text-indigo-darkest:focus { + color: #191e38; +} + +.focus\:text-indigo-darker:focus { + color: #2EA9DF; +} + +.focus\:text-indigo-dark:focus { + color: #005CAF; +} + +.focus\:text-indigo:focus { + color: #005CAF; +} + +.focus\:text-indigo-light:focus { + color: #7886d7; +} + +.focus\:text-indigo-lighter:focus { + color: #A5DEE4; +} + +.focus\:text-indigo-lightest:focus { + color: #e6e8ff; +} + +.text-xs { + font-size: .75rem; +} + +.text-sm { + font-size: .875rem; +} + +.text-base { + font-size: 1rem; +} + +.text-lg { + font-size: 1.125rem; +} + +.text-xl { + font-size: 1.25rem; +} + +.text-2xl { + font-size: 1.5rem; +} + +.text-3xl { + font-size: 1.875rem; +} + +.text-4xl { + font-size: 2.25rem; +} + +.text-5xl { + font-size: 3rem; +} + +.italic { + font-style: italic; +} + +.roman { + font-style: normal; +} + +.uppercase { + text-transform: uppercase; +} + +.lowercase { + text-transform: lowercase; +} + +.capitalize { + text-transform: capitalize; +} + +.normal-case { + text-transform: none; +} + +.underline { + text-decoration: underline; +} + +.line-through { + text-decoration: line-through; +} + +.no-underline { + text-decoration: none; +} + +.antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +.hover\:italic:hover { + font-style: italic; +} + +.hover\:roman:hover { + font-style: normal; +} + +.hover\:uppercase:hover { + text-transform: uppercase; +} + +.hover\:lowercase:hover { + text-transform: lowercase; +} + +.hover\:capitalize:hover { + text-transform: capitalize; +} + +.hover\:normal-case:hover { + text-transform: none; +} + +.hover\:underline:hover { + text-decoration: underline; +} + +.hover\:line-through:hover { + text-decoration: line-through; +} + +.hover\:no-underline:hover { + text-decoration: none; +} + +.hover\:antialiased:hover { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.hover\:subpixel-antialiased:hover { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +.focus\:italic:focus { + font-style: italic; +} + +.focus\:roman:focus { + font-style: normal; +} + +.focus\:uppercase:focus { + text-transform: uppercase; +} + +.focus\:lowercase:focus { + text-transform: lowercase; +} + +.focus\:capitalize:focus { + text-transform: capitalize; +} + +.focus\:normal-case:focus { + text-transform: none; +} + +.focus\:underline:focus { + text-decoration: underline; +} + +.focus\:line-through:focus { + text-decoration: line-through; +} + +.focus\:no-underline:focus { + text-decoration: none; +} + +.focus\:antialiased:focus { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.focus\:subpixel-antialiased:focus { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; +} + +.tracking-tight { + letter-spacing: -0.05em; +} + +.tracking-normal { + letter-spacing: 0; +} + +.tracking-wide { + letter-spacing: .05em; +} + +.select-none { + user-select: none; +} + +.select-text { + user-select: text; +} + +.align-baseline { + vertical-align: baseline; +} + +.align-top { + vertical-align: top; +} + +.align-middle { + vertical-align: middle; +} + +.align-bottom { + vertical-align: bottom; +} + +.align-text-top { + vertical-align: text-top; +} + +.align-text-bottom { + vertical-align: text-bottom; +} + +.visible { + visibility: visible; +} + +.invisible { + visibility: hidden; +} + +.whitespace-normal { + white-space: normal; +} + +.whitespace-no-wrap { + white-space: nowrap; +} + +.whitespace-pre { + white-space: pre; +} + +.whitespace-pre-line { + white-space: pre-line; +} + +.whitespace-pre-wrap { + white-space: pre-wrap; +} + +.break-words { + word-wrap: break-word; +} + +.break-normal { + word-wrap: normal; +} + +.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.w-1 { + width: .25rem; +} + +.w-2 { + width: .5rem; +} + +.w-3 { + width: .75rem; +} + +.w-4 { + width: 1rem; +} + +.w-5 { + width: 1.25rem; +} + +.w-6 { + width: 1.5rem; +} + +.w-8 { + width: 2rem; +} + +.w-10 { + width: 2.5rem; +} + +.w-12 { + width: 3rem; +} + +.w-16 { + width: 4rem; +} + +.w-24 { + width: 6rem; +} + +.w-32 { + width: 8rem; +} + +.w-48 { + width: 12rem; +} + +.w-64 { + width: 16rem; +} + +.w-auto { + width: auto; +} + +.w-px { + width: 1px; +} + +.w-1\/2 { + width: 50%; +} + +.w-1\/3 { + width: 33.33333%; +} + +.w-2\/3 { + width: 66.66667%; +} + +.w-1\/4 { + width: 25%; +} + +.w-3\/4 { + width: 75%; +} + +.w-1\/5 { + width: 20%; +} + +.w-2\/5 { + width: 40%; +} + +.w-3\/5 { + width: 60%; +} + +.w-4\/5 { + width: 80%; +} + +.w-1\/6 { + width: 16.66667%; +} + +.w-5\/6 { + width: 83.33333%; +} + +.w-full { + width: 100%; +} + +.w-screen { + width: 100vw; +} + +.z-0 { + z-index: 0; +} + +.z-10 { + z-index: 10; +} + +.z-20 { + z-index: 20; +} + +.z-30 { + z-index: 30; +} + +.z-40 { + z-index: 40; +} + +.z-50 { + z-index: 50; +} + +.z-auto { + z-index: auto; +} + +@media (min-width: 576px) { + .sm\:-order-1 { + order: -1; + } + + .sm\:order-0 { + order: 0; + } + + .sm\:order-1 { + order: 1; + } + + .sm\:order-2 { + order: 2; + } + + .sm\:list-reset { + list-style: none; + padding: 0; + } + + .sm\:appearance-none { + appearance: none; + } + + .sm\:bg-fixed { + background-attachment: fixed; + } + + .sm\:bg-local { + background-attachment: local; + } + + .sm\:bg-scroll { + background-attachment: scroll; + } + + .sm\:bg-transparent { + background-color: transparent; + } + + .sm\:bg-black { + background-color: #22292f; + } + + .sm\:bg-grey-darkest { + background-color: #3d4852; + } + + .sm\:bg-grey-darker { + background-color: #606f7b; + } + + .sm\:bg-grey-dark { + background-color: #0B346E; + } + + .sm\:bg-grey { + background-color: #b8c2cc; + } + + .sm\:bg-grey-light { + background-color: #dae1e7; + } + + .sm\:bg-grey-lighter { + background-color: #f1f5f8; + } + + .sm\:bg-grey-lightest { + background-color: #f8fafc; + } + + .sm\:bg-white { + background-color: #fff; + } + + .sm\:bg-indigo-darkest { + background-color: #191e38; + } + + .sm\:bg-indigo-darker { + background-color: #2EA9DF; + } + + .sm\:bg-indigo-dark { + background-color: #005CAF; + } + + .sm\:bg-indigo { + background-color: #005CAF; + } + + .sm\:bg-indigo-light { + background-color: #7886d7; + } + + .sm\:bg-indigo-lighter { + background-color: #A5DEE4; + } + + .sm\:bg-indigo-lightest { + background-color: #e6e8ff; + } + + .sm\:hover\:bg-transparent:hover { + background-color: transparent; + } + + .sm\:hover\:bg-black:hover { + background-color: #22292f; + } + + .sm\:hover\:bg-grey-darkest:hover { + background-color: #3d4852; + } + + .sm\:hover\:bg-grey-darker:hover { + background-color: #606f7b; + } + + .sm\:hover\:bg-grey-dark:hover { + background-color: #0B346E; + } + + .sm\:hover\:bg-grey:hover { + background-color: #b8c2cc; + } + + .sm\:hover\:bg-grey-light:hover { + background-color: #dae1e7; + } + + .sm\:hover\:bg-grey-lighter:hover { + background-color: #f1f5f8; + } + + .sm\:hover\:bg-grey-lightest:hover { + background-color: #f8fafc; + } + + .sm\:hover\:bg-white:hover { + background-color: #fff; + } + + .sm\:hover\:bg-indigo-darkest:hover { + background-color: #191e38; + } + + .sm\:hover\:bg-indigo-darker:hover { + background-color: #2EA9DF; + } + + .sm\:hover\:bg-indigo-dark:hover { + background-color: #005CAF; + } + + .sm\:hover\:bg-indigo:hover { + background-color: #005CAF; + } + + .sm\:hover\:bg-indigo-light:hover { + background-color: #7886d7; + } + + .sm\:hover\:bg-indigo-lighter:hover { + background-color: #A5DEE4; + } + + .sm\:hover\:bg-indigo-lightest:hover { + background-color: #e6e8ff; + } + + .sm\:focus\:bg-transparent:focus { + background-color: transparent; + } + + .sm\:focus\:bg-black:focus { + background-color: #22292f; + } + + .sm\:focus\:bg-grey-darkest:focus { + background-color: #3d4852; + } + + .sm\:focus\:bg-grey-darker:focus { + background-color: #606f7b; + } + + .sm\:focus\:bg-grey-dark:focus { + background-color: #0B346E; + } + + .sm\:focus\:bg-grey:focus { + background-color: #b8c2cc; + } + + .sm\:focus\:bg-grey-light:focus { + background-color: #dae1e7; + } + + .sm\:focus\:bg-grey-lighter:focus { + background-color: #f1f5f8; + } + + .sm\:focus\:bg-grey-lightest:focus { + background-color: #f8fafc; + } + + .sm\:focus\:bg-white:focus { + background-color: #fff; + } + + .sm\:focus\:bg-indigo-darkest:focus { + background-color: #191e38; + } + + .sm\:focus\:bg-indigo-darker:focus { + background-color: #2EA9DF; + } + + .sm\:focus\:bg-indigo-dark:focus { + background-color: #005CAF; + } + + .sm\:focus\:bg-indigo:focus { + background-color: #005CAF; + } + + .sm\:focus\:bg-indigo-light:focus { + background-color: #7886d7; + } + + .sm\:focus\:bg-indigo-lighter:focus { + background-color: #A5DEE4; + } + + .sm\:focus\:bg-indigo-lightest:focus { + background-color: #e6e8ff; + } + + .sm\:bg-bottom { + background-position: bottom; + } + + .sm\:bg-center { + background-position: center; + } + + .sm\:bg-left { + background-position: left; + } + + .sm\:bg-left-bottom { + background-position: left bottom; + } + + .sm\:bg-left-top { + background-position: left top; + } + + .sm\:bg-right { + background-position: right; + } + + .sm\:bg-right-bottom { + background-position: right bottom; + } + + .sm\:bg-right-top { + background-position: right top; + } + + .sm\:bg-top { + background-position: top; + } + + .sm\:bg-repeat { + background-repeat: repeat; + } + + .sm\:bg-no-repeat { + background-repeat: no-repeat; + } + + .sm\:bg-repeat-x { + background-repeat: repeat-x; + } + + .sm\:bg-repeat-y { + background-repeat: repeat-y; + } + + .sm\:bg-auto { + background-size: auto; + } + + .sm\:bg-cover { + background-size: cover; + } + + .sm\:bg-contain { + background-size: contain; + } + + .sm\:border-transparent { + border-color: transparent; + } + + .sm\:border-black { + border-color: #22292f; + } + + .sm\:border-grey-darkest { + border-color: #3d4852; + } + + .sm\:border-grey-darker { + border-color: #606f7b; + } + + .sm\:border-grey-dark { + border-color: #0B346E; + } + + .sm\:border-grey { + border-color: #b8c2cc; + } + + .sm\:border-grey-light { + border-color: #dae1e7; + } + + .sm\:border-grey-lighter { + border-color: #f1f5f8; + } + + .sm\:border-grey-lightest { + border-color: #f8fafc; + } + + .sm\:border-white { + border-color: #fff; + } + + .sm\:border-indigo-darkest { + border-color: #191e38; + } + + .sm\:border-indigo-darker { + border-color: #2EA9DF; + } + + .sm\:border-indigo-dark { + border-color: #005CAF; + } + + .sm\:border-indigo { + border-color: #005CAF; + } + + .sm\:border-indigo-light { + border-color: #7886d7; + } + + .sm\:border-indigo-lighter { + border-color: #A5DEE4; + } + + .sm\:border-indigo-lightest { + border-color: #e6e8ff; + } + + .sm\:hover\:border-transparent:hover { + border-color: transparent; + } + + .sm\:hover\:border-black:hover { + border-color: #22292f; + } + + .sm\:hover\:border-grey-darkest:hover { + border-color: #3d4852; + } + + .sm\:hover\:border-grey-darker:hover { + border-color: #606f7b; + } + + .sm\:hover\:border-grey-dark:hover { + border-color: #0B346E; + } + + .sm\:hover\:border-grey:hover { + border-color: #b8c2cc; + } + + .sm\:hover\:border-grey-light:hover { + border-color: #dae1e7; + } + + .sm\:hover\:border-grey-lighter:hover { + border-color: #f1f5f8; + } + + .sm\:hover\:border-grey-lightest:hover { + border-color: #f8fafc; + } + + .sm\:hover\:border-white:hover { + border-color: #fff; + } + + .sm\:hover\:border-indigo-darkest:hover { + border-color: #191e38; + } + + .sm\:hover\:border-indigo-darker:hover { + border-color: #2EA9DF; + } + + .sm\:hover\:border-indigo-dark:hover { + border-color: #005CAF; + } + + .sm\:hover\:border-indigo:hover { + border-color: #005CAF; + } + + .sm\:hover\:border-indigo-light:hover { + border-color: #7886d7; + } + + .sm\:hover\:border-indigo-lighter:hover { + border-color: #A5DEE4; + } + + .sm\:hover\:border-indigo-lightest:hover { + border-color: #e6e8ff; + } + + .sm\:focus\:border-transparent:focus { + border-color: transparent; + } + + .sm\:focus\:border-black:focus { + border-color: #22292f; + } + + .sm\:focus\:border-grey-darkest:focus { + border-color: #3d4852; + } + + .sm\:focus\:border-grey-darker:focus { + border-color: #606f7b; + } + + .sm\:focus\:border-grey-dark:focus { + border-color: #0B346E; + } + + .sm\:focus\:border-grey:focus { + border-color: #b8c2cc; + } + + .sm\:focus\:border-grey-light:focus { + border-color: #dae1e7; + } + + .sm\:focus\:border-grey-lighter:focus { + border-color: #f1f5f8; + } + + .sm\:focus\:border-grey-lightest:focus { + border-color: #f8fafc; + } + + .sm\:focus\:border-white:focus { + border-color: #fff; + } + + .sm\:focus\:border-indigo-darkest:focus { + border-color: #191e38; + } + + .sm\:focus\:border-indigo-darker:focus { + border-color: #2EA9DF; + } + + .sm\:focus\:border-indigo-dark:focus { + border-color: #005CAF; + } + + .sm\:focus\:border-indigo:focus { + border-color: #005CAF; + } + + .sm\:focus\:border-indigo-light:focus { + border-color: #7886d7; + } + + .sm\:focus\:border-indigo-lighter:focus { + border-color: #A5DEE4; + } + + .sm\:focus\:border-indigo-lightest:focus { + border-color: #e6e8ff; + } + + .sm\:rounded-none { + border-radius: 0; + } + + .sm\:rounded-sm { + border-radius: .125rem; + } + + .sm\:rounded { + border-radius: .25rem; + } + + .sm\:rounded-lg { + border-radius: .5rem; + } + + .sm\:rounded-full { + border-radius: 9999px; + } + + .sm\:rounded-t-none { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .sm\:rounded-r-none { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .sm\:rounded-b-none { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .sm\:rounded-l-none { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .sm\:rounded-t-sm { + border-top-left-radius: .125rem; + border-top-right-radius: .125rem; + } + + .sm\:rounded-r-sm { + border-top-right-radius: .125rem; + border-bottom-right-radius: .125rem; + } + + .sm\:rounded-b-sm { + border-bottom-right-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .sm\:rounded-l-sm { + border-top-left-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .sm\:rounded-t { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; + } + + .sm\:rounded-r { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; + } + + .sm\:rounded-b { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .sm\:rounded-l { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .sm\:rounded-t-lg { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + } + + .sm\:rounded-r-lg { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem; + } + + .sm\:rounded-b-lg { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .sm\:rounded-l-lg { + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .sm\:rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; + } + + .sm\:rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; + } + + .sm\:rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .sm\:rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .sm\:rounded-tl-none { + border-top-left-radius: 0; + } + + .sm\:rounded-tr-none { + border-top-right-radius: 0; + } + + .sm\:rounded-br-none { + border-bottom-right-radius: 0; + } + + .sm\:rounded-bl-none { + border-bottom-left-radius: 0; + } + + .sm\:rounded-tl-sm { + border-top-left-radius: .125rem; + } + + .sm\:rounded-tr-sm { + border-top-right-radius: .125rem; + } + + .sm\:rounded-br-sm { + border-bottom-right-radius: .125rem; + } + + .sm\:rounded-bl-sm { + border-bottom-left-radius: .125rem; + } + + .sm\:rounded-tl { + border-top-left-radius: .25rem; + } + + .sm\:rounded-tr { + border-top-right-radius: .25rem; + } + + .sm\:rounded-br { + border-bottom-right-radius: .25rem; + } + + .sm\:rounded-bl { + border-bottom-left-radius: .25rem; + } + + .sm\:rounded-tl-lg { + border-top-left-radius: .5rem; + } + + .sm\:rounded-tr-lg { + border-top-right-radius: .5rem; + } + + .sm\:rounded-br-lg { + border-bottom-right-radius: .5rem; + } + + .sm\:rounded-bl-lg { + border-bottom-left-radius: .5rem; + } + + .sm\:rounded-tl-full { + border-top-left-radius: 9999px; + } + + .sm\:rounded-tr-full { + border-top-right-radius: 9999px; + } + + .sm\:rounded-br-full { + border-bottom-right-radius: 9999px; + } + + .sm\:rounded-bl-full { + border-bottom-left-radius: 9999px; + } + + .sm\:border-solid { + border-style: solid; + } + + .sm\:border-dashed { + border-style: dashed; + } + + .sm\:border-dotted { + border-style: dotted; + } + + .sm\:border-none { + border-style: none; + } + + .sm\:border-0 { + border-width: 0; + } + + .sm\:border-2 { + border-width: 2px; + } + + .sm\:border-4 { + border-width: 4px; + } + + .sm\:border-8 { + border-width: 8px; + } + + .sm\:border { + border-width: 1px; + } + + .sm\:border-t-0 { + border-top-width: 0; + } + + .sm\:border-r-0 { + border-right-width: 0; + } + + .sm\:border-b-0 { + border-bottom-width: 0; + } + + .sm\:border-l-0 { + border-left-width: 0; + } + + .sm\:border-t-2 { + border-top-width: 2px; + } + + .sm\:border-r-2 { + border-right-width: 2px; + } + + .sm\:border-b-2 { + border-bottom-width: 2px; + } + + .sm\:border-l-2 { + border-left-width: 2px; + } + + .sm\:border-t-4 { + border-top-width: 4px; + } + + .sm\:border-r-4 { + border-right-width: 4px; + } + + .sm\:border-b-4 { + border-bottom-width: 4px; + } + + .sm\:border-l-4 { + border-left-width: 4px; + } + + .sm\:border-t-8 { + border-top-width: 8px; + } + + .sm\:border-r-8 { + border-right-width: 8px; + } + + .sm\:border-b-8 { + border-bottom-width: 8px; + } + + .sm\:border-l-8 { + border-left-width: 8px; + } + + .sm\:border-t { + border-top-width: 1px; + } + + .sm\:border-r { + border-right-width: 1px; + } + + .sm\:border-b { + border-bottom-width: 1px; + } + + .sm\:border-l { + border-left-width: 1px; + } + + .sm\:hover\:border-0:hover { + border-width: 0; + } + + .sm\:hover\:border-2:hover { + border-width: 2px; + } + + .sm\:hover\:border-4:hover { + border-width: 4px; + } + + .sm\:hover\:border-8:hover { + border-width: 8px; + } + + .sm\:hover\:border:hover { + border-width: 1px; + } + + .sm\:hover\:border-t-0:hover { + border-top-width: 0; + } + + .sm\:hover\:border-r-0:hover { + border-right-width: 0; + } + + .sm\:hover\:border-b-0:hover { + border-bottom-width: 0; + } + + .sm\:hover\:border-l-0:hover { + border-left-width: 0; + } + + .sm\:hover\:border-t-2:hover { + border-top-width: 2px; + } + + .sm\:hover\:border-r-2:hover { + border-right-width: 2px; + } + + .sm\:hover\:border-b-2:hover { + border-bottom-width: 2px; + } + + .sm\:hover\:border-l-2:hover { + border-left-width: 2px; + } + + .sm\:hover\:border-t-4:hover { + border-top-width: 4px; + } + + .sm\:hover\:border-r-4:hover { + border-right-width: 4px; + } + + .sm\:hover\:border-b-4:hover { + border-bottom-width: 4px; + } + + .sm\:hover\:border-l-4:hover { + border-left-width: 4px; + } + + .sm\:hover\:border-t-8:hover { + border-top-width: 8px; + } + + .sm\:hover\:border-r-8:hover { + border-right-width: 8px; + } + + .sm\:hover\:border-b-8:hover { + border-bottom-width: 8px; + } + + .sm\:hover\:border-l-8:hover { + border-left-width: 8px; + } + + .sm\:hover\:border-t:hover { + border-top-width: 1px; + } + + .sm\:hover\:border-r:hover { + border-right-width: 1px; + } + + .sm\:hover\:border-b:hover { + border-bottom-width: 1px; + } + + .sm\:hover\:border-l:hover { + border-left-width: 1px; + } + + .sm\:cursor-auto { + cursor: auto; + } + + .sm\:cursor-default { + cursor: default; + } + + .sm\:cursor-pointer { + cursor: pointer; + } + + .sm\:cursor-wait { + cursor: wait; + } + + .sm\:cursor-move { + cursor: move; + } + + .sm\:cursor-not-allowed { + cursor: not-allowed; + } + + .sm\:hover\:cursor-auto:hover { + cursor: auto; + } + + .sm\:hover\:cursor-default:hover { + cursor: default; + } + + .sm\:hover\:cursor-pointer:hover { + cursor: pointer; + } + + .sm\:hover\:cursor-wait:hover { + cursor: wait; + } + + .sm\:hover\:cursor-move:hover { + cursor: move; + } + + .sm\:hover\:cursor-not-allowed:hover { + cursor: not-allowed; + } + + .sm\:block { + display: block; + } + + .sm\:inline-block { + display: inline-block; + } + + .sm\:inline { + display: inline; + } + + .sm\:table { + display: table; + } + + .sm\:table-row { + display: table-row; + } + + .sm\:table-cell { + display: table-cell; + } + + .sm\:hidden { + display: none; + } + + .sm\:flex { + display: flex; + } + + .sm\:inline-flex { + display: inline-flex; + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:flex-row-reverse { + flex-direction: row-reverse; + } + + .sm\:flex-col { + flex-direction: column; + } + + .sm\:flex-col-reverse { + flex-direction: column-reverse; + } + + .sm\:flex-wrap { + flex-wrap: wrap; + } + + .sm\:flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .sm\:flex-no-wrap { + flex-wrap: nowrap; + } + + .sm\:items-start { + align-items: flex-start; + } + + .sm\:items-end { + align-items: flex-end; + } + + .sm\:items-center { + align-items: center; + } + + .sm\:items-baseline { + align-items: baseline; + } + + .sm\:items-stretch { + align-items: stretch; + } + + .sm\:self-auto { + align-self: auto; + } + + .sm\:self-start { + align-self: flex-start; + } + + .sm\:self-end { + align-self: flex-end; + } + + .sm\:self-center { + align-self: center; + } + + .sm\:self-stretch { + align-self: stretch; + } + + .sm\:justify-start { + justify-content: flex-start; + } + + .sm\:justify-end { + justify-content: flex-end; + } + + .sm\:justify-center { + justify-content: center; + } + + .sm\:justify-between { + justify-content: space-between; + } + + .sm\:justify-around { + justify-content: space-around; + } + + .sm\:content-center { + align-content: center; + } + + .sm\:content-start { + align-content: flex-start; + } + + .sm\:content-end { + align-content: flex-end; + } + + .sm\:content-between { + align-content: space-between; + } + + .sm\:content-around { + align-content: space-around; + } + + .sm\:flex-1 { + flex: 1; + } + + .sm\:flex-auto { + flex: auto; + } + + .sm\:flex-initial { + flex: initial; + } + + .sm\:flex-none { + flex: none; + } + + .sm\:flex-grow { + flex-grow: 1; + } + + .sm\:flex-shrink { + flex-shrink: 1; + } + + .sm\:flex-no-grow { + flex-grow: 0; + } + + .sm\:flex-no-shrink { + flex-shrink: 0; + } + + .sm\:float-right { + float: right; + } + + .sm\:float-left { + float: left; + } + + .sm\:float-none { + float: none; + } + + .sm\:clearfix:after { + content: ""; + display: table; + clear: both; + } + + .sm\:font-sans { + font-family: Roboto, sans-serif; + } + + .sm\:font-serif { + font-family: Constantia, Lucida Bright, Lucidabright, Lucida Serif, Lucida, DejaVu Serif, Bitstream Vera Serif, Liberation Serif, Georgia, serif; + } + + .sm\:font-mono { + font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + } + + .sm\:font-hairline { + font-weight: 100; + } + + .sm\:font-thin { + font-weight: 200; + } + + .sm\:font-light { + font-weight: 300; + } + + .sm\:font-normal { + font-weight: 400; + } + + .sm\:font-medium { + font-weight: 500; + } + + .sm\:font-semibold { + font-weight: 600; + } + + .sm\:font-bold { + font-weight: 700; + } + + .sm\:font-extrabold { + font-weight: 800; + } + + .sm\:font-black { + font-weight: 900; + } + + .sm\:hover\:font-hairline:hover { + font-weight: 100; + } + + .sm\:hover\:font-thin:hover { + font-weight: 200; + } + + .sm\:hover\:font-light:hover { + font-weight: 300; + } + + .sm\:hover\:font-normal:hover { + font-weight: 400; + } + + .sm\:hover\:font-medium:hover { + font-weight: 500; + } + + .sm\:hover\:font-semibold:hover { + font-weight: 600; + } + + .sm\:hover\:font-bold:hover { + font-weight: 700; + } + + .sm\:hover\:font-extrabold:hover { + font-weight: 800; + } + + .sm\:hover\:font-black:hover { + font-weight: 900; + } + + .sm\:focus\:font-hairline:focus { + font-weight: 100; + } + + .sm\:focus\:font-thin:focus { + font-weight: 200; + } + + .sm\:focus\:font-light:focus { + font-weight: 300; + } + + .sm\:focus\:font-normal:focus { + font-weight: 400; + } + + .sm\:focus\:font-medium:focus { + font-weight: 500; + } + + .sm\:focus\:font-semibold:focus { + font-weight: 600; + } + + .sm\:focus\:font-bold:focus { + font-weight: 700; + } + + .sm\:focus\:font-extrabold:focus { + font-weight: 800; + } + + .sm\:focus\:font-black:focus { + font-weight: 900; + } + + .sm\:h-1 { + height: .25rem; + } + + .sm\:h-2 { + height: .5rem; + } + + .sm\:h-3 { + height: .75rem; + } + + .sm\:h-4 { + height: 1rem; + } + + .sm\:h-5 { + height: 1.25rem; + } + + .sm\:h-6 { + height: 1.5rem; + } + + .sm\:h-8 { + height: 2rem; + } + + .sm\:h-10 { + height: 2.5rem; + } + + .sm\:h-12 { + height: 3rem; + } + + .sm\:h-16 { + height: 4rem; + } + + .sm\:h-24 { + height: 6rem; + } + + .sm\:h-32 { + height: 8rem; + } + + .sm\:h-48 { + height: 12rem; + } + + .sm\:h-64 { + height: 16rem; + } + + .sm\:h-auto { + height: auto; + } + + .sm\:h-px { + height: 1px; + } + + .sm\:h-full { + height: 100%; + } + + .sm\:h-screen { + height: 100vh; + } + + .sm\:leading-none { + line-height: 1; + } + + .sm\:leading-tight { + line-height: 1.25; + } + + .sm\:leading-normal { + line-height: 1.5; + } + + .sm\:leading-loose { + line-height: 2; + } + + .sm\:m-0 { + margin: 0; + } + + .sm\:m-1 { + margin: .25rem; + } + + .sm\:m-2 { + margin: .5rem; + } + + .sm\:m-3 { + margin: .75rem; + } + + .sm\:m-4 { + margin: 1rem; + } + + .sm\:m-5 { + margin: 1.25rem; + } + + .sm\:m-6 { + margin: 1.5rem; + } + + .sm\:m-8 { + margin: 2rem; + } + + .sm\:m-10 { + margin: 2.5rem; + } + + .sm\:m-12 { + margin: 3rem; + } + + .sm\:m-16 { + margin: 4rem; + } + + .sm\:m-20 { + margin: 5rem; + } + + .sm\:m-24 { + margin: 6rem; + } + + .sm\:m-32 { + margin: 8rem; + } + + .sm\:m-auto { + margin: auto; + } + + .sm\:m-px { + margin: 1px; + } + + .sm\:my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .sm\:mx-0 { + margin-left: 0; + margin-right: 0; + } + + .sm\:my-1 { + margin-top: .25rem; + margin-bottom: .25rem; + } + + .sm\:mx-1 { + margin-left: .25rem; + margin-right: .25rem; + } + + .sm\:my-2 { + margin-top: .5rem; + margin-bottom: .5rem; + } + + .sm\:mx-2 { + margin-left: .5rem; + margin-right: .5rem; + } + + .sm\:my-3 { + margin-top: .75rem; + margin-bottom: .75rem; + } + + .sm\:mx-3 { + margin-left: .75rem; + margin-right: .75rem; + } + + .sm\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .sm\:mx-4 { + margin-left: 1rem; + margin-right: 1rem; + } + + .sm\:my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; + } + + .sm\:mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; + } + + .sm\:my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + } + + .sm\:mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; + } + + .sm\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + + .sm\:mx-8 { + margin-left: 2rem; + margin-right: 2rem; + } + + .sm\:my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; + } + + .sm\:mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; + } + + .sm\:my-12 { + margin-top: 3rem; + margin-bottom: 3rem; + } + + .sm\:mx-12 { + margin-left: 3rem; + margin-right: 3rem; + } + + .sm\:my-16 { + margin-top: 4rem; + margin-bottom: 4rem; + } + + .sm\:mx-16 { + margin-left: 4rem; + margin-right: 4rem; + } + + .sm\:my-20 { + margin-top: 5rem; + margin-bottom: 5rem; + } + + .sm\:mx-20 { + margin-left: 5rem; + margin-right: 5rem; + } + + .sm\:my-24 { + margin-top: 6rem; + margin-bottom: 6rem; + } + + .sm\:mx-24 { + margin-left: 6rem; + margin-right: 6rem; + } + + .sm\:my-32 { + margin-top: 8rem; + margin-bottom: 8rem; + } + + .sm\:mx-32 { + margin-left: 8rem; + margin-right: 8rem; + } + + .sm\:my-auto { + margin-top: auto; + margin-bottom: auto; + } + + .sm\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .sm\:my-px { + margin-top: 1px; + margin-bottom: 1px; + } + + .sm\:mx-px { + margin-left: 1px; + margin-right: 1px; + } + + .sm\:mt-0 { + margin-top: 0; + } + + .sm\:mr-0 { + margin-right: 0; + } + + .sm\:mb-0 { + margin-bottom: 0; + } + + .sm\:ml-0 { + margin-left: 0; + } + + .sm\:mt-1 { + margin-top: .25rem; + } + + .sm\:mr-1 { + margin-right: .25rem; + } + + .sm\:mb-1 { + margin-bottom: .25rem; + } + + .sm\:ml-1 { + margin-left: .25rem; + } + + .sm\:mt-2 { + margin-top: .5rem; + } + + .sm\:mr-2 { + margin-right: .5rem; + } + + .sm\:mb-2 { + margin-bottom: .5rem; + } + + .sm\:ml-2 { + margin-left: .5rem; + } + + .sm\:mt-3 { + margin-top: .75rem; + } + + .sm\:mr-3 { + margin-right: .75rem; + } + + .sm\:mb-3 { + margin-bottom: .75rem; + } + + .sm\:ml-3 { + margin-left: .75rem; + } + + .sm\:mt-4 { + margin-top: 1rem; + } + + .sm\:mr-4 { + margin-right: 1rem; + } + + .sm\:mb-4 { + margin-bottom: 1rem; + } + + .sm\:ml-4 { + margin-left: 1rem; + } + + .sm\:mt-5 { + margin-top: 1.25rem; + } + + .sm\:mr-5 { + margin-right: 1.25rem; + } + + .sm\:mb-5 { + margin-bottom: 1.25rem; + } + + .sm\:ml-5 { + margin-left: 1.25rem; + } + + .sm\:mt-6 { + margin-top: 1.5rem; + } + + .sm\:mr-6 { + margin-right: 1.5rem; + } + + .sm\:mb-6 { + margin-bottom: 1.5rem; + } + + .sm\:ml-6 { + margin-left: 1.5rem; + } + + .sm\:mt-8 { + margin-top: 2rem; + } + + .sm\:mr-8 { + margin-right: 2rem; + } + + .sm\:mb-8 { + margin-bottom: 2rem; + } + + .sm\:ml-8 { + margin-left: 2rem; + } + + .sm\:mt-10 { + margin-top: 2.5rem; + } + + .sm\:mr-10 { + margin-right: 2.5rem; + } + + .sm\:mb-10 { + margin-bottom: 2.5rem; + } + + .sm\:ml-10 { + margin-left: 2.5rem; + } + + .sm\:mt-12 { + margin-top: 3rem; + } + + .sm\:mr-12 { + margin-right: 3rem; + } + + .sm\:mb-12 { + margin-bottom: 3rem; + } + + .sm\:ml-12 { + margin-left: 3rem; + } + + .sm\:mt-16 { + margin-top: 4rem; + } + + .sm\:mr-16 { + margin-right: 4rem; + } + + .sm\:mb-16 { + margin-bottom: 4rem; + } + + .sm\:ml-16 { + margin-left: 4rem; + } + + .sm\:mt-20 { + margin-top: 5rem; + } + + .sm\:mr-20 { + margin-right: 5rem; + } + + .sm\:mb-20 { + margin-bottom: 5rem; + } + + .sm\:ml-20 { + margin-left: 5rem; + } + + .sm\:mt-24 { + margin-top: 6rem; + } + + .sm\:mr-24 { + margin-right: 6rem; + } + + .sm\:mb-24 { + margin-bottom: 6rem; + } + + .sm\:ml-24 { + margin-left: 6rem; + } + + .sm\:mt-32 { + margin-top: 8rem; + } + + .sm\:mr-32 { + margin-right: 8rem; + } + + .sm\:mb-32 { + margin-bottom: 8rem; + } + + .sm\:ml-32 { + margin-left: 8rem; + } + + .sm\:mt-auto { + margin-top: auto; + } + + .sm\:mr-auto { + margin-right: auto; + } + + .sm\:mb-auto { + margin-bottom: auto; + } + + .sm\:ml-auto { + margin-left: auto; + } + + .sm\:mt-px { + margin-top: 1px; + } + + .sm\:mr-px { + margin-right: 1px; + } + + .sm\:mb-px { + margin-bottom: 1px; + } + + .sm\:ml-px { + margin-left: 1px; + } + + .sm\:max-h-full { + max-height: 100%; + } + + .sm\:max-h-screen { + max-height: 100vh; + } + + .sm\:max-w-xs { + max-width: 20rem; + } + + .sm\:max-w-sm { + max-width: 30rem; + } + + .sm\:max-w-md { + max-width: 40rem; + } + + .sm\:max-w-lg { + max-width: 50rem; + } + + .sm\:max-w-xl { + max-width: 60rem; + } + + .sm\:max-w-2xl { + max-width: 70rem; + } + + .sm\:max-w-3xl { + max-width: 80rem; + } + + .sm\:max-w-4xl { + max-width: 90rem; + } + + .sm\:max-w-5xl { + max-width: 100rem; + } + + .sm\:max-w-full { + max-width: 100%; + } + + .sm\:min-h-0 { + min-height: 0; + } + + .sm\:min-h-full { + min-height: 100%; + } + + .sm\:min-h-screen { + min-height: 100vh; + } + + .sm\:min-w-0 { + min-width: 0; + } + + .sm\:min-w-full { + min-width: 100%; + } + + .sm\:-m-0 { + margin: 0; + } + + .sm\:-m-1 { + margin: -0.25rem; + } + + .sm\:-m-2 { + margin: -0.5rem; + } + + .sm\:-m-3 { + margin: -0.75rem; + } + + .sm\:-m-4 { + margin: -1rem; + } + + .sm\:-m-5 { + margin: -1.25rem; + } + + .sm\:-m-6 { + margin: -1.5rem; + } + + .sm\:-m-8 { + margin: -2rem; + } + + .sm\:-m-10 { + margin: -2.5rem; + } + + .sm\:-m-12 { + margin: -3rem; + } + + .sm\:-m-16 { + margin: -4rem; + } + + .sm\:-m-20 { + margin: -5rem; + } + + .sm\:-m-24 { + margin: -6rem; + } + + .sm\:-m-32 { + margin: -8rem; + } + + .sm\:-m-px { + margin: -1px; + } + + .sm\:-my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .sm\:-mx-0 { + margin-left: 0; + margin-right: 0; + } + + .sm\:-my-1 { + margin-top: -0.25rem; + margin-bottom: -0.25rem; + } + + .sm\:-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; + } + + .sm\:-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; + } + + .sm\:-mx-2 { + margin-left: -0.5rem; + margin-right: -0.5rem; + } + + .sm\:-my-3 { + margin-top: -0.75rem; + margin-bottom: -0.75rem; + } + + .sm\:-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; + } + + .sm\:-my-4 { + margin-top: -1rem; + margin-bottom: -1rem; + } + + .sm\:-mx-4 { + margin-left: -1rem; + margin-right: -1rem; + } + + .sm\:-my-5 { + margin-top: -1.25rem; + margin-bottom: -1.25rem; + } + + .sm\:-mx-5 { + margin-left: -1.25rem; + margin-right: -1.25rem; + } + + .sm\:-my-6 { + margin-top: -1.5rem; + margin-bottom: -1.5rem; + } + + .sm\:-mx-6 { + margin-left: -1.5rem; + margin-right: -1.5rem; + } + + .sm\:-my-8 { + margin-top: -2rem; + margin-bottom: -2rem; + } + + .sm\:-mx-8 { + margin-left: -2rem; + margin-right: -2rem; + } + + .sm\:-my-10 { + margin-top: -2.5rem; + margin-bottom: -2.5rem; + } + + .sm\:-mx-10 { + margin-left: -2.5rem; + margin-right: -2.5rem; + } + + .sm\:-my-12 { + margin-top: -3rem; + margin-bottom: -3rem; + } + + .sm\:-mx-12 { + margin-left: -3rem; + margin-right: -3rem; + } + + .sm\:-my-16 { + margin-top: -4rem; + margin-bottom: -4rem; + } + + .sm\:-mx-16 { + margin-left: -4rem; + margin-right: -4rem; + } + + .sm\:-my-20 { + margin-top: -5rem; + margin-bottom: -5rem; + } + + .sm\:-mx-20 { + margin-left: -5rem; + margin-right: -5rem; + } + + .sm\:-my-24 { + margin-top: -6rem; + margin-bottom: -6rem; + } + + .sm\:-mx-24 { + margin-left: -6rem; + margin-right: -6rem; + } + + .sm\:-my-32 { + margin-top: -8rem; + margin-bottom: -8rem; + } + + .sm\:-mx-32 { + margin-left: -8rem; + margin-right: -8rem; + } + + .sm\:-my-px { + margin-top: -1px; + margin-bottom: -1px; + } + + .sm\:-mx-px { + margin-left: -1px; + margin-right: -1px; + } + + .sm\:-mt-0 { + margin-top: 0; + } + + .sm\:-mr-0 { + margin-right: 0; + } + + .sm\:-mb-0 { + margin-bottom: 0; + } + + .sm\:-ml-0 { + margin-left: 0; + } + + .sm\:-mt-1 { + margin-top: -0.25rem; + } + + .sm\:-mr-1 { + margin-right: -0.25rem; + } + + .sm\:-mb-1 { + margin-bottom: -0.25rem; + } + + .sm\:-ml-1 { + margin-left: -0.25rem; + } + + .sm\:-mt-2 { + margin-top: -0.5rem; + } + + .sm\:-mr-2 { + margin-right: -0.5rem; + } + + .sm\:-mb-2 { + margin-bottom: -0.5rem; + } + + .sm\:-ml-2 { + margin-left: -0.5rem; + } + + .sm\:-mt-3 { + margin-top: -0.75rem; + } + + .sm\:-mr-3 { + margin-right: -0.75rem; + } + + .sm\:-mb-3 { + margin-bottom: -0.75rem; + } + + .sm\:-ml-3 { + margin-left: -0.75rem; + } + + .sm\:-mt-4 { + margin-top: -1rem; + } + + .sm\:-mr-4 { + margin-right: -1rem; + } + + .sm\:-mb-4 { + margin-bottom: -1rem; + } + + .sm\:-ml-4 { + margin-left: -1rem; + } + + .sm\:-mt-5 { + margin-top: -1.25rem; + } + + .sm\:-mr-5 { + margin-right: -1.25rem; + } + + .sm\:-mb-5 { + margin-bottom: -1.25rem; + } + + .sm\:-ml-5 { + margin-left: -1.25rem; + } + + .sm\:-mt-6 { + margin-top: -1.5rem; + } + + .sm\:-mr-6 { + margin-right: -1.5rem; + } + + .sm\:-mb-6 { + margin-bottom: -1.5rem; + } + + .sm\:-ml-6 { + margin-left: -1.5rem; + } + + .sm\:-mt-8 { + margin-top: -2rem; + } + + .sm\:-mr-8 { + margin-right: -2rem; + } + + .sm\:-mb-8 { + margin-bottom: -2rem; + } + + .sm\:-ml-8 { + margin-left: -2rem; + } + + .sm\:-mt-10 { + margin-top: -2.5rem; + } + + .sm\:-mr-10 { + margin-right: -2.5rem; + } + + .sm\:-mb-10 { + margin-bottom: -2.5rem; + } + + .sm\:-ml-10 { + margin-left: -2.5rem; + } + + .sm\:-mt-12 { + margin-top: -3rem; + } + + .sm\:-mr-12 { + margin-right: -3rem; + } + + .sm\:-mb-12 { + margin-bottom: -3rem; + } + + .sm\:-ml-12 { + margin-left: -3rem; + } + + .sm\:-mt-16 { + margin-top: -4rem; + } + + .sm\:-mr-16 { + margin-right: -4rem; + } + + .sm\:-mb-16 { + margin-bottom: -4rem; + } + + .sm\:-ml-16 { + margin-left: -4rem; + } + + .sm\:-mt-20 { + margin-top: -5rem; + } + + .sm\:-mr-20 { + margin-right: -5rem; + } + + .sm\:-mb-20 { + margin-bottom: -5rem; + } + + .sm\:-ml-20 { + margin-left: -5rem; + } + + .sm\:-mt-24 { + margin-top: -6rem; + } + + .sm\:-mr-24 { + margin-right: -6rem; + } + + .sm\:-mb-24 { + margin-bottom: -6rem; + } + + .sm\:-ml-24 { + margin-left: -6rem; + } + + .sm\:-mt-32 { + margin-top: -8rem; + } + + .sm\:-mr-32 { + margin-right: -8rem; + } + + .sm\:-mb-32 { + margin-bottom: -8rem; + } + + .sm\:-ml-32 { + margin-left: -8rem; + } + + .sm\:-mt-px { + margin-top: -1px; + } + + .sm\:-mr-px { + margin-right: -1px; + } + + .sm\:-mb-px { + margin-bottom: -1px; + } + + .sm\:-ml-px { + margin-left: -1px; + } + + .sm\:opacity-0 { + opacity: 0; + } + + .sm\:opacity-25 { + opacity: .25; + } + + .sm\:opacity-50 { + opacity: .5; + } + + .sm\:opacity-75 { + opacity: .75; + } + + .sm\:opacity-100 { + opacity: 1; + } + + .sm\:overflow-auto { + overflow: auto; + } + + .sm\:overflow-hidden { + overflow: hidden; + } + + .sm\:overflow-visible { + overflow: visible; + } + + .sm\:overflow-scroll { + overflow: scroll; + } + + .sm\:overflow-x-auto { + overflow-x: auto; + } + + .sm\:overflow-y-auto { + overflow-y: auto; + } + + .sm\:overflow-x-hidden { + overflow-x: hidden; + } + + .sm\:overflow-y-hidden { + overflow-y: hidden; + } + + .sm\:overflow-x-visible { + overflow-x: visible; + } + + .sm\:overflow-y-visible { + overflow-y: visible; + } + + .sm\:overflow-x-scroll { + overflow-x: scroll; + } + + .sm\:overflow-y-scroll { + overflow-y: scroll; + } + + .sm\:scrolling-touch { + -webkit-overflow-scrolling: touch; + } + + .sm\:scrolling-auto { + -webkit-overflow-scrolling: auto; + } + + .sm\:p-0 { + padding: 0; + } + + .sm\:p-1 { + padding: .25rem; + } + + .sm\:p-2 { + padding: .5rem; + } + + .sm\:p-3 { + padding: .75rem; + } + + .sm\:p-4 { + padding: 1rem; + } + + .sm\:p-5 { + padding: 1.25rem; + } + + .sm\:p-6 { + padding: 1.5rem; + } + + .sm\:p-8 { + padding: 2rem; + } + + .sm\:p-10 { + padding: 2.5rem; + } + + .sm\:p-12 { + padding: 3rem; + } + + .sm\:p-16 { + padding: 4rem; + } + + .sm\:p-20 { + padding: 5rem; + } + + .sm\:p-24 { + padding: 6rem; + } + + .sm\:p-32 { + padding: 8rem; + } + + .sm\:p-px { + padding: 1px; + } + + .sm\:py-0 { + padding-top: 0; + padding-bottom: 0; + } + + .sm\:px-0 { + padding-left: 0; + padding-right: 0; + } + + .sm\:py-1 { + padding-top: .25rem; + padding-bottom: .25rem; + } + + .sm\:px-1 { + padding-left: .25rem; + padding-right: .25rem; + } + + .sm\:py-2 { + padding-top: .5rem; + padding-bottom: .5rem; + } + + .sm\:px-2 { + padding-left: .5rem; + padding-right: .5rem; + } + + .sm\:py-3 { + padding-top: .75rem; + padding-bottom: .75rem; + } + + .sm\:px-3 { + padding-left: .75rem; + padding-right: .75rem; + } + + .sm\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .sm\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .sm\:py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .sm\:px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .sm\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .sm\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .sm\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } + + .sm\:px-8 { + padding-left: 2rem; + padding-right: 2rem; + } + + .sm\:py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + + .sm\:px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .sm\:py-12 { + padding-top: 3rem; + padding-bottom: 3rem; + } + + .sm\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .sm\:py-16 { + padding-top: 4rem; + padding-bottom: 4rem; + } + + .sm\:px-16 { + padding-left: 4rem; + padding-right: 4rem; + } + + .sm\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .sm\:px-20 { + padding-left: 5rem; + padding-right: 5rem; + } + + .sm\:py-24 { + padding-top: 6rem; + padding-bottom: 6rem; + } + + .sm\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + + .sm\:py-32 { + padding-top: 8rem; + padding-bottom: 8rem; + } + + .sm\:px-32 { + padding-left: 8rem; + padding-right: 8rem; + } + + .sm\:py-px { + padding-top: 1px; + padding-bottom: 1px; + } + + .sm\:px-px { + padding-left: 1px; + padding-right: 1px; + } + + .sm\:pt-0 { + padding-top: 0; + } + + .sm\:pr-0 { + padding-right: 0; + } + + .sm\:pb-0 { + padding-bottom: 0; + } + + .sm\:pl-0 { + padding-left: 0; + } + + .sm\:pt-1 { + padding-top: .25rem; + } + + .sm\:pr-1 { + padding-right: .25rem; + } + + .sm\:pb-1 { + padding-bottom: .25rem; + } + + .sm\:pl-1 { + padding-left: .25rem; + } + + .sm\:pt-2 { + padding-top: .5rem; + } + + .sm\:pr-2 { + padding-right: .5rem; + } + + .sm\:pb-2 { + padding-bottom: .5rem; + } + + .sm\:pl-2 { + padding-left: .5rem; + } + + .sm\:pt-3 { + padding-top: .75rem; + } + + .sm\:pr-3 { + padding-right: .75rem; + } + + .sm\:pb-3 { + padding-bottom: .75rem; + } + + .sm\:pl-3 { + padding-left: .75rem; + } + + .sm\:pt-4 { + padding-top: 1rem; + } + + .sm\:pr-4 { + padding-right: 1rem; + } + + .sm\:pb-4 { + padding-bottom: 1rem; + } + + .sm\:pl-4 { + padding-left: 1rem; + } + + .sm\:pt-5 { + padding-top: 1.25rem; + } + + .sm\:pr-5 { + padding-right: 1.25rem; + } + + .sm\:pb-5 { + padding-bottom: 1.25rem; + } + + .sm\:pl-5 { + padding-left: 1.25rem; + } + + .sm\:pt-6 { + padding-top: 1.5rem; + } + + .sm\:pr-6 { + padding-right: 1.5rem; + } + + .sm\:pb-6 { + padding-bottom: 1.5rem; + } + + .sm\:pl-6 { + padding-left: 1.5rem; + } + + .sm\:pt-8 { + padding-top: 2rem; + } + + .sm\:pr-8 { + padding-right: 2rem; + } + + .sm\:pb-8 { + padding-bottom: 2rem; + } + + .sm\:pl-8 { + padding-left: 2rem; + } + + .sm\:pt-10 { + padding-top: 2.5rem; + } + + .sm\:pr-10 { + padding-right: 2.5rem; + } + + .sm\:pb-10 { + padding-bottom: 2.5rem; + } + + .sm\:pl-10 { + padding-left: 2.5rem; + } + + .sm\:pt-12 { + padding-top: 3rem; + } + + .sm\:pr-12 { + padding-right: 3rem; + } + + .sm\:pb-12 { + padding-bottom: 3rem; + } + + .sm\:pl-12 { + padding-left: 3rem; + } + + .sm\:pt-16 { + padding-top: 4rem; + } + + .sm\:pr-16 { + padding-right: 4rem; + } + + .sm\:pb-16 { + padding-bottom: 4rem; + } + + .sm\:pl-16 { + padding-left: 4rem; + } + + .sm\:pt-20 { + padding-top: 5rem; + } + + .sm\:pr-20 { + padding-right: 5rem; + } + + .sm\:pb-20 { + padding-bottom: 5rem; + } + + .sm\:pl-20 { + padding-left: 5rem; + } + + .sm\:pt-24 { + padding-top: 6rem; + } + + .sm\:pr-24 { + padding-right: 6rem; + } + + .sm\:pb-24 { + padding-bottom: 6rem; + } + + .sm\:pl-24 { + padding-left: 6rem; + } + + .sm\:pt-32 { + padding-top: 8rem; + } + + .sm\:pr-32 { + padding-right: 8rem; + } + + .sm\:pb-32 { + padding-bottom: 8rem; + } + + .sm\:pl-32 { + padding-left: 8rem; + } + + .sm\:pt-px { + padding-top: 1px; + } + + .sm\:pr-px { + padding-right: 1px; + } + + .sm\:pb-px { + padding-bottom: 1px; + } + + .sm\:pl-px { + padding-left: 1px; + } + + .sm\:pointer-events-none { + pointer-events: none; + } + + .sm\:pointer-events-auto { + pointer-events: auto; + } + + .sm\:static { + position: static; + } + + .sm\:fixed { + position: fixed; + } + + .sm\:absolute { + position: absolute; + } + + .sm\:relative { + position: relative; + } + + .sm\:sticky { + position: sticky; + } + + .sm\:pin-none { + top: auto; + right: auto; + bottom: auto; + left: auto; + } + + .sm\:pin { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + .sm\:pin-y { + top: 0; + bottom: 0; + } + + .sm\:pin-x { + right: 0; + left: 0; + } + + .sm\:pin-t { + top: 0; + } + + .sm\:pin-r { + right: 0; + } + + .sm\:pin-b { + bottom: 0; + } + + .sm\:pin-l { + left: 0; + } + + .sm\:resize-none { + resize: none; + } + + .sm\:resize-y { + resize: vertical; + } + + .sm\:resize-x { + resize: horizontal; + } + + .sm\:resize { + resize: both; + } + + .sm\:shadow { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .sm\:shadow-md { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .sm\:shadow-lg { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .sm\:shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .sm\:shadow-outline { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .sm\:shadow-none { + box-shadow: none; + } + + .sm\:hover\:shadow:hover { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .sm\:hover\:shadow-md:hover { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .sm\:hover\:shadow-lg:hover { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .sm\:hover\:shadow-inner:hover { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .sm\:hover\:shadow-outline:hover { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .sm\:hover\:shadow-none:hover { + box-shadow: none; + } + + .sm\:focus\:shadow:focus { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .sm\:focus\:shadow-md:focus { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .sm\:focus\:shadow-lg:focus { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .sm\:focus\:shadow-inner:focus { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .sm\:focus\:shadow-outline:focus { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .sm\:focus\:shadow-none:focus { + box-shadow: none; + } + + .sm\:table-auto { + table-layout: auto; + } + + .sm\:table-fixed { + table-layout: fixed; + } + + .sm\:text-left { + text-align: left; + } + + .sm\:text-center { + text-align: center; + } + + .sm\:text-right { + text-align: right; + } + + .sm\:text-justify { + text-align: justify; + } + + .sm\:text-transparent { + color: transparent; + } + + .sm\:text-black { + color: #22292f; + } + + .sm\:text-grey-darkest { + color: #3d4852; + } + + .sm\:text-grey-darker { + color: #606f7b; + } + + .sm\:text-grey-dark { + color: #0B346E; + } + + .sm\:text-grey { + color: #b8c2cc; + } + + .sm\:text-grey-light { + color: #dae1e7; + } + + .sm\:text-grey-lighter { + color: #f1f5f8; + } + + .sm\:text-grey-lightest { + color: #f8fafc; + } + + .sm\:text-white { + color: #fff; + } + + .sm\:text-indigo-darkest { + color: #191e38; + } + + .sm\:text-indigo-darker { + color: #2EA9DF; + } + + .sm\:text-indigo-dark { + color: #005CAF; + } + + .sm\:text-indigo { + color: #005CAF; + } + + .sm\:text-indigo-light { + color: #7886d7; + } + + .sm\:text-indigo-lighter { + color: #A5DEE4; + } + + .sm\:text-indigo-lightest { + color: #e6e8ff; + } + + .sm\:hover\:text-transparent:hover { + color: transparent; + } + + .sm\:hover\:text-black:hover { + color: #22292f; + } + + .sm\:hover\:text-grey-darkest:hover { + color: #3d4852; + } + + .sm\:hover\:text-grey-darker:hover { + color: #606f7b; + } + + .sm\:hover\:text-grey-dark:hover { + color: #0B346E; + } + + .sm\:hover\:text-grey:hover { + color: #b8c2cc; + } + + .sm\:hover\:text-grey-light:hover { + color: #dae1e7; + } + + .sm\:hover\:text-grey-lighter:hover { + color: #f1f5f8; + } + + .sm\:hover\:text-grey-lightest:hover { + color: #f8fafc; + } + + .sm\:hover\:text-white:hover { + color: #fff; + } + + .sm\:hover\:text-indigo-darkest:hover { + color: #191e38; + } + + .sm\:hover\:text-indigo-darker:hover { + color: #2EA9DF; + } + + .sm\:hover\:text-indigo-dark:hover { + color: #005CAF; + } + + .sm\:hover\:text-indigo:hover { + color: #005CAF; + } + + .sm\:hover\:text-indigo-light:hover { + color: #7886d7; + } + + .sm\:hover\:text-indigo-lighter:hover { + color: #A5DEE4; + } + + .sm\:hover\:text-indigo-lightest:hover { + color: #e6e8ff; + } + + .sm\:focus\:text-transparent:focus { + color: transparent; + } + + .sm\:focus\:text-black:focus { + color: #22292f; + } + + .sm\:focus\:text-grey-darkest:focus { + color: #3d4852; + } + + .sm\:focus\:text-grey-darker:focus { + color: #606f7b; + } + + .sm\:focus\:text-grey-dark:focus { + color: #0B346E; + } + + .sm\:focus\:text-grey:focus { + color: #b8c2cc; + } + + .sm\:focus\:text-grey-light:focus { + color: #dae1e7; + } + + .sm\:focus\:text-grey-lighter:focus { + color: #f1f5f8; + } + + .sm\:focus\:text-grey-lightest:focus { + color: #f8fafc; + } + + .sm\:focus\:text-white:focus { + color: #fff; + } + + .sm\:focus\:text-indigo-darkest:focus { + color: #191e38; + } + + .sm\:focus\:text-indigo-darker:focus { + color: #2EA9DF; + } + + .sm\:focus\:text-indigo-dark:focus { + color: #005CAF; + } + + .sm\:focus\:text-indigo:focus { + color: #005CAF; + } + + .sm\:focus\:text-indigo-light:focus { + color: #7886d7; + } + + .sm\:focus\:text-indigo-lighter:focus { + color: #A5DEE4; + } + + .sm\:focus\:text-indigo-lightest:focus { + color: #e6e8ff; + } + + .sm\:text-xs { + font-size: .75rem; + } + + .sm\:text-sm { + font-size: .875rem; + } + + .sm\:text-base { + font-size: 1rem; + } + + .sm\:text-lg { + font-size: 1.125rem; + } + + .sm\:text-xl { + font-size: 1.25rem; + } + + .sm\:text-2xl { + font-size: 1.5rem; + } + + .sm\:text-3xl { + font-size: 1.875rem; + } + + .sm\:text-4xl { + font-size: 2.25rem; + } + + .sm\:text-5xl { + font-size: 3rem; + } + + .sm\:italic { + font-style: italic; + } + + .sm\:roman { + font-style: normal; + } + + .sm\:uppercase { + text-transform: uppercase; + } + + .sm\:lowercase { + text-transform: lowercase; + } + + .sm\:capitalize { + text-transform: capitalize; + } + + .sm\:normal-case { + text-transform: none; + } + + .sm\:underline { + text-decoration: underline; + } + + .sm\:line-through { + text-decoration: line-through; + } + + .sm\:no-underline { + text-decoration: none; + } + + .sm\:antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .sm\:subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .sm\:hover\:italic:hover { + font-style: italic; + } + + .sm\:hover\:roman:hover { + font-style: normal; + } + + .sm\:hover\:uppercase:hover { + text-transform: uppercase; + } + + .sm\:hover\:lowercase:hover { + text-transform: lowercase; + } + + .sm\:hover\:capitalize:hover { + text-transform: capitalize; + } + + .sm\:hover\:normal-case:hover { + text-transform: none; + } + + .sm\:hover\:underline:hover { + text-decoration: underline; + } + + .sm\:hover\:line-through:hover { + text-decoration: line-through; + } + + .sm\:hover\:no-underline:hover { + text-decoration: none; + } + + .sm\:hover\:antialiased:hover { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .sm\:hover\:subpixel-antialiased:hover { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .sm\:focus\:italic:focus { + font-style: italic; + } + + .sm\:focus\:roman:focus { + font-style: normal; + } + + .sm\:focus\:uppercase:focus { + text-transform: uppercase; + } + + .sm\:focus\:lowercase:focus { + text-transform: lowercase; + } + + .sm\:focus\:capitalize:focus { + text-transform: capitalize; + } + + .sm\:focus\:normal-case:focus { + text-transform: none; + } + + .sm\:focus\:underline:focus { + text-decoration: underline; + } + + .sm\:focus\:line-through:focus { + text-decoration: line-through; + } + + .sm\:focus\:no-underline:focus { + text-decoration: none; + } + + .sm\:focus\:antialiased:focus { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .sm\:focus\:subpixel-antialiased:focus { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .sm\:tracking-tight { + letter-spacing: -0.05em; + } + + .sm\:tracking-normal { + letter-spacing: 0; + } + + .sm\:tracking-wide { + letter-spacing: .05em; + } + + .sm\:select-none { + user-select: none; + } + + .sm\:select-text { + user-select: text; + } + + .sm\:align-baseline { + vertical-align: baseline; + } + + .sm\:align-top { + vertical-align: top; + } + + .sm\:align-middle { + vertical-align: middle; + } + + .sm\:align-bottom { + vertical-align: bottom; + } + + .sm\:align-text-top { + vertical-align: text-top; + } + + .sm\:align-text-bottom { + vertical-align: text-bottom; + } + + .sm\:visible { + visibility: visible; + } + + .sm\:invisible { + visibility: hidden; + } + + .sm\:whitespace-normal { + white-space: normal; + } + + .sm\:whitespace-no-wrap { + white-space: nowrap; + } + + .sm\:whitespace-pre { + white-space: pre; + } + + .sm\:whitespace-pre-line { + white-space: pre-line; + } + + .sm\:whitespace-pre-wrap { + white-space: pre-wrap; + } + + .sm\:break-words { + word-wrap: break-word; + } + + .sm\:break-normal { + word-wrap: normal; + } + + .sm\:truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .sm\:w-1 { + width: .25rem; + } + + .sm\:w-2 { + width: .5rem; + } + + .sm\:w-3 { + width: .75rem; + } + + .sm\:w-4 { + width: 1rem; + } + + .sm\:w-5 { + width: 1.25rem; + } + + .sm\:w-6 { + width: 1.5rem; + } + + .sm\:w-8 { + width: 2rem; + } + + .sm\:w-10 { + width: 2.5rem; + } + + .sm\:w-12 { + width: 3rem; + } + + .sm\:w-16 { + width: 4rem; + } + + .sm\:w-24 { + width: 6rem; + } + + .sm\:w-32 { + width: 8rem; + } + + .sm\:w-48 { + width: 12rem; + } + + .sm\:w-64 { + width: 16rem; + } + + .sm\:w-auto { + width: auto; + } + + .sm\:w-px { + width: 1px; + } + + .sm\:w-1\/2 { + width: 50%; + } + + .sm\:w-1\/3 { + width: 33.33333%; + } + + .sm\:w-2\/3 { + width: 66.66667%; + } + + .sm\:w-1\/4 { + width: 25%; + } + + .sm\:w-3\/4 { + width: 75%; + } + + .sm\:w-1\/5 { + width: 20%; + } + + .sm\:w-2\/5 { + width: 40%; + } + + .sm\:w-3\/5 { + width: 60%; + } + + .sm\:w-4\/5 { + width: 80%; + } + + .sm\:w-1\/6 { + width: 16.66667%; + } + + .sm\:w-5\/6 { + width: 83.33333%; + } + + .sm\:w-full { + width: 100%; + } + + .sm\:w-screen { + width: 100vw; + } + + .sm\:z-0 { + z-index: 0; + } + + .sm\:z-10 { + z-index: 10; + } + + .sm\:z-20 { + z-index: 20; + } + + .sm\:z-30 { + z-index: 30; + } + + .sm\:z-40 { + z-index: 40; + } + + .sm\:z-50 { + z-index: 50; + } + + .sm\:z-auto { + z-index: auto; + } +} + +@media (min-width: 768px) { + .md\:-order-1 { + order: -1; + } + + .md\:order-0 { + order: 0; + } + + .md\:order-1 { + order: 1; + } + + .md\:order-2 { + order: 2; + } + + .md\:list-reset { + list-style: none; + padding: 0; + } + + .md\:appearance-none { + appearance: none; + } + + .md\:bg-fixed { + background-attachment: fixed; + } + + .md\:bg-local { + background-attachment: local; + } + + .md\:bg-scroll { + background-attachment: scroll; + } + + .md\:bg-transparent { + background-color: transparent; + } + + .md\:bg-black { + background-color: #22292f; + } + + .md\:bg-grey-darkest { + background-color: #3d4852; + } + + .md\:bg-grey-darker { + background-color: #606f7b; + } + + .md\:bg-grey-dark { + background-color: #0B346E; + } + + .md\:bg-grey { + background-color: #b8c2cc; + } + + .md\:bg-grey-light { + background-color: #dae1e7; + } + + .md\:bg-grey-lighter { + background-color: #f1f5f8; + } + + .md\:bg-grey-lightest { + background-color: #f8fafc; + } + + .md\:bg-white { + background-color: #fff; + } + + .md\:bg-indigo-darkest { + background-color: #191e38; + } + + .md\:bg-indigo-darker { + background-color: #2EA9DF; + } + + .md\:bg-indigo-dark { + background-color: #005CAF; + } + + .md\:bg-indigo { + background-color: #005CAF; + } + + .md\:bg-indigo-light { + background-color: #7886d7; + } + + .md\:bg-indigo-lighter { + background-color: #A5DEE4; + } + + .md\:bg-indigo-lightest { + background-color: #e6e8ff; + } + + .md\:hover\:bg-transparent:hover { + background-color: transparent; + } + + .md\:hover\:bg-black:hover { + background-color: #22292f; + } + + .md\:hover\:bg-grey-darkest:hover { + background-color: #3d4852; + } + + .md\:hover\:bg-grey-darker:hover { + background-color: #606f7b; + } + + .md\:hover\:bg-grey-dark:hover { + background-color: #0B346E; + } + + .md\:hover\:bg-grey:hover { + background-color: #b8c2cc; + } + + .md\:hover\:bg-grey-light:hover { + background-color: #dae1e7; + } + + .md\:hover\:bg-grey-lighter:hover { + background-color: #f1f5f8; + } + + .md\:hover\:bg-grey-lightest:hover { + background-color: #f8fafc; + } + + .md\:hover\:bg-white:hover { + background-color: #fff; + } + + .md\:hover\:bg-indigo-darkest:hover { + background-color: #191e38; + } + + .md\:hover\:bg-indigo-darker:hover { + background-color: #2EA9DF; + } + + .md\:hover\:bg-indigo-dark:hover { + background-color: #005CAF; + } + + .md\:hover\:bg-indigo:hover { + background-color: #005CAF; + } + + .md\:hover\:bg-indigo-light:hover { + background-color: #7886d7; + } + + .md\:hover\:bg-indigo-lighter:hover { + background-color: #A5DEE4; + } + + .md\:hover\:bg-indigo-lightest:hover { + background-color: #e6e8ff; + } + + .md\:focus\:bg-transparent:focus { + background-color: transparent; + } + + .md\:focus\:bg-black:focus { + background-color: #22292f; + } + + .md\:focus\:bg-grey-darkest:focus { + background-color: #3d4852; + } + + .md\:focus\:bg-grey-darker:focus { + background-color: #606f7b; + } + + .md\:focus\:bg-grey-dark:focus { + background-color: #0B346E; + } + + .md\:focus\:bg-grey:focus { + background-color: #b8c2cc; + } + + .md\:focus\:bg-grey-light:focus { + background-color: #dae1e7; + } + + .md\:focus\:bg-grey-lighter:focus { + background-color: #f1f5f8; + } + + .md\:focus\:bg-grey-lightest:focus { + background-color: #f8fafc; + } + + .md\:focus\:bg-white:focus { + background-color: #fff; + } + + .md\:focus\:bg-indigo-darkest:focus { + background-color: #191e38; + } + + .md\:focus\:bg-indigo-darker:focus { + background-color: #2EA9DF; + } + + .md\:focus\:bg-indigo-dark:focus { + background-color: #005CAF; + } + + .md\:focus\:bg-indigo:focus { + background-color: #005CAF; + } + + .md\:focus\:bg-indigo-light:focus { + background-color: #7886d7; + } + + .md\:focus\:bg-indigo-lighter:focus { + background-color: #A5DEE4; + } + + .md\:focus\:bg-indigo-lightest:focus { + background-color: #e6e8ff; + } + + .md\:bg-bottom { + background-position: bottom; + } + + .md\:bg-center { + background-position: center; + } + + .md\:bg-left { + background-position: left; + } + + .md\:bg-left-bottom { + background-position: left bottom; + } + + .md\:bg-left-top { + background-position: left top; + } + + .md\:bg-right { + background-position: right; + } + + .md\:bg-right-bottom { + background-position: right bottom; + } + + .md\:bg-right-top { + background-position: right top; + } + + .md\:bg-top { + background-position: top; + } + + .md\:bg-repeat { + background-repeat: repeat; + } + + .md\:bg-no-repeat { + background-repeat: no-repeat; + } + + .md\:bg-repeat-x { + background-repeat: repeat-x; + } + + .md\:bg-repeat-y { + background-repeat: repeat-y; + } + + .md\:bg-auto { + background-size: auto; + } + + .md\:bg-cover { + background-size: cover; + } + + .md\:bg-contain { + background-size: contain; + } + + .md\:border-transparent { + border-color: transparent; + } + + .md\:border-black { + border-color: #22292f; + } + + .md\:border-grey-darkest { + border-color: #3d4852; + } + + .md\:border-grey-darker { + border-color: #606f7b; + } + + .md\:border-grey-dark { + border-color: #0B346E; + } + + .md\:border-grey { + border-color: #b8c2cc; + } + + .md\:border-grey-light { + border-color: #dae1e7; + } + + .md\:border-grey-lighter { + border-color: #f1f5f8; + } + + .md\:border-grey-lightest { + border-color: #f8fafc; + } + + .md\:border-white { + border-color: #fff; + } + + .md\:border-indigo-darkest { + border-color: #191e38; + } + + .md\:border-indigo-darker { + border-color: #2EA9DF; + } + + .md\:border-indigo-dark { + border-color: #005CAF; + } + + .md\:border-indigo { + border-color: #005CAF; + } + + .md\:border-indigo-light { + border-color: #7886d7; + } + + .md\:border-indigo-lighter { + border-color: #A5DEE4; + } + + .md\:border-indigo-lightest { + border-color: #e6e8ff; + } + + .md\:hover\:border-transparent:hover { + border-color: transparent; + } + + .md\:hover\:border-black:hover { + border-color: #22292f; + } + + .md\:hover\:border-grey-darkest:hover { + border-color: #3d4852; + } + + .md\:hover\:border-grey-darker:hover { + border-color: #606f7b; + } + + .md\:hover\:border-grey-dark:hover { + border-color: #0B346E; + } + + .md\:hover\:border-grey:hover { + border-color: #b8c2cc; + } + + .md\:hover\:border-grey-light:hover { + border-color: #dae1e7; + } + + .md\:hover\:border-grey-lighter:hover { + border-color: #f1f5f8; + } + + .md\:hover\:border-grey-lightest:hover { + border-color: #f8fafc; + } + + .md\:hover\:border-white:hover { + border-color: #fff; + } + + .md\:hover\:border-indigo-darkest:hover { + border-color: #191e38; + } + + .md\:hover\:border-indigo-darker:hover { + border-color: #2EA9DF; + } + + .md\:hover\:border-indigo-dark:hover { + border-color: #005CAF; + } + + .md\:hover\:border-indigo:hover { + border-color: #005CAF; + } + + .md\:hover\:border-indigo-light:hover { + border-color: #7886d7; + } + + .md\:hover\:border-indigo-lighter:hover { + border-color: #A5DEE4; + } + + .md\:hover\:border-indigo-lightest:hover { + border-color: #e6e8ff; + } + + .md\:focus\:border-transparent:focus { + border-color: transparent; + } + + .md\:focus\:border-black:focus { + border-color: #22292f; + } + + .md\:focus\:border-grey-darkest:focus { + border-color: #3d4852; + } + + .md\:focus\:border-grey-darker:focus { + border-color: #606f7b; + } + + .md\:focus\:border-grey-dark:focus { + border-color: #0B346E; + } + + .md\:focus\:border-grey:focus { + border-color: #b8c2cc; + } + + .md\:focus\:border-grey-light:focus { + border-color: #dae1e7; + } + + .md\:focus\:border-grey-lighter:focus { + border-color: #f1f5f8; + } + + .md\:focus\:border-grey-lightest:focus { + border-color: #f8fafc; + } + + .md\:focus\:border-white:focus { + border-color: #fff; + } + + .md\:focus\:border-indigo-darkest:focus { + border-color: #191e38; + } + + .md\:focus\:border-indigo-darker:focus { + border-color: #2EA9DF; + } + + .md\:focus\:border-indigo-dark:focus { + border-color: #005CAF; + } + + .md\:focus\:border-indigo:focus { + border-color: #005CAF; + } + + .md\:focus\:border-indigo-light:focus { + border-color: #7886d7; + } + + .md\:focus\:border-indigo-lighter:focus { + border-color: #A5DEE4; + } + + .md\:focus\:border-indigo-lightest:focus { + border-color: #e6e8ff; + } + + .md\:rounded-none { + border-radius: 0; + } + + .md\:rounded-sm { + border-radius: .125rem; + } + + .md\:rounded { + border-radius: .25rem; + } + + .md\:rounded-lg { + border-radius: .5rem; + } + + .md\:rounded-full { + border-radius: 9999px; + } + + .md\:rounded-t-none { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .md\:rounded-r-none { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .md\:rounded-b-none { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .md\:rounded-l-none { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .md\:rounded-t-sm { + border-top-left-radius: .125rem; + border-top-right-radius: .125rem; + } + + .md\:rounded-r-sm { + border-top-right-radius: .125rem; + border-bottom-right-radius: .125rem; + } + + .md\:rounded-b-sm { + border-bottom-right-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .md\:rounded-l-sm { + border-top-left-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .md\:rounded-t { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; + } + + .md\:rounded-r { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; + } + + .md\:rounded-b { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .md\:rounded-l { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .md\:rounded-t-lg { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + } + + .md\:rounded-r-lg { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem; + } + + .md\:rounded-b-lg { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .md\:rounded-l-lg { + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .md\:rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; + } + + .md\:rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; + } + + .md\:rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .md\:rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .md\:rounded-tl-none { + border-top-left-radius: 0; + } + + .md\:rounded-tr-none { + border-top-right-radius: 0; + } + + .md\:rounded-br-none { + border-bottom-right-radius: 0; + } + + .md\:rounded-bl-none { + border-bottom-left-radius: 0; + } + + .md\:rounded-tl-sm { + border-top-left-radius: .125rem; + } + + .md\:rounded-tr-sm { + border-top-right-radius: .125rem; + } + + .md\:rounded-br-sm { + border-bottom-right-radius: .125rem; + } + + .md\:rounded-bl-sm { + border-bottom-left-radius: .125rem; + } + + .md\:rounded-tl { + border-top-left-radius: .25rem; + } + + .md\:rounded-tr { + border-top-right-radius: .25rem; + } + + .md\:rounded-br { + border-bottom-right-radius: .25rem; + } + + .md\:rounded-bl { + border-bottom-left-radius: .25rem; + } + + .md\:rounded-tl-lg { + border-top-left-radius: .5rem; + } + + .md\:rounded-tr-lg { + border-top-right-radius: .5rem; + } + + .md\:rounded-br-lg { + border-bottom-right-radius: .5rem; + } + + .md\:rounded-bl-lg { + border-bottom-left-radius: .5rem; + } + + .md\:rounded-tl-full { + border-top-left-radius: 9999px; + } + + .md\:rounded-tr-full { + border-top-right-radius: 9999px; + } + + .md\:rounded-br-full { + border-bottom-right-radius: 9999px; + } + + .md\:rounded-bl-full { + border-bottom-left-radius: 9999px; + } + + .md\:border-solid { + border-style: solid; + } + + .md\:border-dashed { + border-style: dashed; + } + + .md\:border-dotted { + border-style: dotted; + } + + .md\:border-none { + border-style: none; + } + + .md\:border-0 { + border-width: 0; + } + + .md\:border-2 { + border-width: 2px; + } + + .md\:border-4 { + border-width: 4px; + } + + .md\:border-8 { + border-width: 8px; + } + + .md\:border { + border-width: 1px; + } + + .md\:border-t-0 { + border-top-width: 0; + } + + .md\:border-r-0 { + border-right-width: 0; + } + + .md\:border-b-0 { + border-bottom-width: 0; + } + + .md\:border-l-0 { + border-left-width: 0; + } + + .md\:border-t-2 { + border-top-width: 2px; + } + + .md\:border-r-2 { + border-right-width: 2px; + } + + .md\:border-b-2 { + border-bottom-width: 2px; + } + + .md\:border-l-2 { + border-left-width: 2px; + } + + .md\:border-t-4 { + border-top-width: 4px; + } + + .md\:border-r-4 { + border-right-width: 4px; + } + + .md\:border-b-4 { + border-bottom-width: 4px; + } + + .md\:border-l-4 { + border-left-width: 4px; + } + + .md\:border-t-8 { + border-top-width: 8px; + } + + .md\:border-r-8 { + border-right-width: 8px; + } + + .md\:border-b-8 { + border-bottom-width: 8px; + } + + .md\:border-l-8 { + border-left-width: 8px; + } + + .md\:border-t { + border-top-width: 1px; + } + + .md\:border-r { + border-right-width: 1px; + } + + .md\:border-b { + border-bottom-width: 1px; + } + + .md\:border-l { + border-left-width: 1px; + } + + .md\:hover\:border-0:hover { + border-width: 0; + } + + .md\:hover\:border-2:hover { + border-width: 2px; + } + + .md\:hover\:border-4:hover { + border-width: 4px; + } + + .md\:hover\:border-8:hover { + border-width: 8px; + } + + .md\:hover\:border:hover { + border-width: 1px; + } + + .md\:hover\:border-t-0:hover { + border-top-width: 0; + } + + .md\:hover\:border-r-0:hover { + border-right-width: 0; + } + + .md\:hover\:border-b-0:hover { + border-bottom-width: 0; + } + + .md\:hover\:border-l-0:hover { + border-left-width: 0; + } + + .md\:hover\:border-t-2:hover { + border-top-width: 2px; + } + + .md\:hover\:border-r-2:hover { + border-right-width: 2px; + } + + .md\:hover\:border-b-2:hover { + border-bottom-width: 2px; + } + + .md\:hover\:border-l-2:hover { + border-left-width: 2px; + } + + .md\:hover\:border-t-4:hover { + border-top-width: 4px; + } + + .md\:hover\:border-r-4:hover { + border-right-width: 4px; + } + + .md\:hover\:border-b-4:hover { + border-bottom-width: 4px; + } + + .md\:hover\:border-l-4:hover { + border-left-width: 4px; + } + + .md\:hover\:border-t-8:hover { + border-top-width: 8px; + } + + .md\:hover\:border-r-8:hover { + border-right-width: 8px; + } + + .md\:hover\:border-b-8:hover { + border-bottom-width: 8px; + } + + .md\:hover\:border-l-8:hover { + border-left-width: 8px; + } + + .md\:hover\:border-t:hover { + border-top-width: 1px; + } + + .md\:hover\:border-r:hover { + border-right-width: 1px; + } + + .md\:hover\:border-b:hover { + border-bottom-width: 1px; + } + + .md\:hover\:border-l:hover { + border-left-width: 1px; + } + + .md\:cursor-auto { + cursor: auto; + } + + .md\:cursor-default { + cursor: default; + } + + .md\:cursor-pointer { + cursor: pointer; + } + + .md\:cursor-wait { + cursor: wait; + } + + .md\:cursor-move { + cursor: move; + } + + .md\:cursor-not-allowed { + cursor: not-allowed; + } + + .md\:hover\:cursor-auto:hover { + cursor: auto; + } + + .md\:hover\:cursor-default:hover { + cursor: default; + } + + .md\:hover\:cursor-pointer:hover { + cursor: pointer; + } + + .md\:hover\:cursor-wait:hover { + cursor: wait; + } + + .md\:hover\:cursor-move:hover { + cursor: move; + } + + .md\:hover\:cursor-not-allowed:hover { + cursor: not-allowed; + } + + .md\:block { + display: block; + } + + .md\:inline-block { + display: inline-block; + } + + .md\:inline { + display: inline; + } + + .md\:table { + display: table; + } + + .md\:table-row { + display: table-row; + } + + .md\:table-cell { + display: table-cell; + } + + .md\:hidden { + display: none; + } + + .md\:flex { + display: flex; + } + + .md\:inline-flex { + display: inline-flex; + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:flex-row-reverse { + flex-direction: row-reverse; + } + + .md\:flex-col { + flex-direction: column; + } + + .md\:flex-col-reverse { + flex-direction: column-reverse; + } + + .md\:flex-wrap { + flex-wrap: wrap; + } + + .md\:flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .md\:flex-no-wrap { + flex-wrap: nowrap; + } + + .md\:items-start { + align-items: flex-start; + } + + .md\:items-end { + align-items: flex-end; + } + + .md\:items-center { + align-items: center; + } + + .md\:items-baseline { + align-items: baseline; + } + + .md\:items-stretch { + align-items: stretch; + } + + .md\:self-auto { + align-self: auto; + } + + .md\:self-start { + align-self: flex-start; + } + + .md\:self-end { + align-self: flex-end; + } + + .md\:self-center { + align-self: center; + } + + .md\:self-stretch { + align-self: stretch; + } + + .md\:justify-start { + justify-content: flex-start; + } + + .md\:justify-end { + justify-content: flex-end; + } + + .md\:justify-center { + justify-content: center; + } + + .md\:justify-between { + justify-content: space-between; + } + + .md\:justify-around { + justify-content: space-around; + } + + .md\:content-center { + align-content: center; + } + + .md\:content-start { + align-content: flex-start; + } + + .md\:content-end { + align-content: flex-end; + } + + .md\:content-between { + align-content: space-between; + } + + .md\:content-around { + align-content: space-around; + } + + .md\:flex-1 { + flex: 1; + } + + .md\:flex-auto { + flex: auto; + } + + .md\:flex-initial { + flex: initial; + } + + .md\:flex-none { + flex: none; + } + + .md\:flex-grow { + flex-grow: 1; + } + + .md\:flex-shrink { + flex-shrink: 1; + } + + .md\:flex-no-grow { + flex-grow: 0; + } + + .md\:flex-no-shrink { + flex-shrink: 0; + } + + .md\:float-right { + float: right; + } + + .md\:float-left { + float: left; + } + + .md\:float-none { + float: none; + } + + .md\:clearfix:after { + content: ""; + display: table; + clear: both; + } + + .md\:font-sans { + font-family: Roboto, sans-serif; + } + + .md\:font-serif { + font-family: Constantia, Lucida Bright, Lucidabright, Lucida Serif, Lucida, DejaVu Serif, Bitstream Vera Serif, Liberation Serif, Georgia, serif; + } + + .md\:font-mono { + font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + } + + .md\:font-hairline { + font-weight: 100; + } + + .md\:font-thin { + font-weight: 200; + } + + .md\:font-light { + font-weight: 300; + } + + .md\:font-normal { + font-weight: 400; + } + + .md\:font-medium { + font-weight: 500; + } + + .md\:font-semibold { + font-weight: 600; + } + + .md\:font-bold { + font-weight: 700; + } + + .md\:font-extrabold { + font-weight: 800; + } + + .md\:font-black { + font-weight: 900; + } + + .md\:hover\:font-hairline:hover { + font-weight: 100; + } + + .md\:hover\:font-thin:hover { + font-weight: 200; + } + + .md\:hover\:font-light:hover { + font-weight: 300; + } + + .md\:hover\:font-normal:hover { + font-weight: 400; + } + + .md\:hover\:font-medium:hover { + font-weight: 500; + } + + .md\:hover\:font-semibold:hover { + font-weight: 600; + } + + .md\:hover\:font-bold:hover { + font-weight: 700; + } + + .md\:hover\:font-extrabold:hover { + font-weight: 800; + } + + .md\:hover\:font-black:hover { + font-weight: 900; + } + + .md\:focus\:font-hairline:focus { + font-weight: 100; + } + + .md\:focus\:font-thin:focus { + font-weight: 200; + } + + .md\:focus\:font-light:focus { + font-weight: 300; + } + + .md\:focus\:font-normal:focus { + font-weight: 400; + } + + .md\:focus\:font-medium:focus { + font-weight: 500; + } + + .md\:focus\:font-semibold:focus { + font-weight: 600; + } + + .md\:focus\:font-bold:focus { + font-weight: 700; + } + + .md\:focus\:font-extrabold:focus { + font-weight: 800; + } + + .md\:focus\:font-black:focus { + font-weight: 900; + } + + .md\:h-1 { + height: .25rem; + } + + .md\:h-2 { + height: .5rem; + } + + .md\:h-3 { + height: .75rem; + } + + .md\:h-4 { + height: 1rem; + } + + .md\:h-5 { + height: 1.25rem; + } + + .md\:h-6 { + height: 1.5rem; + } + + .md\:h-8 { + height: 2rem; + } + + .md\:h-10 { + height: 2.5rem; + } + + .md\:h-12 { + height: 3rem; + } + + .md\:h-16 { + height: 4rem; + } + + .md\:h-24 { + height: 6rem; + } + + .md\:h-32 { + height: 8rem; + } + + .md\:h-48 { + height: 12rem; + } + + .md\:h-64 { + height: 16rem; + } + + .md\:h-auto { + height: auto; + } + + .md\:h-px { + height: 1px; + } + + .md\:h-full { + height: 100%; + } + + .md\:h-screen { + height: 100vh; + } + + .md\:leading-none { + line-height: 1; + } + + .md\:leading-tight { + line-height: 1.25; + } + + .md\:leading-normal { + line-height: 1.5; + } + + .md\:leading-loose { + line-height: 2; + } + + .md\:m-0 { + margin: 0; + } + + .md\:m-1 { + margin: .25rem; + } + + .md\:m-2 { + margin: .5rem; + } + + .md\:m-3 { + margin: .75rem; + } + + .md\:m-4 { + margin: 1rem; + } + + .md\:m-5 { + margin: 1.25rem; + } + + .md\:m-6 { + margin: 1.5rem; + } + + .md\:m-8 { + margin: 2rem; + } + + .md\:m-10 { + margin: 2.5rem; + } + + .md\:m-12 { + margin: 3rem; + } + + .md\:m-16 { + margin: 4rem; + } + + .md\:m-20 { + margin: 5rem; + } + + .md\:m-24 { + margin: 6rem; + } + + .md\:m-32 { + margin: 8rem; + } + + .md\:m-auto { + margin: auto; + } + + .md\:m-px { + margin: 1px; + } + + .md\:my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .md\:mx-0 { + margin-left: 0; + margin-right: 0; + } + + .md\:my-1 { + margin-top: .25rem; + margin-bottom: .25rem; + } + + .md\:mx-1 { + margin-left: .25rem; + margin-right: .25rem; + } + + .md\:my-2 { + margin-top: .5rem; + margin-bottom: .5rem; + } + + .md\:mx-2 { + margin-left: .5rem; + margin-right: .5rem; + } + + .md\:my-3 { + margin-top: .75rem; + margin-bottom: .75rem; + } + + .md\:mx-3 { + margin-left: .75rem; + margin-right: .75rem; + } + + .md\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .md\:mx-4 { + margin-left: 1rem; + margin-right: 1rem; + } + + .md\:my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; + } + + .md\:mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; + } + + .md\:my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + } + + .md\:mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; + } + + .md\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + + .md\:mx-8 { + margin-left: 2rem; + margin-right: 2rem; + } + + .md\:my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; + } + + .md\:mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; + } + + .md\:my-12 { + margin-top: 3rem; + margin-bottom: 3rem; + } + + .md\:mx-12 { + margin-left: 3rem; + margin-right: 3rem; + } + + .md\:my-16 { + margin-top: 4rem; + margin-bottom: 4rem; + } + + .md\:mx-16 { + margin-left: 4rem; + margin-right: 4rem; + } + + .md\:my-20 { + margin-top: 5rem; + margin-bottom: 5rem; + } + + .md\:mx-20 { + margin-left: 5rem; + margin-right: 5rem; + } + + .md\:my-24 { + margin-top: 6rem; + margin-bottom: 6rem; + } + + .md\:mx-24 { + margin-left: 6rem; + margin-right: 6rem; + } + + .md\:my-32 { + margin-top: 8rem; + margin-bottom: 8rem; + } + + .md\:mx-32 { + margin-left: 8rem; + margin-right: 8rem; + } + + .md\:my-auto { + margin-top: auto; + margin-bottom: auto; + } + + .md\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .md\:my-px { + margin-top: 1px; + margin-bottom: 1px; + } + + .md\:mx-px { + margin-left: 1px; + margin-right: 1px; + } + + .md\:mt-0 { + margin-top: 0; + } + + .md\:mr-0 { + margin-right: 0; + } + + .md\:mb-0 { + margin-bottom: 0; + } + + .md\:ml-0 { + margin-left: 0; + } + + .md\:mt-1 { + margin-top: .25rem; + } + + .md\:mr-1 { + margin-right: .25rem; + } + + .md\:mb-1 { + margin-bottom: .25rem; + } + + .md\:ml-1 { + margin-left: .25rem; + } + + .md\:mt-2 { + margin-top: .5rem; + } + + .md\:mr-2 { + margin-right: .5rem; + } + + .md\:mb-2 { + margin-bottom: .5rem; + } + + .md\:ml-2 { + margin-left: .5rem; + } + + .md\:mt-3 { + margin-top: .75rem; + } + + .md\:mr-3 { + margin-right: .75rem; + } + + .md\:mb-3 { + margin-bottom: .75rem; + } + + .md\:ml-3 { + margin-left: .75rem; + } + + .md\:mt-4 { + margin-top: 1rem; + } + + .md\:mr-4 { + margin-right: 1rem; + } + + .md\:mb-4 { + margin-bottom: 1rem; + } + + .md\:ml-4 { + margin-left: 1rem; + } + + .md\:mt-5 { + margin-top: 1.25rem; + } + + .md\:mr-5 { + margin-right: 1.25rem; + } + + .md\:mb-5 { + margin-bottom: 1.25rem; + } + + .md\:ml-5 { + margin-left: 1.25rem; + } + + .md\:mt-6 { + margin-top: 1.5rem; + } + + .md\:mr-6 { + margin-right: 1.5rem; + } + + .md\:mb-6 { + margin-bottom: 1.5rem; + } + + .md\:ml-6 { + margin-left: 1.5rem; + } + + .md\:mt-8 { + margin-top: 2rem; + } + + .md\:mr-8 { + margin-right: 2rem; + } + + .md\:mb-8 { + margin-bottom: 2rem; + } + + .md\:ml-8 { + margin-left: 2rem; + } + + .md\:mt-10 { + margin-top: 2.5rem; + } + + .md\:mr-10 { + margin-right: 2.5rem; + } + + .md\:mb-10 { + margin-bottom: 2.5rem; + } + + .md\:ml-10 { + margin-left: 2.5rem; + } + + .md\:mt-12 { + margin-top: 3rem; + } + + .md\:mr-12 { + margin-right: 3rem; + } + + .md\:mb-12 { + margin-bottom: 3rem; + } + + .md\:ml-12 { + margin-left: 3rem; + } + + .md\:mt-16 { + margin-top: 4rem; + } + + .md\:mr-16 { + margin-right: 4rem; + } + + .md\:mb-16 { + margin-bottom: 4rem; + } + + .md\:ml-16 { + margin-left: 4rem; + } + + .md\:mt-20 { + margin-top: 5rem; + } + + .md\:mr-20 { + margin-right: 5rem; + } + + .md\:mb-20 { + margin-bottom: 5rem; + } + + .md\:ml-20 { + margin-left: 5rem; + } + + .md\:mt-24 { + margin-top: 6rem; + } + + .md\:mr-24 { + margin-right: 6rem; + } + + .md\:mb-24 { + margin-bottom: 6rem; + } + + .md\:ml-24 { + margin-left: 6rem; + } + + .md\:mt-32 { + margin-top: 8rem; + } + + .md\:mr-32 { + margin-right: 8rem; + } + + .md\:mb-32 { + margin-bottom: 8rem; + } + + .md\:ml-32 { + margin-left: 8rem; + } + + .md\:mt-auto { + margin-top: auto; + } + + .md\:mr-auto { + margin-right: auto; + } + + .md\:mb-auto { + margin-bottom: auto; + } + + .md\:ml-auto { + margin-left: auto; + } + + .md\:mt-px { + margin-top: 1px; + } + + .md\:mr-px { + margin-right: 1px; + } + + .md\:mb-px { + margin-bottom: 1px; + } + + .md\:ml-px { + margin-left: 1px; + } + + .md\:max-h-full { + max-height: 100%; + } + + .md\:max-h-screen { + max-height: 100vh; + } + + .md\:max-w-xs { + max-width: 20rem; + } + + .md\:max-w-sm { + max-width: 30rem; + } + + .md\:max-w-md { + max-width: 40rem; + } + + .md\:max-w-lg { + max-width: 50rem; + } + + .md\:max-w-xl { + max-width: 60rem; + } + + .md\:max-w-2xl { + max-width: 70rem; + } + + .md\:max-w-3xl { + max-width: 80rem; + } + + .md\:max-w-4xl { + max-width: 90rem; + } + + .md\:max-w-5xl { + max-width: 100rem; + } + + .md\:max-w-full { + max-width: 100%; + } + + .md\:min-h-0 { + min-height: 0; + } + + .md\:min-h-full { + min-height: 100%; + } + + .md\:min-h-screen { + min-height: 100vh; + } + + .md\:min-w-0 { + min-width: 0; + } + + .md\:min-w-full { + min-width: 100%; + } + + .md\:-m-0 { + margin: 0; + } + + .md\:-m-1 { + margin: -0.25rem; + } + + .md\:-m-2 { + margin: -0.5rem; + } + + .md\:-m-3 { + margin: -0.75rem; + } + + .md\:-m-4 { + margin: -1rem; + } + + .md\:-m-5 { + margin: -1.25rem; + } + + .md\:-m-6 { + margin: -1.5rem; + } + + .md\:-m-8 { + margin: -2rem; + } + + .md\:-m-10 { + margin: -2.5rem; + } + + .md\:-m-12 { + margin: -3rem; + } + + .md\:-m-16 { + margin: -4rem; + } + + .md\:-m-20 { + margin: -5rem; + } + + .md\:-m-24 { + margin: -6rem; + } + + .md\:-m-32 { + margin: -8rem; + } + + .md\:-m-px { + margin: -1px; + } + + .md\:-my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .md\:-mx-0 { + margin-left: 0; + margin-right: 0; + } + + .md\:-my-1 { + margin-top: -0.25rem; + margin-bottom: -0.25rem; + } + + .md\:-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; + } + + .md\:-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; + } + + .md\:-mx-2 { + margin-left: -0.5rem; + margin-right: -0.5rem; + } + + .md\:-my-3 { + margin-top: -0.75rem; + margin-bottom: -0.75rem; + } + + .md\:-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; + } + + .md\:-my-4 { + margin-top: -1rem; + margin-bottom: -1rem; + } + + .md\:-mx-4 { + margin-left: -1rem; + margin-right: -1rem; + } + + .md\:-my-5 { + margin-top: -1.25rem; + margin-bottom: -1.25rem; + } + + .md\:-mx-5 { + margin-left: -1.25rem; + margin-right: -1.25rem; + } + + .md\:-my-6 { + margin-top: -1.5rem; + margin-bottom: -1.5rem; + } + + .md\:-mx-6 { + margin-left: -1.5rem; + margin-right: -1.5rem; + } + + .md\:-my-8 { + margin-top: -2rem; + margin-bottom: -2rem; + } + + .md\:-mx-8 { + margin-left: -2rem; + margin-right: -2rem; + } + + .md\:-my-10 { + margin-top: -2.5rem; + margin-bottom: -2.5rem; + } + + .md\:-mx-10 { + margin-left: -2.5rem; + margin-right: -2.5rem; + } + + .md\:-my-12 { + margin-top: -3rem; + margin-bottom: -3rem; + } + + .md\:-mx-12 { + margin-left: -3rem; + margin-right: -3rem; + } + + .md\:-my-16 { + margin-top: -4rem; + margin-bottom: -4rem; + } + + .md\:-mx-16 { + margin-left: -4rem; + margin-right: -4rem; + } + + .md\:-my-20 { + margin-top: -5rem; + margin-bottom: -5rem; + } + + .md\:-mx-20 { + margin-left: -5rem; + margin-right: -5rem; + } + + .md\:-my-24 { + margin-top: -6rem; + margin-bottom: -6rem; + } + + .md\:-mx-24 { + margin-left: -6rem; + margin-right: -6rem; + } + + .md\:-my-32 { + margin-top: -8rem; + margin-bottom: -8rem; + } + + .md\:-mx-32 { + margin-left: -8rem; + margin-right: -8rem; + } + + .md\:-my-px { + margin-top: -1px; + margin-bottom: -1px; + } + + .md\:-mx-px { + margin-left: -1px; + margin-right: -1px; + } + + .md\:-mt-0 { + margin-top: 0; + } + + .md\:-mr-0 { + margin-right: 0; + } + + .md\:-mb-0 { + margin-bottom: 0; + } + + .md\:-ml-0 { + margin-left: 0; + } + + .md\:-mt-1 { + margin-top: -0.25rem; + } + + .md\:-mr-1 { + margin-right: -0.25rem; + } + + .md\:-mb-1 { + margin-bottom: -0.25rem; + } + + .md\:-ml-1 { + margin-left: -0.25rem; + } + + .md\:-mt-2 { + margin-top: -0.5rem; + } + + .md\:-mr-2 { + margin-right: -0.5rem; + } + + .md\:-mb-2 { + margin-bottom: -0.5rem; + } + + .md\:-ml-2 { + margin-left: -0.5rem; + } + + .md\:-mt-3 { + margin-top: -0.75rem; + } + + .md\:-mr-3 { + margin-right: -0.75rem; + } + + .md\:-mb-3 { + margin-bottom: -0.75rem; + } + + .md\:-ml-3 { + margin-left: -0.75rem; + } + + .md\:-mt-4 { + margin-top: -1rem; + } + + .md\:-mr-4 { + margin-right: -1rem; + } + + .md\:-mb-4 { + margin-bottom: -1rem; + } + + .md\:-ml-4 { + margin-left: -1rem; + } + + .md\:-mt-5 { + margin-top: -1.25rem; + } + + .md\:-mr-5 { + margin-right: -1.25rem; + } + + .md\:-mb-5 { + margin-bottom: -1.25rem; + } + + .md\:-ml-5 { + margin-left: -1.25rem; + } + + .md\:-mt-6 { + margin-top: -1.5rem; + } + + .md\:-mr-6 { + margin-right: -1.5rem; + } + + .md\:-mb-6 { + margin-bottom: -1.5rem; + } + + .md\:-ml-6 { + margin-left: -1.5rem; + } + + .md\:-mt-8 { + margin-top: -2rem; + } + + .md\:-mr-8 { + margin-right: -2rem; + } + + .md\:-mb-8 { + margin-bottom: -2rem; + } + + .md\:-ml-8 { + margin-left: -2rem; + } + + .md\:-mt-10 { + margin-top: -2.5rem; + } + + .md\:-mr-10 { + margin-right: -2.5rem; + } + + .md\:-mb-10 { + margin-bottom: -2.5rem; + } + + .md\:-ml-10 { + margin-left: -2.5rem; + } + + .md\:-mt-12 { + margin-top: -3rem; + } + + .md\:-mr-12 { + margin-right: -3rem; + } + + .md\:-mb-12 { + margin-bottom: -3rem; + } + + .md\:-ml-12 { + margin-left: -3rem; + } + + .md\:-mt-16 { + margin-top: -4rem; + } + + .md\:-mr-16 { + margin-right: -4rem; + } + + .md\:-mb-16 { + margin-bottom: -4rem; + } + + .md\:-ml-16 { + margin-left: -4rem; + } + + .md\:-mt-20 { + margin-top: -5rem; + } + + .md\:-mr-20 { + margin-right: -5rem; + } + + .md\:-mb-20 { + margin-bottom: -5rem; + } + + .md\:-ml-20 { + margin-left: -5rem; + } + + .md\:-mt-24 { + margin-top: -6rem; + } + + .md\:-mr-24 { + margin-right: -6rem; + } + + .md\:-mb-24 { + margin-bottom: -6rem; + } + + .md\:-ml-24 { + margin-left: -6rem; + } + + .md\:-mt-32 { + margin-top: -8rem; + } + + .md\:-mr-32 { + margin-right: -8rem; + } + + .md\:-mb-32 { + margin-bottom: -8rem; + } + + .md\:-ml-32 { + margin-left: -8rem; + } + + .md\:-mt-px { + margin-top: -1px; + } + + .md\:-mr-px { + margin-right: -1px; + } + + .md\:-mb-px { + margin-bottom: -1px; + } + + .md\:-ml-px { + margin-left: -1px; + } + + .md\:opacity-0 { + opacity: 0; + } + + .md\:opacity-25 { + opacity: .25; + } + + .md\:opacity-50 { + opacity: .5; + } + + .md\:opacity-75 { + opacity: .75; + } + + .md\:opacity-100 { + opacity: 1; + } + + .md\:overflow-auto { + overflow: auto; + } + + .md\:overflow-hidden { + overflow: hidden; + } + + .md\:overflow-visible { + overflow: visible; + } + + .md\:overflow-scroll { + overflow: scroll; + } + + .md\:overflow-x-auto { + overflow-x: auto; + } + + .md\:overflow-y-auto { + overflow-y: auto; + } + + .md\:overflow-x-hidden { + overflow-x: hidden; + } + + .md\:overflow-y-hidden { + overflow-y: hidden; + } + + .md\:overflow-x-visible { + overflow-x: visible; + } + + .md\:overflow-y-visible { + overflow-y: visible; + } + + .md\:overflow-x-scroll { + overflow-x: scroll; + } + + .md\:overflow-y-scroll { + overflow-y: scroll; + } + + .md\:scrolling-touch { + -webkit-overflow-scrolling: touch; + } + + .md\:scrolling-auto { + -webkit-overflow-scrolling: auto; + } + + .md\:p-0 { + padding: 0; + } + + .md\:p-1 { + padding: .25rem; + } + + .md\:p-2 { + padding: .5rem; + } + + .md\:p-3 { + padding: .75rem; + } + + .md\:p-4 { + padding: 1rem; + } + + .md\:p-5 { + padding: 1.25rem; + } + + .md\:p-6 { + padding: 1.5rem; + } + + .md\:p-8 { + padding: 2rem; + } + + .md\:p-10 { + padding: 2.5rem; + } + + .md\:p-12 { + padding: 3rem; + } + + .md\:p-16 { + padding: 4rem; + } + + .md\:p-20 { + padding: 5rem; + } + + .md\:p-24 { + padding: 6rem; + } + + .md\:p-32 { + padding: 8rem; + } + + .md\:p-px { + padding: 1px; + } + + .md\:py-0 { + padding-top: 0; + padding-bottom: 0; + } + + .md\:px-0 { + padding-left: 0; + padding-right: 0; + } + + .md\:py-1 { + padding-top: .25rem; + padding-bottom: .25rem; + } + + .md\:px-1 { + padding-left: .25rem; + padding-right: .25rem; + } + + .md\:py-2 { + padding-top: .5rem; + padding-bottom: .5rem; + } + + .md\:px-2 { + padding-left: .5rem; + padding-right: .5rem; + } + + .md\:py-3 { + padding-top: .75rem; + padding-bottom: .75rem; + } + + .md\:px-3 { + padding-left: .75rem; + padding-right: .75rem; + } + + .md\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .md\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .md\:py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .md\:px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .md\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .md\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .md\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } + + .md\:px-8 { + padding-left: 2rem; + padding-right: 2rem; + } + + .md\:py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + + .md\:px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .md\:py-12 { + padding-top: 3rem; + padding-bottom: 3rem; + } + + .md\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .md\:py-16 { + padding-top: 4rem; + padding-bottom: 4rem; + } + + .md\:px-16 { + padding-left: 4rem; + padding-right: 4rem; + } + + .md\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .md\:px-20 { + padding-left: 5rem; + padding-right: 5rem; + } + + .md\:py-24 { + padding-top: 6rem; + padding-bottom: 6rem; + } + + .md\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + + .md\:py-32 { + padding-top: 8rem; + padding-bottom: 8rem; + } + + .md\:px-32 { + padding-left: 8rem; + padding-right: 8rem; + } + + .md\:py-px { + padding-top: 1px; + padding-bottom: 1px; + } + + .md\:px-px { + padding-left: 1px; + padding-right: 1px; + } + + .md\:pt-0 { + padding-top: 0; + } + + .md\:pr-0 { + padding-right: 0; + } + + .md\:pb-0 { + padding-bottom: 0; + } + + .md\:pl-0 { + padding-left: 0; + } + + .md\:pt-1 { + padding-top: .25rem; + } + + .md\:pr-1 { + padding-right: .25rem; + } + + .md\:pb-1 { + padding-bottom: .25rem; + } + + .md\:pl-1 { + padding-left: .25rem; + } + + .md\:pt-2 { + padding-top: .5rem; + } + + .md\:pr-2 { + padding-right: .5rem; + } + + .md\:pb-2 { + padding-bottom: .5rem; + } + + .md\:pl-2 { + padding-left: .5rem; + } + + .md\:pt-3 { + padding-top: .75rem; + } + + .md\:pr-3 { + padding-right: .75rem; + } + + .md\:pb-3 { + padding-bottom: .75rem; + } + + .md\:pl-3 { + padding-left: .75rem; + } + + .md\:pt-4 { + padding-top: 1rem; + } + + .md\:pr-4 { + padding-right: 1rem; + } + + .md\:pb-4 { + padding-bottom: 1rem; + } + + .md\:pl-4 { + padding-left: 1rem; + } + + .md\:pt-5 { + padding-top: 1.25rem; + } + + .md\:pr-5 { + padding-right: 1.25rem; + } + + .md\:pb-5 { + padding-bottom: 1.25rem; + } + + .md\:pl-5 { + padding-left: 1.25rem; + } + + .md\:pt-6 { + padding-top: 1.5rem; + } + + .md\:pr-6 { + padding-right: 1.5rem; + } + + .md\:pb-6 { + padding-bottom: 1.5rem; + } + + .md\:pl-6 { + padding-left: 1.5rem; + } + + .md\:pt-8 { + padding-top: 2rem; + } + + .md\:pr-8 { + padding-right: 2rem; + } + + .md\:pb-8 { + padding-bottom: 2rem; + } + + .md\:pl-8 { + padding-left: 2rem; + } + + .md\:pt-10 { + padding-top: 2.5rem; + } + + .md\:pr-10 { + padding-right: 2.5rem; + } + + .md\:pb-10 { + padding-bottom: 2.5rem; + } + + .md\:pl-10 { + padding-left: 2.5rem; + } + + .md\:pt-12 { + padding-top: 3rem; + } + + .md\:pr-12 { + padding-right: 3rem; + } + + .md\:pb-12 { + padding-bottom: 3rem; + } + + .md\:pl-12 { + padding-left: 3rem; + } + + .md\:pt-16 { + padding-top: 4rem; + } + + .md\:pr-16 { + padding-right: 4rem; + } + + .md\:pb-16 { + padding-bottom: 4rem; + } + + .md\:pl-16 { + padding-left: 4rem; + } + + .md\:pt-20 { + padding-top: 5rem; + } + + .md\:pr-20 { + padding-right: 5rem; + } + + .md\:pb-20 { + padding-bottom: 5rem; + } + + .md\:pl-20 { + padding-left: 5rem; + } + + .md\:pt-24 { + padding-top: 6rem; + } + + .md\:pr-24 { + padding-right: 6rem; + } + + .md\:pb-24 { + padding-bottom: 6rem; + } + + .md\:pl-24 { + padding-left: 6rem; + } + + .md\:pt-32 { + padding-top: 8rem; + } + + .md\:pr-32 { + padding-right: 8rem; + } + + .md\:pb-32 { + padding-bottom: 8rem; + } + + .md\:pl-32 { + padding-left: 8rem; + } + + .md\:pt-px { + padding-top: 1px; + } + + .md\:pr-px { + padding-right: 1px; + } + + .md\:pb-px { + padding-bottom: 1px; + } + + .md\:pl-px { + padding-left: 1px; + } + + .md\:pointer-events-none { + pointer-events: none; + } + + .md\:pointer-events-auto { + pointer-events: auto; + } + + .md\:static { + position: static; + } + + .md\:fixed { + position: fixed; + } + + .md\:absolute { + position: absolute; + } + + .md\:relative { + position: relative; + } + + .md\:sticky { + position: sticky; + } + + .md\:pin-none { + top: auto; + right: auto; + bottom: auto; + left: auto; + } + + .md\:pin { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + .md\:pin-y { + top: 0; + bottom: 0; + } + + .md\:pin-x { + right: 0; + left: 0; + } + + .md\:pin-t { + top: 0; + } + + .md\:pin-r { + right: 0; + } + + .md\:pin-b { + bottom: 0; + } + + .md\:pin-l { + left: 0; + } + + .md\:resize-none { + resize: none; + } + + .md\:resize-y { + resize: vertical; + } + + .md\:resize-x { + resize: horizontal; + } + + .md\:resize { + resize: both; + } + + .md\:shadow { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .md\:shadow-md { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .md\:shadow-lg { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .md\:shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .md\:shadow-outline { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .md\:shadow-none { + box-shadow: none; + } + + .md\:hover\:shadow:hover { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .md\:hover\:shadow-md:hover { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .md\:hover\:shadow-lg:hover { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .md\:hover\:shadow-inner:hover { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .md\:hover\:shadow-outline:hover { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .md\:hover\:shadow-none:hover { + box-shadow: none; + } + + .md\:focus\:shadow:focus { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .md\:focus\:shadow-md:focus { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .md\:focus\:shadow-lg:focus { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .md\:focus\:shadow-inner:focus { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .md\:focus\:shadow-outline:focus { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .md\:focus\:shadow-none:focus { + box-shadow: none; + } + + .md\:table-auto { + table-layout: auto; + } + + .md\:table-fixed { + table-layout: fixed; + } + + .md\:text-left { + text-align: left; + } + + .md\:text-center { + text-align: center; + } + + .md\:text-right { + text-align: right; + } + + .md\:text-justify { + text-align: justify; + } + + .md\:text-transparent { + color: transparent; + } + + .md\:text-black { + color: #22292f; + } + + .md\:text-grey-darkest { + color: #3d4852; + } + + .md\:text-grey-darker { + color: #606f7b; + } + + .md\:text-grey-dark { + color: #0B346E; + } + + .md\:text-grey { + color: #b8c2cc; + } + + .md\:text-grey-light { + color: #dae1e7; + } + + .md\:text-grey-lighter { + color: #f1f5f8; + } + + .md\:text-grey-lightest { + color: #f8fafc; + } + + .md\:text-white { + color: #fff; + } + + .md\:text-indigo-darkest { + color: #191e38; + } + + .md\:text-indigo-darker { + color: #2EA9DF; + } + + .md\:text-indigo-dark { + color: #005CAF; + } + + .md\:text-indigo { + color: #005CAF; + } + + .md\:text-indigo-light { + color: #7886d7; + } + + .md\:text-indigo-lighter { + color: #A5DEE4; + } + + .md\:text-indigo-lightest { + color: #e6e8ff; + } + + .md\:hover\:text-transparent:hover { + color: transparent; + } + + .md\:hover\:text-black:hover { + color: #22292f; + } + + .md\:hover\:text-grey-darkest:hover { + color: #3d4852; + } + + .md\:hover\:text-grey-darker:hover { + color: #606f7b; + } + + .md\:hover\:text-grey-dark:hover { + color: #0B346E; + } + + .md\:hover\:text-grey:hover { + color: #b8c2cc; + } + + .md\:hover\:text-grey-light:hover { + color: #dae1e7; + } + + .md\:hover\:text-grey-lighter:hover { + color: #f1f5f8; + } + + .md\:hover\:text-grey-lightest:hover { + color: #f8fafc; + } + + .md\:hover\:text-white:hover { + color: #fff; + } + + .md\:hover\:text-indigo-darkest:hover { + color: #191e38; + } + + .md\:hover\:text-indigo-darker:hover { + color: #2EA9DF; + } + + .md\:hover\:text-indigo-dark:hover { + color: #005CAF; + } + + .md\:hover\:text-indigo:hover { + color: #005CAF; + } + + .md\:hover\:text-indigo-light:hover { + color: #7886d7; + } + + .md\:hover\:text-indigo-lighter:hover { + color: #A5DEE4; + } + + .md\:hover\:text-indigo-lightest:hover { + color: #e6e8ff; + } + + .md\:focus\:text-transparent:focus { + color: transparent; + } + + .md\:focus\:text-black:focus { + color: #22292f; + } + + .md\:focus\:text-grey-darkest:focus { + color: #3d4852; + } + + .md\:focus\:text-grey-darker:focus { + color: #606f7b; + } + + .md\:focus\:text-grey-dark:focus { + color: #0B346E; + } + + .md\:focus\:text-grey:focus { + color: #b8c2cc; + } + + .md\:focus\:text-grey-light:focus { + color: #dae1e7; + } + + .md\:focus\:text-grey-lighter:focus { + color: #f1f5f8; + } + + .md\:focus\:text-grey-lightest:focus { + color: #f8fafc; + } + + .md\:focus\:text-white:focus { + color: #fff; + } + + .md\:focus\:text-indigo-darkest:focus { + color: #191e38; + } + + .md\:focus\:text-indigo-darker:focus { + color: #2EA9DF; + } + + .md\:focus\:text-indigo-dark:focus { + color: #005CAF; + } + + .md\:focus\:text-indigo:focus { + color: #005CAF; + } + + .md\:focus\:text-indigo-light:focus { + color: #7886d7; + } + + .md\:focus\:text-indigo-lighter:focus { + color: #A5DEE4; + } + + .md\:focus\:text-indigo-lightest:focus { + color: #e6e8ff; + } + + .md\:text-xs { + font-size: .75rem; + } + + .md\:text-sm { + font-size: .875rem; + } + + .md\:text-base { + font-size: 1rem; + } + + .md\:text-lg { + font-size: 1.125rem; + } + + .md\:text-xl { + font-size: 1.25rem; + } + + .md\:text-2xl { + font-size: 1.5rem; + } + + .md\:text-3xl { + font-size: 1.875rem; + } + + .md\:text-4xl { + font-size: 2.25rem; + } + + .md\:text-5xl { + font-size: 3rem; + } + + .md\:italic { + font-style: italic; + } + + .md\:roman { + font-style: normal; + } + + .md\:uppercase { + text-transform: uppercase; + } + + .md\:lowercase { + text-transform: lowercase; + } + + .md\:capitalize { + text-transform: capitalize; + } + + .md\:normal-case { + text-transform: none; + } + + .md\:underline { + text-decoration: underline; + } + + .md\:line-through { + text-decoration: line-through; + } + + .md\:no-underline { + text-decoration: none; + } + + .md\:antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .md\:subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .md\:hover\:italic:hover { + font-style: italic; + } + + .md\:hover\:roman:hover { + font-style: normal; + } + + .md\:hover\:uppercase:hover { + text-transform: uppercase; + } + + .md\:hover\:lowercase:hover { + text-transform: lowercase; + } + + .md\:hover\:capitalize:hover { + text-transform: capitalize; + } + + .md\:hover\:normal-case:hover { + text-transform: none; + } + + .md\:hover\:underline:hover { + text-decoration: underline; + } + + .md\:hover\:line-through:hover { + text-decoration: line-through; + } + + .md\:hover\:no-underline:hover { + text-decoration: none; + } + + .md\:hover\:antialiased:hover { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .md\:hover\:subpixel-antialiased:hover { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .md\:focus\:italic:focus { + font-style: italic; + } + + .md\:focus\:roman:focus { + font-style: normal; + } + + .md\:focus\:uppercase:focus { + text-transform: uppercase; + } + + .md\:focus\:lowercase:focus { + text-transform: lowercase; + } + + .md\:focus\:capitalize:focus { + text-transform: capitalize; + } + + .md\:focus\:normal-case:focus { + text-transform: none; + } + + .md\:focus\:underline:focus { + text-decoration: underline; + } + + .md\:focus\:line-through:focus { + text-decoration: line-through; + } + + .md\:focus\:no-underline:focus { + text-decoration: none; + } + + .md\:focus\:antialiased:focus { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .md\:focus\:subpixel-antialiased:focus { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .md\:tracking-tight { + letter-spacing: -0.05em; + } + + .md\:tracking-normal { + letter-spacing: 0; + } + + .md\:tracking-wide { + letter-spacing: .05em; + } + + .md\:select-none { + user-select: none; + } + + .md\:select-text { + user-select: text; + } + + .md\:align-baseline { + vertical-align: baseline; + } + + .md\:align-top { + vertical-align: top; + } + + .md\:align-middle { + vertical-align: middle; + } + + .md\:align-bottom { + vertical-align: bottom; + } + + .md\:align-text-top { + vertical-align: text-top; + } + + .md\:align-text-bottom { + vertical-align: text-bottom; + } + + .md\:visible { + visibility: visible; + } + + .md\:invisible { + visibility: hidden; + } + + .md\:whitespace-normal { + white-space: normal; + } + + .md\:whitespace-no-wrap { + white-space: nowrap; + } + + .md\:whitespace-pre { + white-space: pre; + } + + .md\:whitespace-pre-line { + white-space: pre-line; + } + + .md\:whitespace-pre-wrap { + white-space: pre-wrap; + } + + .md\:break-words { + word-wrap: break-word; + } + + .md\:break-normal { + word-wrap: normal; + } + + .md\:truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .md\:w-1 { + width: .25rem; + } + + .md\:w-2 { + width: .5rem; + } + + .md\:w-3 { + width: .75rem; + } + + .md\:w-4 { + width: 1rem; + } + + .md\:w-5 { + width: 1.25rem; + } + + .md\:w-6 { + width: 1.5rem; + } + + .md\:w-8 { + width: 2rem; + } + + .md\:w-10 { + width: 2.5rem; + } + + .md\:w-12 { + width: 3rem; + } + + .md\:w-16 { + width: 4rem; + } + + .md\:w-24 { + width: 6rem; + } + + .md\:w-32 { + width: 8rem; + } + + .md\:w-48 { + width: 12rem; + } + + .md\:w-64 { + width: 16rem; + } + + .md\:w-auto { + width: auto; + } + + .md\:w-px { + width: 1px; + } + + .md\:w-1\/2 { + width: 50%; + } + + .md\:w-1\/3 { + width: 33.33333%; + } + + .md\:w-2\/3 { + width: 66.66667%; + } + + .md\:w-1\/4 { + width: 25%; + } + + .md\:w-3\/4 { + width: 75%; + } + + .md\:w-1\/5 { + width: 20%; + } + + .md\:w-2\/5 { + width: 40%; + } + + .md\:w-3\/5 { + width: 60%; + } + + .md\:w-4\/5 { + width: 80%; + } + + .md\:w-1\/6 { + width: 16.66667%; + } + + .md\:w-5\/6 { + width: 83.33333%; + } + + .md\:w-full { + width: 100%; + } + + .md\:w-screen { + width: 100vw; + } + + .md\:z-0 { + z-index: 0; + } + + .md\:z-10 { + z-index: 10; + } + + .md\:z-20 { + z-index: 20; + } + + .md\:z-30 { + z-index: 30; + } + + .md\:z-40 { + z-index: 40; + } + + .md\:z-50 { + z-index: 50; + } + + .md\:z-auto { + z-index: auto; + } +} + +@media (min-width: 992px) { + .lg\:-order-1 { + order: -1; + } + + .lg\:order-0 { + order: 0; + } + + .lg\:order-1 { + order: 1; + } + + .lg\:order-2 { + order: 2; + } + + .lg\:list-reset { + list-style: none; + padding: 0; + } + + .lg\:appearance-none { + appearance: none; + } + + .lg\:bg-fixed { + background-attachment: fixed; + } + + .lg\:bg-local { + background-attachment: local; + } + + .lg\:bg-scroll { + background-attachment: scroll; + } + + .lg\:bg-transparent { + background-color: transparent; + } + + .lg\:bg-black { + background-color: #22292f; + } + + .lg\:bg-grey-darkest { + background-color: #3d4852; + } + + .lg\:bg-grey-darker { + background-color: #606f7b; + } + + .lg\:bg-grey-dark { + background-color: #0B346E; + } + + .lg\:bg-grey { + background-color: #b8c2cc; + } + + .lg\:bg-grey-light { + background-color: #dae1e7; + } + + .lg\:bg-grey-lighter { + background-color: #f1f5f8; + } + + .lg\:bg-grey-lightest { + background-color: #f8fafc; + } + + .lg\:bg-white { + background-color: #fff; + } + + .lg\:bg-indigo-darkest { + background-color: #191e38; + } + + .lg\:bg-indigo-darker { + background-color: #2EA9DF; + } + + .lg\:bg-indigo-dark { + background-color: #005CAF; + } + + .lg\:bg-indigo { + background-color: #005CAF; + } + + .lg\:bg-indigo-light { + background-color: #7886d7; + } + + .lg\:bg-indigo-lighter { + background-color: #A5DEE4; + } + + .lg\:bg-indigo-lightest { + background-color: #e6e8ff; + } + + .lg\:hover\:bg-transparent:hover { + background-color: transparent; + } + + .lg\:hover\:bg-black:hover { + background-color: #22292f; + } + + .lg\:hover\:bg-grey-darkest:hover { + background-color: #3d4852; + } + + .lg\:hover\:bg-grey-darker:hover { + background-color: #606f7b; + } + + .lg\:hover\:bg-grey-dark:hover { + background-color: #0B346E; + } + + .lg\:hover\:bg-grey:hover { + background-color: #b8c2cc; + } + + .lg\:hover\:bg-grey-light:hover { + background-color: #dae1e7; + } + + .lg\:hover\:bg-grey-lighter:hover { + background-color: #f1f5f8; + } + + .lg\:hover\:bg-grey-lightest:hover { + background-color: #f8fafc; + } + + .lg\:hover\:bg-white:hover { + background-color: #fff; + } + + .lg\:hover\:bg-indigo-darkest:hover { + background-color: #191e38; + } + + .lg\:hover\:bg-indigo-darker:hover { + background-color: #2EA9DF; + } + + .lg\:hover\:bg-indigo-dark:hover { + background-color: #005CAF; + } + + .lg\:hover\:bg-indigo:hover { + background-color: #005CAF; + } + + .lg\:hover\:bg-indigo-light:hover { + background-color: #7886d7; + } + + .lg\:hover\:bg-indigo-lighter:hover { + background-color: #A5DEE4; + } + + .lg\:hover\:bg-indigo-lightest:hover { + background-color: #e6e8ff; + } + + .lg\:focus\:bg-transparent:focus { + background-color: transparent; + } + + .lg\:focus\:bg-black:focus { + background-color: #22292f; + } + + .lg\:focus\:bg-grey-darkest:focus { + background-color: #3d4852; + } + + .lg\:focus\:bg-grey-darker:focus { + background-color: #606f7b; + } + + .lg\:focus\:bg-grey-dark:focus { + background-color: #0B346E; + } + + .lg\:focus\:bg-grey:focus { + background-color: #b8c2cc; + } + + .lg\:focus\:bg-grey-light:focus { + background-color: #dae1e7; + } + + .lg\:focus\:bg-grey-lighter:focus { + background-color: #f1f5f8; + } + + .lg\:focus\:bg-grey-lightest:focus { + background-color: #f8fafc; + } + + .lg\:focus\:bg-white:focus { + background-color: #fff; + } + + .lg\:focus\:bg-indigo-darkest:focus { + background-color: #191e38; + } + + .lg\:focus\:bg-indigo-darker:focus { + background-color: #2EA9DF; + } + + .lg\:focus\:bg-indigo-dark:focus { + background-color: #005CAF; + } + + .lg\:focus\:bg-indigo:focus { + background-color: #005CAF; + } + + .lg\:focus\:bg-indigo-light:focus { + background-color: #7886d7; + } + + .lg\:focus\:bg-indigo-lighter:focus { + background-color: #A5DEE4; + } + + .lg\:focus\:bg-indigo-lightest:focus { + background-color: #e6e8ff; + } + + .lg\:bg-bottom { + background-position: bottom; + } + + .lg\:bg-center { + background-position: center; + } + + .lg\:bg-left { + background-position: left; + } + + .lg\:bg-left-bottom { + background-position: left bottom; + } + + .lg\:bg-left-top { + background-position: left top; + } + + .lg\:bg-right { + background-position: right; + } + + .lg\:bg-right-bottom { + background-position: right bottom; + } + + .lg\:bg-right-top { + background-position: right top; + } + + .lg\:bg-top { + background-position: top; + } + + .lg\:bg-repeat { + background-repeat: repeat; + } + + .lg\:bg-no-repeat { + background-repeat: no-repeat; + } + + .lg\:bg-repeat-x { + background-repeat: repeat-x; + } + + .lg\:bg-repeat-y { + background-repeat: repeat-y; + } + + .lg\:bg-auto { + background-size: auto; + } + + .lg\:bg-cover { + background-size: cover; + } + + .lg\:bg-contain { + background-size: contain; + } + + .lg\:border-transparent { + border-color: transparent; + } + + .lg\:border-black { + border-color: #22292f; + } + + .lg\:border-grey-darkest { + border-color: #3d4852; + } + + .lg\:border-grey-darker { + border-color: #606f7b; + } + + .lg\:border-grey-dark { + border-color: #0B346E; + } + + .lg\:border-grey { + border-color: #b8c2cc; + } + + .lg\:border-grey-light { + border-color: #dae1e7; + } + + .lg\:border-grey-lighter { + border-color: #f1f5f8; + } + + .lg\:border-grey-lightest { + border-color: #f8fafc; + } + + .lg\:border-white { + border-color: #fff; + } + + .lg\:border-indigo-darkest { + border-color: #191e38; + } + + .lg\:border-indigo-darker { + border-color: #2EA9DF; + } + + .lg\:border-indigo-dark { + border-color: #005CAF; + } + + .lg\:border-indigo { + border-color: #005CAF; + } + + .lg\:border-indigo-light { + border-color: #7886d7; + } + + .lg\:border-indigo-lighter { + border-color: #A5DEE4; + } + + .lg\:border-indigo-lightest { + border-color: #e6e8ff; + } + + .lg\:hover\:border-transparent:hover { + border-color: transparent; + } + + .lg\:hover\:border-black:hover { + border-color: #22292f; + } + + .lg\:hover\:border-grey-darkest:hover { + border-color: #3d4852; + } + + .lg\:hover\:border-grey-darker:hover { + border-color: #606f7b; + } + + .lg\:hover\:border-grey-dark:hover { + border-color: #0B346E; + } + + .lg\:hover\:border-grey:hover { + border-color: #b8c2cc; + } + + .lg\:hover\:border-grey-light:hover { + border-color: #dae1e7; + } + + .lg\:hover\:border-grey-lighter:hover { + border-color: #f1f5f8; + } + + .lg\:hover\:border-grey-lightest:hover { + border-color: #f8fafc; + } + + .lg\:hover\:border-white:hover { + border-color: #fff; + } + + .lg\:hover\:border-indigo-darkest:hover { + border-color: #191e38; + } + + .lg\:hover\:border-indigo-darker:hover { + border-color: #2EA9DF; + } + + .lg\:hover\:border-indigo-dark:hover { + border-color: #005CAF; + } + + .lg\:hover\:border-indigo:hover { + border-color: #005CAF; + } + + .lg\:hover\:border-indigo-light:hover { + border-color: #7886d7; + } + + .lg\:hover\:border-indigo-lighter:hover { + border-color: #A5DEE4; + } + + .lg\:hover\:border-indigo-lightest:hover { + border-color: #e6e8ff; + } + + .lg\:focus\:border-transparent:focus { + border-color: transparent; + } + + .lg\:focus\:border-black:focus { + border-color: #22292f; + } + + .lg\:focus\:border-grey-darkest:focus { + border-color: #3d4852; + } + + .lg\:focus\:border-grey-darker:focus { + border-color: #606f7b; + } + + .lg\:focus\:border-grey-dark:focus { + border-color: #0B346E; + } + + .lg\:focus\:border-grey:focus { + border-color: #b8c2cc; + } + + .lg\:focus\:border-grey-light:focus { + border-color: #dae1e7; + } + + .lg\:focus\:border-grey-lighter:focus { + border-color: #f1f5f8; + } + + .lg\:focus\:border-grey-lightest:focus { + border-color: #f8fafc; + } + + .lg\:focus\:border-white:focus { + border-color: #fff; + } + + .lg\:focus\:border-indigo-darkest:focus { + border-color: #191e38; + } + + .lg\:focus\:border-indigo-darker:focus { + border-color: #2EA9DF; + } + + .lg\:focus\:border-indigo-dark:focus { + border-color: #005CAF; + } + + .lg\:focus\:border-indigo:focus { + border-color: #005CAF; + } + + .lg\:focus\:border-indigo-light:focus { + border-color: #7886d7; + } + + .lg\:focus\:border-indigo-lighter:focus { + border-color: #A5DEE4; + } + + .lg\:focus\:border-indigo-lightest:focus { + border-color: #e6e8ff; + } + + .lg\:rounded-none { + border-radius: 0; + } + + .lg\:rounded-sm { + border-radius: .125rem; + } + + .lg\:rounded { + border-radius: .25rem; + } + + .lg\:rounded-lg { + border-radius: .5rem; + } + + .lg\:rounded-full { + border-radius: 9999px; + } + + .lg\:rounded-t-none { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .lg\:rounded-r-none { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .lg\:rounded-b-none { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .lg\:rounded-l-none { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .lg\:rounded-t-sm { + border-top-left-radius: .125rem; + border-top-right-radius: .125rem; + } + + .lg\:rounded-r-sm { + border-top-right-radius: .125rem; + border-bottom-right-radius: .125rem; + } + + .lg\:rounded-b-sm { + border-bottom-right-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .lg\:rounded-l-sm { + border-top-left-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .lg\:rounded-t { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; + } + + .lg\:rounded-r { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; + } + + .lg\:rounded-b { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .lg\:rounded-l { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .lg\:rounded-t-lg { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + } + + .lg\:rounded-r-lg { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem; + } + + .lg\:rounded-b-lg { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .lg\:rounded-l-lg { + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .lg\:rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; + } + + .lg\:rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; + } + + .lg\:rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .lg\:rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .lg\:rounded-tl-none { + border-top-left-radius: 0; + } + + .lg\:rounded-tr-none { + border-top-right-radius: 0; + } + + .lg\:rounded-br-none { + border-bottom-right-radius: 0; + } + + .lg\:rounded-bl-none { + border-bottom-left-radius: 0; + } + + .lg\:rounded-tl-sm { + border-top-left-radius: .125rem; + } + + .lg\:rounded-tr-sm { + border-top-right-radius: .125rem; + } + + .lg\:rounded-br-sm { + border-bottom-right-radius: .125rem; + } + + .lg\:rounded-bl-sm { + border-bottom-left-radius: .125rem; + } + + .lg\:rounded-tl { + border-top-left-radius: .25rem; + } + + .lg\:rounded-tr { + border-top-right-radius: .25rem; + } + + .lg\:rounded-br { + border-bottom-right-radius: .25rem; + } + + .lg\:rounded-bl { + border-bottom-left-radius: .25rem; + } + + .lg\:rounded-tl-lg { + border-top-left-radius: .5rem; + } + + .lg\:rounded-tr-lg { + border-top-right-radius: .5rem; + } + + .lg\:rounded-br-lg { + border-bottom-right-radius: .5rem; + } + + .lg\:rounded-bl-lg { + border-bottom-left-radius: .5rem; + } + + .lg\:rounded-tl-full { + border-top-left-radius: 9999px; + } + + .lg\:rounded-tr-full { + border-top-right-radius: 9999px; + } + + .lg\:rounded-br-full { + border-bottom-right-radius: 9999px; + } + + .lg\:rounded-bl-full { + border-bottom-left-radius: 9999px; + } + + .lg\:border-solid { + border-style: solid; + } + + .lg\:border-dashed { + border-style: dashed; + } + + .lg\:border-dotted { + border-style: dotted; + } + + .lg\:border-none { + border-style: none; + } + + .lg\:border-0 { + border-width: 0; + } + + .lg\:border-2 { + border-width: 2px; + } + + .lg\:border-4 { + border-width: 4px; + } + + .lg\:border-8 { + border-width: 8px; + } + + .lg\:border { + border-width: 1px; + } + + .lg\:border-t-0 { + border-top-width: 0; + } + + .lg\:border-r-0 { + border-right-width: 0; + } + + .lg\:border-b-0 { + border-bottom-width: 0; + } + + .lg\:border-l-0 { + border-left-width: 0; + } + + .lg\:border-t-2 { + border-top-width: 2px; + } + + .lg\:border-r-2 { + border-right-width: 2px; + } + + .lg\:border-b-2 { + border-bottom-width: 2px; + } + + .lg\:border-l-2 { + border-left-width: 2px; + } + + .lg\:border-t-4 { + border-top-width: 4px; + } + + .lg\:border-r-4 { + border-right-width: 4px; + } + + .lg\:border-b-4 { + border-bottom-width: 4px; + } + + .lg\:border-l-4 { + border-left-width: 4px; + } + + .lg\:border-t-8 { + border-top-width: 8px; + } + + .lg\:border-r-8 { + border-right-width: 8px; + } + + .lg\:border-b-8 { + border-bottom-width: 8px; + } + + .lg\:border-l-8 { + border-left-width: 8px; + } + + .lg\:border-t { + border-top-width: 1px; + } + + .lg\:border-r { + border-right-width: 1px; + } + + .lg\:border-b { + border-bottom-width: 1px; + } + + .lg\:border-l { + border-left-width: 1px; + } + + .lg\:hover\:border-0:hover { + border-width: 0; + } + + .lg\:hover\:border-2:hover { + border-width: 2px; + } + + .lg\:hover\:border-4:hover { + border-width: 4px; + } + + .lg\:hover\:border-8:hover { + border-width: 8px; + } + + .lg\:hover\:border:hover { + border-width: 1px; + } + + .lg\:hover\:border-t-0:hover { + border-top-width: 0; + } + + .lg\:hover\:border-r-0:hover { + border-right-width: 0; + } + + .lg\:hover\:border-b-0:hover { + border-bottom-width: 0; + } + + .lg\:hover\:border-l-0:hover { + border-left-width: 0; + } + + .lg\:hover\:border-t-2:hover { + border-top-width: 2px; + } + + .lg\:hover\:border-r-2:hover { + border-right-width: 2px; + } + + .lg\:hover\:border-b-2:hover { + border-bottom-width: 2px; + } + + .lg\:hover\:border-l-2:hover { + border-left-width: 2px; + } + + .lg\:hover\:border-t-4:hover { + border-top-width: 4px; + } + + .lg\:hover\:border-r-4:hover { + border-right-width: 4px; + } + + .lg\:hover\:border-b-4:hover { + border-bottom-width: 4px; + } + + .lg\:hover\:border-l-4:hover { + border-left-width: 4px; + } + + .lg\:hover\:border-t-8:hover { + border-top-width: 8px; + } + + .lg\:hover\:border-r-8:hover { + border-right-width: 8px; + } + + .lg\:hover\:border-b-8:hover { + border-bottom-width: 8px; + } + + .lg\:hover\:border-l-8:hover { + border-left-width: 8px; + } + + .lg\:hover\:border-t:hover { + border-top-width: 1px; + } + + .lg\:hover\:border-r:hover { + border-right-width: 1px; + } + + .lg\:hover\:border-b:hover { + border-bottom-width: 1px; + } + + .lg\:hover\:border-l:hover { + border-left-width: 1px; + } + + .lg\:cursor-auto { + cursor: auto; + } + + .lg\:cursor-default { + cursor: default; + } + + .lg\:cursor-pointer { + cursor: pointer; + } + + .lg\:cursor-wait { + cursor: wait; + } + + .lg\:cursor-move { + cursor: move; + } + + .lg\:cursor-not-allowed { + cursor: not-allowed; + } + + .lg\:hover\:cursor-auto:hover { + cursor: auto; + } + + .lg\:hover\:cursor-default:hover { + cursor: default; + } + + .lg\:hover\:cursor-pointer:hover { + cursor: pointer; + } + + .lg\:hover\:cursor-wait:hover { + cursor: wait; + } + + .lg\:hover\:cursor-move:hover { + cursor: move; + } + + .lg\:hover\:cursor-not-allowed:hover { + cursor: not-allowed; + } + + .lg\:block { + display: block; + } + + .lg\:inline-block { + display: inline-block; + } + + .lg\:inline { + display: inline; + } + + .lg\:table { + display: table; + } + + .lg\:table-row { + display: table-row; + } + + .lg\:table-cell { + display: table-cell; + } + + .lg\:hidden { + display: none; + } + + .lg\:flex { + display: flex; + } + + .lg\:inline-flex { + display: inline-flex; + } + + .lg\:flex-row { + flex-direction: row; + } + + .lg\:flex-row-reverse { + flex-direction: row-reverse; + } + + .lg\:flex-col { + flex-direction: column; + } + + .lg\:flex-col-reverse { + flex-direction: column-reverse; + } + + .lg\:flex-wrap { + flex-wrap: wrap; + } + + .lg\:flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .lg\:flex-no-wrap { + flex-wrap: nowrap; + } + + .lg\:items-start { + align-items: flex-start; + } + + .lg\:items-end { + align-items: flex-end; + } + + .lg\:items-center { + align-items: center; + } + + .lg\:items-baseline { + align-items: baseline; + } + + .lg\:items-stretch { + align-items: stretch; + } + + .lg\:self-auto { + align-self: auto; + } + + .lg\:self-start { + align-self: flex-start; + } + + .lg\:self-end { + align-self: flex-end; + } + + .lg\:self-center { + align-self: center; + } + + .lg\:self-stretch { + align-self: stretch; + } + + .lg\:justify-start { + justify-content: flex-start; + } + + .lg\:justify-end { + justify-content: flex-end; + } + + .lg\:justify-center { + justify-content: center; + } + + .lg\:justify-between { + justify-content: space-between; + } + + .lg\:justify-around { + justify-content: space-around; + } + + .lg\:content-center { + align-content: center; + } + + .lg\:content-start { + align-content: flex-start; + } + + .lg\:content-end { + align-content: flex-end; + } + + .lg\:content-between { + align-content: space-between; + } + + .lg\:content-around { + align-content: space-around; + } + + .lg\:flex-1 { + flex: 1; + } + + .lg\:flex-auto { + flex: auto; + } + + .lg\:flex-initial { + flex: initial; + } + + .lg\:flex-none { + flex: none; + } + + .lg\:flex-grow { + flex-grow: 1; + } + + .lg\:flex-shrink { + flex-shrink: 1; + } + + .lg\:flex-no-grow { + flex-grow: 0; + } + + .lg\:flex-no-shrink { + flex-shrink: 0; + } + + .lg\:float-right { + float: right; + } + + .lg\:float-left { + float: left; + } + + .lg\:float-none { + float: none; + } + + .lg\:clearfix:after { + content: ""; + display: table; + clear: both; + } + + .lg\:font-sans { + font-family: Roboto, sans-serif; + } + + .lg\:font-serif { + font-family: Constantia, Lucida Bright, Lucidabright, Lucida Serif, Lucida, DejaVu Serif, Bitstream Vera Serif, Liberation Serif, Georgia, serif; + } + + .lg\:font-mono { + font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + } + + .lg\:font-hairline { + font-weight: 100; + } + + .lg\:font-thin { + font-weight: 200; + } + + .lg\:font-light { + font-weight: 300; + } + + .lg\:font-normal { + font-weight: 400; + } + + .lg\:font-medium { + font-weight: 500; + } + + .lg\:font-semibold { + font-weight: 600; + } + + .lg\:font-bold { + font-weight: 700; + } + + .lg\:font-extrabold { + font-weight: 800; + } + + .lg\:font-black { + font-weight: 900; + } + + .lg\:hover\:font-hairline:hover { + font-weight: 100; + } + + .lg\:hover\:font-thin:hover { + font-weight: 200; + } + + .lg\:hover\:font-light:hover { + font-weight: 300; + } + + .lg\:hover\:font-normal:hover { + font-weight: 400; + } + + .lg\:hover\:font-medium:hover { + font-weight: 500; + } + + .lg\:hover\:font-semibold:hover { + font-weight: 600; + } + + .lg\:hover\:font-bold:hover { + font-weight: 700; + } + + .lg\:hover\:font-extrabold:hover { + font-weight: 800; + } + + .lg\:hover\:font-black:hover { + font-weight: 900; + } + + .lg\:focus\:font-hairline:focus { + font-weight: 100; + } + + .lg\:focus\:font-thin:focus { + font-weight: 200; + } + + .lg\:focus\:font-light:focus { + font-weight: 300; + } + + .lg\:focus\:font-normal:focus { + font-weight: 400; + } + + .lg\:focus\:font-medium:focus { + font-weight: 500; + } + + .lg\:focus\:font-semibold:focus { + font-weight: 600; + } + + .lg\:focus\:font-bold:focus { + font-weight: 700; + } + + .lg\:focus\:font-extrabold:focus { + font-weight: 800; + } + + .lg\:focus\:font-black:focus { + font-weight: 900; + } + + .lg\:h-1 { + height: .25rem; + } + + .lg\:h-2 { + height: .5rem; + } + + .lg\:h-3 { + height: .75rem; + } + + .lg\:h-4 { + height: 1rem; + } + + .lg\:h-5 { + height: 1.25rem; + } + + .lg\:h-6 { + height: 1.5rem; + } + + .lg\:h-8 { + height: 2rem; + } + + .lg\:h-10 { + height: 2.5rem; + } + + .lg\:h-12 { + height: 3rem; + } + + .lg\:h-16 { + height: 4rem; + } + + .lg\:h-24 { + height: 6rem; + } + + .lg\:h-32 { + height: 8rem; + } + + .lg\:h-48 { + height: 12rem; + } + + .lg\:h-64 { + height: 16rem; + } + + .lg\:h-auto { + height: auto; + } + + .lg\:h-px { + height: 1px; + } + + .lg\:h-full { + height: 100%; + } + + .lg\:h-screen { + height: 100vh; + } + + .lg\:leading-none { + line-height: 1; + } + + .lg\:leading-tight { + line-height: 1.25; + } + + .lg\:leading-normal { + line-height: 1.5; + } + + .lg\:leading-loose { + line-height: 2; + } + + .lg\:m-0 { + margin: 0; + } + + .lg\:m-1 { + margin: .25rem; + } + + .lg\:m-2 { + margin: .5rem; + } + + .lg\:m-3 { + margin: .75rem; + } + + .lg\:m-4 { + margin: 1rem; + } + + .lg\:m-5 { + margin: 1.25rem; + } + + .lg\:m-6 { + margin: 1.5rem; + } + + .lg\:m-8 { + margin: 2rem; + } + + .lg\:m-10 { + margin: 2.5rem; + } + + .lg\:m-12 { + margin: 3rem; + } + + .lg\:m-16 { + margin: 4rem; + } + + .lg\:m-20 { + margin: 5rem; + } + + .lg\:m-24 { + margin: 6rem; + } + + .lg\:m-32 { + margin: 8rem; + } + + .lg\:m-auto { + margin: auto; + } + + .lg\:m-px { + margin: 1px; + } + + .lg\:my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .lg\:mx-0 { + margin-left: 0; + margin-right: 0; + } + + .lg\:my-1 { + margin-top: .25rem; + margin-bottom: .25rem; + } + + .lg\:mx-1 { + margin-left: .25rem; + margin-right: .25rem; + } + + .lg\:my-2 { + margin-top: .5rem; + margin-bottom: .5rem; + } + + .lg\:mx-2 { + margin-left: .5rem; + margin-right: .5rem; + } + + .lg\:my-3 { + margin-top: .75rem; + margin-bottom: .75rem; + } + + .lg\:mx-3 { + margin-left: .75rem; + margin-right: .75rem; + } + + .lg\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .lg\:mx-4 { + margin-left: 1rem; + margin-right: 1rem; + } + + .lg\:my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; + } + + .lg\:mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; + } + + .lg\:my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + } + + .lg\:mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; + } + + .lg\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + + .lg\:mx-8 { + margin-left: 2rem; + margin-right: 2rem; + } + + .lg\:my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; + } + + .lg\:mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; + } + + .lg\:my-12 { + margin-top: 3rem; + margin-bottom: 3rem; + } + + .lg\:mx-12 { + margin-left: 3rem; + margin-right: 3rem; + } + + .lg\:my-16 { + margin-top: 4rem; + margin-bottom: 4rem; + } + + .lg\:mx-16 { + margin-left: 4rem; + margin-right: 4rem; + } + + .lg\:my-20 { + margin-top: 5rem; + margin-bottom: 5rem; + } + + .lg\:mx-20 { + margin-left: 5rem; + margin-right: 5rem; + } + + .lg\:my-24 { + margin-top: 6rem; + margin-bottom: 6rem; + } + + .lg\:mx-24 { + margin-left: 6rem; + margin-right: 6rem; + } + + .lg\:my-32 { + margin-top: 8rem; + margin-bottom: 8rem; + } + + .lg\:mx-32 { + margin-left: 8rem; + margin-right: 8rem; + } + + .lg\:my-auto { + margin-top: auto; + margin-bottom: auto; + } + + .lg\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .lg\:my-px { + margin-top: 1px; + margin-bottom: 1px; + } + + .lg\:mx-px { + margin-left: 1px; + margin-right: 1px; + } + + .lg\:mt-0 { + margin-top: 0; + } + + .lg\:mr-0 { + margin-right: 0; + } + + .lg\:mb-0 { + margin-bottom: 0; + } + + .lg\:ml-0 { + margin-left: 0; + } + + .lg\:mt-1 { + margin-top: .25rem; + } + + .lg\:mr-1 { + margin-right: .25rem; + } + + .lg\:mb-1 { + margin-bottom: .25rem; + } + + .lg\:ml-1 { + margin-left: .25rem; + } + + .lg\:mt-2 { + margin-top: .5rem; + } + + .lg\:mr-2 { + margin-right: .5rem; + } + + .lg\:mb-2 { + margin-bottom: .5rem; + } + + .lg\:ml-2 { + margin-left: .5rem; + } + + .lg\:mt-3 { + margin-top: .75rem; + } + + .lg\:mr-3 { + margin-right: .75rem; + } + + .lg\:mb-3 { + margin-bottom: .75rem; + } + + .lg\:ml-3 { + margin-left: .75rem; + } + + .lg\:mt-4 { + margin-top: 1rem; + } + + .lg\:mr-4 { + margin-right: 1rem; + } + + .lg\:mb-4 { + margin-bottom: 1rem; + } + + .lg\:ml-4 { + margin-left: 1rem; + } + + .lg\:mt-5 { + margin-top: 1.25rem; + } + + .lg\:mr-5 { + margin-right: 1.25rem; + } + + .lg\:mb-5 { + margin-bottom: 1.25rem; + } + + .lg\:ml-5 { + margin-left: 1.25rem; + } + + .lg\:mt-6 { + margin-top: 1.5rem; + } + + .lg\:mr-6 { + margin-right: 1.5rem; + } + + .lg\:mb-6 { + margin-bottom: 1.5rem; + } + + .lg\:ml-6 { + margin-left: 1.5rem; + } + + .lg\:mt-8 { + margin-top: 2rem; + } + + .lg\:mr-8 { + margin-right: 2rem; + } + + .lg\:mb-8 { + margin-bottom: 2rem; + } + + .lg\:ml-8 { + margin-left: 2rem; + } + + .lg\:mt-10 { + margin-top: 2.5rem; + } + + .lg\:mr-10 { + margin-right: 2.5rem; + } + + .lg\:mb-10 { + margin-bottom: 2.5rem; + } + + .lg\:ml-10 { + margin-left: 2.5rem; + } + + .lg\:mt-12 { + margin-top: 3rem; + } + + .lg\:mr-12 { + margin-right: 3rem; + } + + .lg\:mb-12 { + margin-bottom: 3rem; + } + + .lg\:ml-12 { + margin-left: 3rem; + } + + .lg\:mt-16 { + margin-top: 4rem; + } + + .lg\:mr-16 { + margin-right: 4rem; + } + + .lg\:mb-16 { + margin-bottom: 4rem; + } + + .lg\:ml-16 { + margin-left: 4rem; + } + + .lg\:mt-20 { + margin-top: 5rem; + } + + .lg\:mr-20 { + margin-right: 5rem; + } + + .lg\:mb-20 { + margin-bottom: 5rem; + } + + .lg\:ml-20 { + margin-left: 5rem; + } + + .lg\:mt-24 { + margin-top: 6rem; + } + + .lg\:mr-24 { + margin-right: 6rem; + } + + .lg\:mb-24 { + margin-bottom: 6rem; + } + + .lg\:ml-24 { + margin-left: 6rem; + } + + .lg\:mt-32 { + margin-top: 8rem; + } + + .lg\:mr-32 { + margin-right: 8rem; + } + + .lg\:mb-32 { + margin-bottom: 8rem; + } + + .lg\:ml-32 { + margin-left: 8rem; + } + + .lg\:mt-auto { + margin-top: auto; + } + + .lg\:mr-auto { + margin-right: auto; + } + + .lg\:mb-auto { + margin-bottom: auto; + } + + .lg\:ml-auto { + margin-left: auto; + } + + .lg\:mt-px { + margin-top: 1px; + } + + .lg\:mr-px { + margin-right: 1px; + } + + .lg\:mb-px { + margin-bottom: 1px; + } + + .lg\:ml-px { + margin-left: 1px; + } + + .lg\:max-h-full { + max-height: 100%; + } + + .lg\:max-h-screen { + max-height: 100vh; + } + + .lg\:max-w-xs { + max-width: 20rem; + } + + .lg\:max-w-sm { + max-width: 30rem; + } + + .lg\:max-w-md { + max-width: 40rem; + } + + .lg\:max-w-lg { + max-width: 50rem; + } + + .lg\:max-w-xl { + max-width: 60rem; + } + + .lg\:max-w-2xl { + max-width: 70rem; + } + + .lg\:max-w-3xl { + max-width: 80rem; + } + + .lg\:max-w-4xl { + max-width: 90rem; + } + + .lg\:max-w-5xl { + max-width: 100rem; + } + + .lg\:max-w-full { + max-width: 100%; + } + + .lg\:min-h-0 { + min-height: 0; + } + + .lg\:min-h-full { + min-height: 100%; + } + + .lg\:min-h-screen { + min-height: 100vh; + } + + .lg\:min-w-0 { + min-width: 0; + } + + .lg\:min-w-full { + min-width: 100%; + } + + .lg\:-m-0 { + margin: 0; + } + + .lg\:-m-1 { + margin: -0.25rem; + } + + .lg\:-m-2 { + margin: -0.5rem; + } + + .lg\:-m-3 { + margin: -0.75rem; + } + + .lg\:-m-4 { + margin: -1rem; + } + + .lg\:-m-5 { + margin: -1.25rem; + } + + .lg\:-m-6 { + margin: -1.5rem; + } + + .lg\:-m-8 { + margin: -2rem; + } + + .lg\:-m-10 { + margin: -2.5rem; + } + + .lg\:-m-12 { + margin: -3rem; + } + + .lg\:-m-16 { + margin: -4rem; + } + + .lg\:-m-20 { + margin: -5rem; + } + + .lg\:-m-24 { + margin: -6rem; + } + + .lg\:-m-32 { + margin: -8rem; + } + + .lg\:-m-px { + margin: -1px; + } + + .lg\:-my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .lg\:-mx-0 { + margin-left: 0; + margin-right: 0; + } + + .lg\:-my-1 { + margin-top: -0.25rem; + margin-bottom: -0.25rem; + } + + .lg\:-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; + } + + .lg\:-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; + } + + .lg\:-mx-2 { + margin-left: -0.5rem; + margin-right: -0.5rem; + } + + .lg\:-my-3 { + margin-top: -0.75rem; + margin-bottom: -0.75rem; + } + + .lg\:-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; + } + + .lg\:-my-4 { + margin-top: -1rem; + margin-bottom: -1rem; + } + + .lg\:-mx-4 { + margin-left: -1rem; + margin-right: -1rem; + } + + .lg\:-my-5 { + margin-top: -1.25rem; + margin-bottom: -1.25rem; + } + + .lg\:-mx-5 { + margin-left: -1.25rem; + margin-right: -1.25rem; + } + + .lg\:-my-6 { + margin-top: -1.5rem; + margin-bottom: -1.5rem; + } + + .lg\:-mx-6 { + margin-left: -1.5rem; + margin-right: -1.5rem; + } + + .lg\:-my-8 { + margin-top: -2rem; + margin-bottom: -2rem; + } + + .lg\:-mx-8 { + margin-left: -2rem; + margin-right: -2rem; + } + + .lg\:-my-10 { + margin-top: -2.5rem; + margin-bottom: -2.5rem; + } + + .lg\:-mx-10 { + margin-left: -2.5rem; + margin-right: -2.5rem; + } + + .lg\:-my-12 { + margin-top: -3rem; + margin-bottom: -3rem; + } + + .lg\:-mx-12 { + margin-left: -3rem; + margin-right: -3rem; + } + + .lg\:-my-16 { + margin-top: -4rem; + margin-bottom: -4rem; + } + + .lg\:-mx-16 { + margin-left: -4rem; + margin-right: -4rem; + } + + .lg\:-my-20 { + margin-top: -5rem; + margin-bottom: -5rem; + } + + .lg\:-mx-20 { + margin-left: -5rem; + margin-right: -5rem; + } + + .lg\:-my-24 { + margin-top: -6rem; + margin-bottom: -6rem; + } + + .lg\:-mx-24 { + margin-left: -6rem; + margin-right: -6rem; + } + + .lg\:-my-32 { + margin-top: -8rem; + margin-bottom: -8rem; + } + + .lg\:-mx-32 { + margin-left: -8rem; + margin-right: -8rem; + } + + .lg\:-my-px { + margin-top: -1px; + margin-bottom: -1px; + } + + .lg\:-mx-px { + margin-left: -1px; + margin-right: -1px; + } + + .lg\:-mt-0 { + margin-top: 0; + } + + .lg\:-mr-0 { + margin-right: 0; + } + + .lg\:-mb-0 { + margin-bottom: 0; + } + + .lg\:-ml-0 { + margin-left: 0; + } + + .lg\:-mt-1 { + margin-top: -0.25rem; + } + + .lg\:-mr-1 { + margin-right: -0.25rem; + } + + .lg\:-mb-1 { + margin-bottom: -0.25rem; + } + + .lg\:-ml-1 { + margin-left: -0.25rem; + } + + .lg\:-mt-2 { + margin-top: -0.5rem; + } + + .lg\:-mr-2 { + margin-right: -0.5rem; + } + + .lg\:-mb-2 { + margin-bottom: -0.5rem; + } + + .lg\:-ml-2 { + margin-left: -0.5rem; + } + + .lg\:-mt-3 { + margin-top: -0.75rem; + } + + .lg\:-mr-3 { + margin-right: -0.75rem; + } + + .lg\:-mb-3 { + margin-bottom: -0.75rem; + } + + .lg\:-ml-3 { + margin-left: -0.75rem; + } + + .lg\:-mt-4 { + margin-top: -1rem; + } + + .lg\:-mr-4 { + margin-right: -1rem; + } + + .lg\:-mb-4 { + margin-bottom: -1rem; + } + + .lg\:-ml-4 { + margin-left: -1rem; + } + + .lg\:-mt-5 { + margin-top: -1.25rem; + } + + .lg\:-mr-5 { + margin-right: -1.25rem; + } + + .lg\:-mb-5 { + margin-bottom: -1.25rem; + } + + .lg\:-ml-5 { + margin-left: -1.25rem; + } + + .lg\:-mt-6 { + margin-top: -1.5rem; + } + + .lg\:-mr-6 { + margin-right: -1.5rem; + } + + .lg\:-mb-6 { + margin-bottom: -1.5rem; + } + + .lg\:-ml-6 { + margin-left: -1.5rem; + } + + .lg\:-mt-8 { + margin-top: -2rem; + } + + .lg\:-mr-8 { + margin-right: -2rem; + } + + .lg\:-mb-8 { + margin-bottom: -2rem; + } + + .lg\:-ml-8 { + margin-left: -2rem; + } + + .lg\:-mt-10 { + margin-top: -2.5rem; + } + + .lg\:-mr-10 { + margin-right: -2.5rem; + } + + .lg\:-mb-10 { + margin-bottom: -2.5rem; + } + + .lg\:-ml-10 { + margin-left: -2.5rem; + } + + .lg\:-mt-12 { + margin-top: -3rem; + } + + .lg\:-mr-12 { + margin-right: -3rem; + } + + .lg\:-mb-12 { + margin-bottom: -3rem; + } + + .lg\:-ml-12 { + margin-left: -3rem; + } + + .lg\:-mt-16 { + margin-top: -4rem; + } + + .lg\:-mr-16 { + margin-right: -4rem; + } + + .lg\:-mb-16 { + margin-bottom: -4rem; + } + + .lg\:-ml-16 { + margin-left: -4rem; + } + + .lg\:-mt-20 { + margin-top: -5rem; + } + + .lg\:-mr-20 { + margin-right: -5rem; + } + + .lg\:-mb-20 { + margin-bottom: -5rem; + } + + .lg\:-ml-20 { + margin-left: -5rem; + } + + .lg\:-mt-24 { + margin-top: -6rem; + } + + .lg\:-mr-24 { + margin-right: -6rem; + } + + .lg\:-mb-24 { + margin-bottom: -6rem; + } + + .lg\:-ml-24 { + margin-left: -6rem; + } + + .lg\:-mt-32 { + margin-top: -8rem; + } + + .lg\:-mr-32 { + margin-right: -8rem; + } + + .lg\:-mb-32 { + margin-bottom: -8rem; + } + + .lg\:-ml-32 { + margin-left: -8rem; + } + + .lg\:-mt-px { + margin-top: -1px; + } + + .lg\:-mr-px { + margin-right: -1px; + } + + .lg\:-mb-px { + margin-bottom: -1px; + } + + .lg\:-ml-px { + margin-left: -1px; + } + + .lg\:opacity-0 { + opacity: 0; + } + + .lg\:opacity-25 { + opacity: .25; + } + + .lg\:opacity-50 { + opacity: .5; + } + + .lg\:opacity-75 { + opacity: .75; + } + + .lg\:opacity-100 { + opacity: 1; + } + + .lg\:overflow-auto { + overflow: auto; + } + + .lg\:overflow-hidden { + overflow: hidden; + } + + .lg\:overflow-visible { + overflow: visible; + } + + .lg\:overflow-scroll { + overflow: scroll; + } + + .lg\:overflow-x-auto { + overflow-x: auto; + } + + .lg\:overflow-y-auto { + overflow-y: auto; + } + + .lg\:overflow-x-hidden { + overflow-x: hidden; + } + + .lg\:overflow-y-hidden { + overflow-y: hidden; + } + + .lg\:overflow-x-visible { + overflow-x: visible; + } + + .lg\:overflow-y-visible { + overflow-y: visible; + } + + .lg\:overflow-x-scroll { + overflow-x: scroll; + } + + .lg\:overflow-y-scroll { + overflow-y: scroll; + } + + .lg\:scrolling-touch { + -webkit-overflow-scrolling: touch; + } + + .lg\:scrolling-auto { + -webkit-overflow-scrolling: auto; + } + + .lg\:p-0 { + padding: 0; + } + + .lg\:p-1 { + padding: .25rem; + } + + .lg\:p-2 { + padding: .5rem; + } + + .lg\:p-3 { + padding: .75rem; + } + + .lg\:p-4 { + padding: 1rem; + } + + .lg\:p-5 { + padding: 1.25rem; + } + + .lg\:p-6 { + padding: 1.5rem; + } + + .lg\:p-8 { + padding: 2rem; + } + + .lg\:p-10 { + padding: 2.5rem; + } + + .lg\:p-12 { + padding: 3rem; + } + + .lg\:p-16 { + padding: 4rem; + } + + .lg\:p-20 { + padding: 5rem; + } + + .lg\:p-24 { + padding: 6rem; + } + + .lg\:p-32 { + padding: 8rem; + } + + .lg\:p-px { + padding: 1px; + } + + .lg\:py-0 { + padding-top: 0; + padding-bottom: 0; + } + + .lg\:px-0 { + padding-left: 0; + padding-right: 0; + } + + .lg\:py-1 { + padding-top: .25rem; + padding-bottom: .25rem; + } + + .lg\:px-1 { + padding-left: .25rem; + padding-right: .25rem; + } + + .lg\:py-2 { + padding-top: .5rem; + padding-bottom: .5rem; + } + + .lg\:px-2 { + padding-left: .5rem; + padding-right: .5rem; + } + + .lg\:py-3 { + padding-top: .75rem; + padding-bottom: .75rem; + } + + .lg\:px-3 { + padding-left: .75rem; + padding-right: .75rem; + } + + .lg\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .lg\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .lg\:py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .lg\:px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .lg\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .lg\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .lg\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } + + .lg\:px-8 { + padding-left: 2rem; + padding-right: 2rem; + } + + .lg\:py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + + .lg\:px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .lg\:py-12 { + padding-top: 3rem; + padding-bottom: 3rem; + } + + .lg\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .lg\:py-16 { + padding-top: 4rem; + padding-bottom: 4rem; + } + + .lg\:px-16 { + padding-left: 4rem; + padding-right: 4rem; + } + + .lg\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .lg\:px-20 { + padding-left: 5rem; + padding-right: 5rem; + } + + .lg\:py-24 { + padding-top: 6rem; + padding-bottom: 6rem; + } + + .lg\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + + .lg\:py-32 { + padding-top: 8rem; + padding-bottom: 8rem; + } + + .lg\:px-32 { + padding-left: 8rem; + padding-right: 8rem; + } + + .lg\:py-px { + padding-top: 1px; + padding-bottom: 1px; + } + + .lg\:px-px { + padding-left: 1px; + padding-right: 1px; + } + + .lg\:pt-0 { + padding-top: 0; + } + + .lg\:pr-0 { + padding-right: 0; + } + + .lg\:pb-0 { + padding-bottom: 0; + } + + .lg\:pl-0 { + padding-left: 0; + } + + .lg\:pt-1 { + padding-top: .25rem; + } + + .lg\:pr-1 { + padding-right: .25rem; + } + + .lg\:pb-1 { + padding-bottom: .25rem; + } + + .lg\:pl-1 { + padding-left: .25rem; + } + + .lg\:pt-2 { + padding-top: .5rem; + } + + .lg\:pr-2 { + padding-right: .5rem; + } + + .lg\:pb-2 { + padding-bottom: .5rem; + } + + .lg\:pl-2 { + padding-left: .5rem; + } + + .lg\:pt-3 { + padding-top: .75rem; + } + + .lg\:pr-3 { + padding-right: .75rem; + } + + .lg\:pb-3 { + padding-bottom: .75rem; + } + + .lg\:pl-3 { + padding-left: .75rem; + } + + .lg\:pt-4 { + padding-top: 1rem; + } + + .lg\:pr-4 { + padding-right: 1rem; + } + + .lg\:pb-4 { + padding-bottom: 1rem; + } + + .lg\:pl-4 { + padding-left: 1rem; + } + + .lg\:pt-5 { + padding-top: 1.25rem; + } + + .lg\:pr-5 { + padding-right: 1.25rem; + } + + .lg\:pb-5 { + padding-bottom: 1.25rem; + } + + .lg\:pl-5 { + padding-left: 1.25rem; + } + + .lg\:pt-6 { + padding-top: 1.5rem; + } + + .lg\:pr-6 { + padding-right: 1.5rem; + } + + .lg\:pb-6 { + padding-bottom: 1.5rem; + } + + .lg\:pl-6 { + padding-left: 1.5rem; + } + + .lg\:pt-8 { + padding-top: 2rem; + } + + .lg\:pr-8 { + padding-right: 2rem; + } + + .lg\:pb-8 { + padding-bottom: 2rem; + } + + .lg\:pl-8 { + padding-left: 2rem; + } + + .lg\:pt-10 { + padding-top: 2.5rem; + } + + .lg\:pr-10 { + padding-right: 2.5rem; + } + + .lg\:pb-10 { + padding-bottom: 2.5rem; + } + + .lg\:pl-10 { + padding-left: 2.5rem; + } + + .lg\:pt-12 { + padding-top: 3rem; + } + + .lg\:pr-12 { + padding-right: 3rem; + } + + .lg\:pb-12 { + padding-bottom: 3rem; + } + + .lg\:pl-12 { + padding-left: 3rem; + } + + .lg\:pt-16 { + padding-top: 4rem; + } + + .lg\:pr-16 { + padding-right: 4rem; + } + + .lg\:pb-16 { + padding-bottom: 4rem; + } + + .lg\:pl-16 { + padding-left: 4rem; + } + + .lg\:pt-20 { + padding-top: 5rem; + } + + .lg\:pr-20 { + padding-right: 5rem; + } + + .lg\:pb-20 { + padding-bottom: 5rem; + } + + .lg\:pl-20 { + padding-left: 5rem; + } + + .lg\:pt-24 { + padding-top: 6rem; + } + + .lg\:pr-24 { + padding-right: 6rem; + } + + .lg\:pb-24 { + padding-bottom: 6rem; + } + + .lg\:pl-24 { + padding-left: 6rem; + } + + .lg\:pt-32 { + padding-top: 8rem; + } + + .lg\:pr-32 { + padding-right: 8rem; + } + + .lg\:pb-32 { + padding-bottom: 8rem; + } + + .lg\:pl-32 { + padding-left: 8rem; + } + + .lg\:pt-px { + padding-top: 1px; + } + + .lg\:pr-px { + padding-right: 1px; + } + + .lg\:pb-px { + padding-bottom: 1px; + } + + .lg\:pl-px { + padding-left: 1px; + } + + .lg\:pointer-events-none { + pointer-events: none; + } + + .lg\:pointer-events-auto { + pointer-events: auto; + } + + .lg\:static { + position: static; + } + + .lg\:fixed { + position: fixed; + } + + .lg\:absolute { + position: absolute; + } + + .lg\:relative { + position: relative; + } + + .lg\:sticky { + position: sticky; + } + + .lg\:pin-none { + top: auto; + right: auto; + bottom: auto; + left: auto; + } + + .lg\:pin { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + .lg\:pin-y { + top: 0; + bottom: 0; + } + + .lg\:pin-x { + right: 0; + left: 0; + } + + .lg\:pin-t { + top: 0; + } + + .lg\:pin-r { + right: 0; + } + + .lg\:pin-b { + bottom: 0; + } + + .lg\:pin-l { + left: 0; + } + + .lg\:resize-none { + resize: none; + } + + .lg\:resize-y { + resize: vertical; + } + + .lg\:resize-x { + resize: horizontal; + } + + .lg\:resize { + resize: both; + } + + .lg\:shadow { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .lg\:shadow-md { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .lg\:shadow-lg { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .lg\:shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .lg\:shadow-outline { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .lg\:shadow-none { + box-shadow: none; + } + + .lg\:hover\:shadow:hover { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .lg\:hover\:shadow-md:hover { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .lg\:hover\:shadow-lg:hover { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .lg\:hover\:shadow-inner:hover { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .lg\:hover\:shadow-outline:hover { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .lg\:hover\:shadow-none:hover { + box-shadow: none; + } + + .lg\:focus\:shadow:focus { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .lg\:focus\:shadow-md:focus { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .lg\:focus\:shadow-lg:focus { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .lg\:focus\:shadow-inner:focus { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .lg\:focus\:shadow-outline:focus { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .lg\:focus\:shadow-none:focus { + box-shadow: none; + } + + .lg\:table-auto { + table-layout: auto; + } + + .lg\:table-fixed { + table-layout: fixed; + } + + .lg\:text-left { + text-align: left; + } + + .lg\:text-center { + text-align: center; + } + + .lg\:text-right { + text-align: right; + } + + .lg\:text-justify { + text-align: justify; + } + + .lg\:text-transparent { + color: transparent; + } + + .lg\:text-black { + color: #22292f; + } + + .lg\:text-grey-darkest { + color: #3d4852; + } + + .lg\:text-grey-darker { + color: #606f7b; + } + + .lg\:text-grey-dark { + color: #0B346E; + } + + .lg\:text-grey { + color: #b8c2cc; + } + + .lg\:text-grey-light { + color: #dae1e7; + } + + .lg\:text-grey-lighter { + color: #f1f5f8; + } + + .lg\:text-grey-lightest { + color: #f8fafc; + } + + .lg\:text-white { + color: #fff; + } + + .lg\:text-indigo-darkest { + color: #191e38; + } + + .lg\:text-indigo-darker { + color: #2EA9DF; + } + + .lg\:text-indigo-dark { + color: #005CAF; + } + + .lg\:text-indigo { + color: #005CAF; + } + + .lg\:text-indigo-light { + color: #7886d7; + } + + .lg\:text-indigo-lighter { + color: #A5DEE4; + } + + .lg\:text-indigo-lightest { + color: #e6e8ff; + } + + .lg\:hover\:text-transparent:hover { + color: transparent; + } + + .lg\:hover\:text-black:hover { + color: #22292f; + } + + .lg\:hover\:text-grey-darkest:hover { + color: #3d4852; + } + + .lg\:hover\:text-grey-darker:hover { + color: #606f7b; + } + + .lg\:hover\:text-grey-dark:hover { + color: #0B346E; + } + + .lg\:hover\:text-grey:hover { + color: #b8c2cc; + } + + .lg\:hover\:text-grey-light:hover { + color: #dae1e7; + } + + .lg\:hover\:text-grey-lighter:hover { + color: #f1f5f8; + } + + .lg\:hover\:text-grey-lightest:hover { + color: #f8fafc; + } + + .lg\:hover\:text-white:hover { + color: #fff; + } + + .lg\:hover\:text-indigo-darkest:hover { + color: #191e38; + } + + .lg\:hover\:text-indigo-darker:hover { + color: #2EA9DF; + } + + .lg\:hover\:text-indigo-dark:hover { + color: #005CAF; + } + + .lg\:hover\:text-indigo:hover { + color: #005CAF; + } + + .lg\:hover\:text-indigo-light:hover { + color: #7886d7; + } + + .lg\:hover\:text-indigo-lighter:hover { + color: #A5DEE4; + } + + .lg\:hover\:text-indigo-lightest:hover { + color: #e6e8ff; + } + + .lg\:focus\:text-transparent:focus { + color: transparent; + } + + .lg\:focus\:text-black:focus { + color: #22292f; + } + + .lg\:focus\:text-grey-darkest:focus { + color: #3d4852; + } + + .lg\:focus\:text-grey-darker:focus { + color: #606f7b; + } + + .lg\:focus\:text-grey-dark:focus { + color: #0B346E; + } + + .lg\:focus\:text-grey:focus { + color: #b8c2cc; + } + + .lg\:focus\:text-grey-light:focus { + color: #dae1e7; + } + + .lg\:focus\:text-grey-lighter:focus { + color: #f1f5f8; + } + + .lg\:focus\:text-grey-lightest:focus { + color: #f8fafc; + } + + .lg\:focus\:text-white:focus { + color: #fff; + } + + .lg\:focus\:text-indigo-darkest:focus { + color: #191e38; + } + + .lg\:focus\:text-indigo-darker:focus { + color: #2EA9DF; + } + + .lg\:focus\:text-indigo-dark:focus { + color: #005CAF; + } + + .lg\:focus\:text-indigo:focus { + color: #005CAF; + } + + .lg\:focus\:text-indigo-light:focus { + color: #7886d7; + } + + .lg\:focus\:text-indigo-lighter:focus { + color: #A5DEE4; + } + + .lg\:focus\:text-indigo-lightest:focus { + color: #e6e8ff; + } + + .lg\:text-xs { + font-size: .75rem; + } + + .lg\:text-sm { + font-size: .875rem; + } + + .lg\:text-base { + font-size: 1rem; + } + + .lg\:text-lg { + font-size: 1.125rem; + } + + .lg\:text-xl { + font-size: 1.25rem; + } + + .lg\:text-2xl { + font-size: 1.5rem; + } + + .lg\:text-3xl { + font-size: 1.875rem; + } + + .lg\:text-4xl { + font-size: 2.25rem; + } + + .lg\:text-5xl { + font-size: 3rem; + } + + .lg\:italic { + font-style: italic; + } + + .lg\:roman { + font-style: normal; + } + + .lg\:uppercase { + text-transform: uppercase; + } + + .lg\:lowercase { + text-transform: lowercase; + } + + .lg\:capitalize { + text-transform: capitalize; + } + + .lg\:normal-case { + text-transform: none; + } + + .lg\:underline { + text-decoration: underline; + } + + .lg\:line-through { + text-decoration: line-through; + } + + .lg\:no-underline { + text-decoration: none; + } + + .lg\:antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .lg\:subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .lg\:hover\:italic:hover { + font-style: italic; + } + + .lg\:hover\:roman:hover { + font-style: normal; + } + + .lg\:hover\:uppercase:hover { + text-transform: uppercase; + } + + .lg\:hover\:lowercase:hover { + text-transform: lowercase; + } + + .lg\:hover\:capitalize:hover { + text-transform: capitalize; + } + + .lg\:hover\:normal-case:hover { + text-transform: none; + } + + .lg\:hover\:underline:hover { + text-decoration: underline; + } + + .lg\:hover\:line-through:hover { + text-decoration: line-through; + } + + .lg\:hover\:no-underline:hover { + text-decoration: none; + } + + .lg\:hover\:antialiased:hover { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .lg\:hover\:subpixel-antialiased:hover { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .lg\:focus\:italic:focus { + font-style: italic; + } + + .lg\:focus\:roman:focus { + font-style: normal; + } + + .lg\:focus\:uppercase:focus { + text-transform: uppercase; + } + + .lg\:focus\:lowercase:focus { + text-transform: lowercase; + } + + .lg\:focus\:capitalize:focus { + text-transform: capitalize; + } + + .lg\:focus\:normal-case:focus { + text-transform: none; + } + + .lg\:focus\:underline:focus { + text-decoration: underline; + } + + .lg\:focus\:line-through:focus { + text-decoration: line-through; + } + + .lg\:focus\:no-underline:focus { + text-decoration: none; + } + + .lg\:focus\:antialiased:focus { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .lg\:focus\:subpixel-antialiased:focus { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .lg\:tracking-tight { + letter-spacing: -0.05em; + } + + .lg\:tracking-normal { + letter-spacing: 0; + } + + .lg\:tracking-wide { + letter-spacing: .05em; + } + + .lg\:select-none { + user-select: none; + } + + .lg\:select-text { + user-select: text; + } + + .lg\:align-baseline { + vertical-align: baseline; + } + + .lg\:align-top { + vertical-align: top; + } + + .lg\:align-middle { + vertical-align: middle; + } + + .lg\:align-bottom { + vertical-align: bottom; + } + + .lg\:align-text-top { + vertical-align: text-top; + } + + .lg\:align-text-bottom { + vertical-align: text-bottom; + } + + .lg\:visible { + visibility: visible; + } + + .lg\:invisible { + visibility: hidden; + } + + .lg\:whitespace-normal { + white-space: normal; + } + + .lg\:whitespace-no-wrap { + white-space: nowrap; + } + + .lg\:whitespace-pre { + white-space: pre; + } + + .lg\:whitespace-pre-line { + white-space: pre-line; + } + + .lg\:whitespace-pre-wrap { + white-space: pre-wrap; + } + + .lg\:break-words { + word-wrap: break-word; + } + + .lg\:break-normal { + word-wrap: normal; + } + + .lg\:truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .lg\:w-1 { + width: .25rem; + } + + .lg\:w-2 { + width: .5rem; + } + + .lg\:w-3 { + width: .75rem; + } + + .lg\:w-4 { + width: 1rem; + } + + .lg\:w-5 { + width: 1.25rem; + } + + .lg\:w-6 { + width: 1.5rem; + } + + .lg\:w-8 { + width: 2rem; + } + + .lg\:w-10 { + width: 2.5rem; + } + + .lg\:w-12 { + width: 3rem; + } + + .lg\:w-16 { + width: 4rem; + } + + .lg\:w-24 { + width: 6rem; + } + + .lg\:w-32 { + width: 8rem; + } + + .lg\:w-48 { + width: 12rem; + } + + .lg\:w-64 { + width: 16rem; + } + + .lg\:w-auto { + width: auto; + } + + .lg\:w-px { + width: 1px; + } + + .lg\:w-1\/2 { + width: 50%; + } + + .lg\:w-1\/3 { + width: 33.33333%; + } + + .lg\:w-2\/3 { + width: 66.66667%; + } + + .lg\:w-1\/4 { + width: 25%; + } + + .lg\:w-3\/4 { + width: 75%; + } + + .lg\:w-1\/5 { + width: 20%; + } + + .lg\:w-2\/5 { + width: 40%; + } + + .lg\:w-3\/5 { + width: 60%; + } + + .lg\:w-4\/5 { + width: 80%; + } + + .lg\:w-1\/6 { + width: 16.66667%; + } + + .lg\:w-5\/6 { + width: 83.33333%; + } + + .lg\:w-full { + width: 100%; + } + + .lg\:w-screen { + width: 100vw; + } + + .lg\:z-0 { + z-index: 0; + } + + .lg\:z-10 { + z-index: 10; + } + + .lg\:z-20 { + z-index: 20; + } + + .lg\:z-30 { + z-index: 30; + } + + .lg\:z-40 { + z-index: 40; + } + + .lg\:z-50 { + z-index: 50; + } + + .lg\:z-auto { + z-index: auto; + } +} + +@media (min-width: 1200px) { + .xl\:-order-1 { + order: -1; + } + + .xl\:order-0 { + order: 0; + } + + .xl\:order-1 { + order: 1; + } + + .xl\:order-2 { + order: 2; + } + + .xl\:list-reset { + list-style: none; + padding: 0; + } + + .xl\:appearance-none { + appearance: none; + } + + .xl\:bg-fixed { + background-attachment: fixed; + } + + .xl\:bg-local { + background-attachment: local; + } + + .xl\:bg-scroll { + background-attachment: scroll; + } + + .xl\:bg-transparent { + background-color: transparent; + } + + .xl\:bg-black { + background-color: #22292f; + } + + .xl\:bg-grey-darkest { + background-color: #3d4852; + } + + .xl\:bg-grey-darker { + background-color: #606f7b; + } + + .xl\:bg-grey-dark { + background-color: #0B346E; + } + + .xl\:bg-grey { + background-color: #b8c2cc; + } + + .xl\:bg-grey-light { + background-color: #dae1e7; + } + + .xl\:bg-grey-lighter { + background-color: #f1f5f8; + } + + .xl\:bg-grey-lightest { + background-color: #f8fafc; + } + + .xl\:bg-white { + background-color: #fff; + } + + .xl\:bg-indigo-darkest { + background-color: #191e38; + } + + .xl\:bg-indigo-darker { + background-color: #2EA9DF; + } + + .xl\:bg-indigo-dark { + background-color: #005CAF; + } + + .xl\:bg-indigo { + background-color: #005CAF; + } + + .xl\:bg-indigo-light { + background-color: #7886d7; + } + + .xl\:bg-indigo-lighter { + background-color: #A5DEE4; + } + + .xl\:bg-indigo-lightest { + background-color: #e6e8ff; + } + + .xl\:hover\:bg-transparent:hover { + background-color: transparent; + } + + .xl\:hover\:bg-black:hover { + background-color: #22292f; + } + + .xl\:hover\:bg-grey-darkest:hover { + background-color: #3d4852; + } + + .xl\:hover\:bg-grey-darker:hover { + background-color: #606f7b; + } + + .xl\:hover\:bg-grey-dark:hover { + background-color: #0B346E; + } + + .xl\:hover\:bg-grey:hover { + background-color: #b8c2cc; + } + + .xl\:hover\:bg-grey-light:hover { + background-color: #dae1e7; + } + + .xl\:hover\:bg-grey-lighter:hover { + background-color: #f1f5f8; + } + + .xl\:hover\:bg-grey-lightest:hover { + background-color: #f8fafc; + } + + .xl\:hover\:bg-white:hover { + background-color: #fff; + } + + .xl\:hover\:bg-indigo-darkest:hover { + background-color: #191e38; + } + + .xl\:hover\:bg-indigo-darker:hover { + background-color: #2EA9DF; + } + + .xl\:hover\:bg-indigo-dark:hover { + background-color: #005CAF; + } + + .xl\:hover\:bg-indigo:hover { + background-color: #005CAF; + } + + .xl\:hover\:bg-indigo-light:hover { + background-color: #7886d7; + } + + .xl\:hover\:bg-indigo-lighter:hover { + background-color: #A5DEE4; + } + + .xl\:hover\:bg-indigo-lightest:hover { + background-color: #e6e8ff; + } + + .xl\:focus\:bg-transparent:focus { + background-color: transparent; + } + + .xl\:focus\:bg-black:focus { + background-color: #22292f; + } + + .xl\:focus\:bg-grey-darkest:focus { + background-color: #3d4852; + } + + .xl\:focus\:bg-grey-darker:focus { + background-color: #606f7b; + } + + .xl\:focus\:bg-grey-dark:focus { + background-color: #0B346E; + } + + .xl\:focus\:bg-grey:focus { + background-color: #b8c2cc; + } + + .xl\:focus\:bg-grey-light:focus { + background-color: #dae1e7; + } + + .xl\:focus\:bg-grey-lighter:focus { + background-color: #f1f5f8; + } + + .xl\:focus\:bg-grey-lightest:focus { + background-color: #f8fafc; + } + + .xl\:focus\:bg-white:focus { + background-color: #fff; + } + + .xl\:focus\:bg-indigo-darkest:focus { + background-color: #191e38; + } + + .xl\:focus\:bg-indigo-darker:focus { + background-color: #2EA9DF; + } + + .xl\:focus\:bg-indigo-dark:focus { + background-color: #005CAF; + } + + .xl\:focus\:bg-indigo:focus { + background-color: #005CAF; + } + + .xl\:focus\:bg-indigo-light:focus { + background-color: #7886d7; + } + + .xl\:focus\:bg-indigo-lighter:focus { + background-color: #A5DEE4; + } + + .xl\:focus\:bg-indigo-lightest:focus { + background-color: #e6e8ff; + } + + .xl\:bg-bottom { + background-position: bottom; + } + + .xl\:bg-center { + background-position: center; + } + + .xl\:bg-left { + background-position: left; + } + + .xl\:bg-left-bottom { + background-position: left bottom; + } + + .xl\:bg-left-top { + background-position: left top; + } + + .xl\:bg-right { + background-position: right; + } + + .xl\:bg-right-bottom { + background-position: right bottom; + } + + .xl\:bg-right-top { + background-position: right top; + } + + .xl\:bg-top { + background-position: top; + } + + .xl\:bg-repeat { + background-repeat: repeat; + } + + .xl\:bg-no-repeat { + background-repeat: no-repeat; + } + + .xl\:bg-repeat-x { + background-repeat: repeat-x; + } + + .xl\:bg-repeat-y { + background-repeat: repeat-y; + } + + .xl\:bg-auto { + background-size: auto; + } + + .xl\:bg-cover { + background-size: cover; + } + + .xl\:bg-contain { + background-size: contain; + } + + .xl\:border-transparent { + border-color: transparent; + } + + .xl\:border-black { + border-color: #22292f; + } + + .xl\:border-grey-darkest { + border-color: #3d4852; + } + + .xl\:border-grey-darker { + border-color: #606f7b; + } + + .xl\:border-grey-dark { + border-color: #0B346E; + } + + .xl\:border-grey { + border-color: #b8c2cc; + } + + .xl\:border-grey-light { + border-color: #dae1e7; + } + + .xl\:border-grey-lighter { + border-color: #f1f5f8; + } + + .xl\:border-grey-lightest { + border-color: #f8fafc; + } + + .xl\:border-white { + border-color: #fff; + } + + .xl\:border-indigo-darkest { + border-color: #191e38; + } + + .xl\:border-indigo-darker { + border-color: #2EA9DF; + } + + .xl\:border-indigo-dark { + border-color: #005CAF; + } + + .xl\:border-indigo { + border-color: #005CAF; + } + + .xl\:border-indigo-light { + border-color: #7886d7; + } + + .xl\:border-indigo-lighter { + border-color: #A5DEE4; + } + + .xl\:border-indigo-lightest { + border-color: #e6e8ff; + } + + .xl\:hover\:border-transparent:hover { + border-color: transparent; + } + + .xl\:hover\:border-black:hover { + border-color: #22292f; + } + + .xl\:hover\:border-grey-darkest:hover { + border-color: #3d4852; + } + + .xl\:hover\:border-grey-darker:hover { + border-color: #606f7b; + } + + .xl\:hover\:border-grey-dark:hover { + border-color: #0B346E; + } + + .xl\:hover\:border-grey:hover { + border-color: #b8c2cc; + } + + .xl\:hover\:border-grey-light:hover { + border-color: #dae1e7; + } + + .xl\:hover\:border-grey-lighter:hover { + border-color: #f1f5f8; + } + + .xl\:hover\:border-grey-lightest:hover { + border-color: #f8fafc; + } + + .xl\:hover\:border-white:hover { + border-color: #fff; + } + + .xl\:hover\:border-indigo-darkest:hover { + border-color: #191e38; + } + + .xl\:hover\:border-indigo-darker:hover { + border-color: #2EA9DF; + } + + .xl\:hover\:border-indigo-dark:hover { + border-color: #005CAF; + } + + .xl\:hover\:border-indigo:hover { + border-color: #005CAF; + } + + .xl\:hover\:border-indigo-light:hover { + border-color: #7886d7; + } + + .xl\:hover\:border-indigo-lighter:hover { + border-color: #A5DEE4; + } + + .xl\:hover\:border-indigo-lightest:hover { + border-color: #e6e8ff; + } + + .xl\:focus\:border-transparent:focus { + border-color: transparent; + } + + .xl\:focus\:border-black:focus { + border-color: #22292f; + } + + .xl\:focus\:border-grey-darkest:focus { + border-color: #3d4852; + } + + .xl\:focus\:border-grey-darker:focus { + border-color: #606f7b; + } + + .xl\:focus\:border-grey-dark:focus { + border-color: #0B346E; + } + + .xl\:focus\:border-grey:focus { + border-color: #b8c2cc; + } + + .xl\:focus\:border-grey-light:focus { + border-color: #dae1e7; + } + + .xl\:focus\:border-grey-lighter:focus { + border-color: #f1f5f8; + } + + .xl\:focus\:border-grey-lightest:focus { + border-color: #f8fafc; + } + + .xl\:focus\:border-white:focus { + border-color: #fff; + } + + .xl\:focus\:border-indigo-darkest:focus { + border-color: #191e38; + } + + .xl\:focus\:border-indigo-darker:focus { + border-color: #2EA9DF; + } + + .xl\:focus\:border-indigo-dark:focus { + border-color: #005CAF; + } + + .xl\:focus\:border-indigo:focus { + border-color: #005CAF; + } + + .xl\:focus\:border-indigo-light:focus { + border-color: #7886d7; + } + + .xl\:focus\:border-indigo-lighter:focus { + border-color: #A5DEE4; + } + + .xl\:focus\:border-indigo-lightest:focus { + border-color: #e6e8ff; + } + + .xl\:rounded-none { + border-radius: 0; + } + + .xl\:rounded-sm { + border-radius: .125rem; + } + + .xl\:rounded { + border-radius: .25rem; + } + + .xl\:rounded-lg { + border-radius: .5rem; + } + + .xl\:rounded-full { + border-radius: 9999px; + } + + .xl\:rounded-t-none { + border-top-left-radius: 0; + border-top-right-radius: 0; + } + + .xl\:rounded-r-none { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .xl\:rounded-b-none { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + .xl\:rounded-l-none { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .xl\:rounded-t-sm { + border-top-left-radius: .125rem; + border-top-right-radius: .125rem; + } + + .xl\:rounded-r-sm { + border-top-right-radius: .125rem; + border-bottom-right-radius: .125rem; + } + + .xl\:rounded-b-sm { + border-bottom-right-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .xl\:rounded-l-sm { + border-top-left-radius: .125rem; + border-bottom-left-radius: .125rem; + } + + .xl\:rounded-t { + border-top-left-radius: .25rem; + border-top-right-radius: .25rem; + } + + .xl\:rounded-r { + border-top-right-radius: .25rem; + border-bottom-right-radius: .25rem; + } + + .xl\:rounded-b { + border-bottom-right-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .xl\:rounded-l { + border-top-left-radius: .25rem; + border-bottom-left-radius: .25rem; + } + + .xl\:rounded-t-lg { + border-top-left-radius: .5rem; + border-top-right-radius: .5rem; + } + + .xl\:rounded-r-lg { + border-top-right-radius: .5rem; + border-bottom-right-radius: .5rem; + } + + .xl\:rounded-b-lg { + border-bottom-right-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .xl\:rounded-l-lg { + border-top-left-radius: .5rem; + border-bottom-left-radius: .5rem; + } + + .xl\:rounded-t-full { + border-top-left-radius: 9999px; + border-top-right-radius: 9999px; + } + + .xl\:rounded-r-full { + border-top-right-radius: 9999px; + border-bottom-right-radius: 9999px; + } + + .xl\:rounded-b-full { + border-bottom-right-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .xl\:rounded-l-full { + border-top-left-radius: 9999px; + border-bottom-left-radius: 9999px; + } + + .xl\:rounded-tl-none { + border-top-left-radius: 0; + } + + .xl\:rounded-tr-none { + border-top-right-radius: 0; + } + + .xl\:rounded-br-none { + border-bottom-right-radius: 0; + } + + .xl\:rounded-bl-none { + border-bottom-left-radius: 0; + } + + .xl\:rounded-tl-sm { + border-top-left-radius: .125rem; + } + + .xl\:rounded-tr-sm { + border-top-right-radius: .125rem; + } + + .xl\:rounded-br-sm { + border-bottom-right-radius: .125rem; + } + + .xl\:rounded-bl-sm { + border-bottom-left-radius: .125rem; + } + + .xl\:rounded-tl { + border-top-left-radius: .25rem; + } + + .xl\:rounded-tr { + border-top-right-radius: .25rem; + } + + .xl\:rounded-br { + border-bottom-right-radius: .25rem; + } + + .xl\:rounded-bl { + border-bottom-left-radius: .25rem; + } + + .xl\:rounded-tl-lg { + border-top-left-radius: .5rem; + } + + .xl\:rounded-tr-lg { + border-top-right-radius: .5rem; + } + + .xl\:rounded-br-lg { + border-bottom-right-radius: .5rem; + } + + .xl\:rounded-bl-lg { + border-bottom-left-radius: .5rem; + } + + .xl\:rounded-tl-full { + border-top-left-radius: 9999px; + } + + .xl\:rounded-tr-full { + border-top-right-radius: 9999px; + } + + .xl\:rounded-br-full { + border-bottom-right-radius: 9999px; + } + + .xl\:rounded-bl-full { + border-bottom-left-radius: 9999px; + } + + .xl\:border-solid { + border-style: solid; + } + + .xl\:border-dashed { + border-style: dashed; + } + + .xl\:border-dotted { + border-style: dotted; + } + + .xl\:border-none { + border-style: none; + } + + .xl\:border-0 { + border-width: 0; + } + + .xl\:border-2 { + border-width: 2px; + } + + .xl\:border-4 { + border-width: 4px; + } + + .xl\:border-8 { + border-width: 8px; + } + + .xl\:border { + border-width: 1px; + } + + .xl\:border-t-0 { + border-top-width: 0; + } + + .xl\:border-r-0 { + border-right-width: 0; + } + + .xl\:border-b-0 { + border-bottom-width: 0; + } + + .xl\:border-l-0 { + border-left-width: 0; + } + + .xl\:border-t-2 { + border-top-width: 2px; + } + + .xl\:border-r-2 { + border-right-width: 2px; + } + + .xl\:border-b-2 { + border-bottom-width: 2px; + } + + .xl\:border-l-2 { + border-left-width: 2px; + } + + .xl\:border-t-4 { + border-top-width: 4px; + } + + .xl\:border-r-4 { + border-right-width: 4px; + } + + .xl\:border-b-4 { + border-bottom-width: 4px; + } + + .xl\:border-l-4 { + border-left-width: 4px; + } + + .xl\:border-t-8 { + border-top-width: 8px; + } + + .xl\:border-r-8 { + border-right-width: 8px; + } + + .xl\:border-b-8 { + border-bottom-width: 8px; + } + + .xl\:border-l-8 { + border-left-width: 8px; + } + + .xl\:border-t { + border-top-width: 1px; + } + + .xl\:border-r { + border-right-width: 1px; + } + + .xl\:border-b { + border-bottom-width: 1px; + } + + .xl\:border-l { + border-left-width: 1px; + } + + .xl\:hover\:border-0:hover { + border-width: 0; + } + + .xl\:hover\:border-2:hover { + border-width: 2px; + } + + .xl\:hover\:border-4:hover { + border-width: 4px; + } + + .xl\:hover\:border-8:hover { + border-width: 8px; + } + + .xl\:hover\:border:hover { + border-width: 1px; + } + + .xl\:hover\:border-t-0:hover { + border-top-width: 0; + } + + .xl\:hover\:border-r-0:hover { + border-right-width: 0; + } + + .xl\:hover\:border-b-0:hover { + border-bottom-width: 0; + } + + .xl\:hover\:border-l-0:hover { + border-left-width: 0; + } + + .xl\:hover\:border-t-2:hover { + border-top-width: 2px; + } + + .xl\:hover\:border-r-2:hover { + border-right-width: 2px; + } + + .xl\:hover\:border-b-2:hover { + border-bottom-width: 2px; + } + + .xl\:hover\:border-l-2:hover { + border-left-width: 2px; + } + + .xl\:hover\:border-t-4:hover { + border-top-width: 4px; + } + + .xl\:hover\:border-r-4:hover { + border-right-width: 4px; + } + + .xl\:hover\:border-b-4:hover { + border-bottom-width: 4px; + } + + .xl\:hover\:border-l-4:hover { + border-left-width: 4px; + } + + .xl\:hover\:border-t-8:hover { + border-top-width: 8px; + } + + .xl\:hover\:border-r-8:hover { + border-right-width: 8px; + } + + .xl\:hover\:border-b-8:hover { + border-bottom-width: 8px; + } + + .xl\:hover\:border-l-8:hover { + border-left-width: 8px; + } + + .xl\:hover\:border-t:hover { + border-top-width: 1px; + } + + .xl\:hover\:border-r:hover { + border-right-width: 1px; + } + + .xl\:hover\:border-b:hover { + border-bottom-width: 1px; + } + + .xl\:hover\:border-l:hover { + border-left-width: 1px; + } + + .xl\:cursor-auto { + cursor: auto; + } + + .xl\:cursor-default { + cursor: default; + } + + .xl\:cursor-pointer { + cursor: pointer; + } + + .xl\:cursor-wait { + cursor: wait; + } + + .xl\:cursor-move { + cursor: move; + } + + .xl\:cursor-not-allowed { + cursor: not-allowed; + } + + .xl\:hover\:cursor-auto:hover { + cursor: auto; + } + + .xl\:hover\:cursor-default:hover { + cursor: default; + } + + .xl\:hover\:cursor-pointer:hover { + cursor: pointer; + } + + .xl\:hover\:cursor-wait:hover { + cursor: wait; + } + + .xl\:hover\:cursor-move:hover { + cursor: move; + } + + .xl\:hover\:cursor-not-allowed:hover { + cursor: not-allowed; + } + + .xl\:block { + display: block; + } + + .xl\:inline-block { + display: inline-block; + } + + .xl\:inline { + display: inline; + } + + .xl\:table { + display: table; + } + + .xl\:table-row { + display: table-row; + } + + .xl\:table-cell { + display: table-cell; + } + + .xl\:hidden { + display: none; + } + + .xl\:flex { + display: flex; + } + + .xl\:inline-flex { + display: inline-flex; + } + + .xl\:flex-row { + flex-direction: row; + } + + .xl\:flex-row-reverse { + flex-direction: row-reverse; + } + + .xl\:flex-col { + flex-direction: column; + } + + .xl\:flex-col-reverse { + flex-direction: column-reverse; + } + + .xl\:flex-wrap { + flex-wrap: wrap; + } + + .xl\:flex-wrap-reverse { + flex-wrap: wrap-reverse; + } + + .xl\:flex-no-wrap { + flex-wrap: nowrap; + } + + .xl\:items-start { + align-items: flex-start; + } + + .xl\:items-end { + align-items: flex-end; + } + + .xl\:items-center { + align-items: center; + } + + .xl\:items-baseline { + align-items: baseline; + } + + .xl\:items-stretch { + align-items: stretch; + } + + .xl\:self-auto { + align-self: auto; + } + + .xl\:self-start { + align-self: flex-start; + } + + .xl\:self-end { + align-self: flex-end; + } + + .xl\:self-center { + align-self: center; + } + + .xl\:self-stretch { + align-self: stretch; + } + + .xl\:justify-start { + justify-content: flex-start; + } + + .xl\:justify-end { + justify-content: flex-end; + } + + .xl\:justify-center { + justify-content: center; + } + + .xl\:justify-between { + justify-content: space-between; + } + + .xl\:justify-around { + justify-content: space-around; + } + + .xl\:content-center { + align-content: center; + } + + .xl\:content-start { + align-content: flex-start; + } + + .xl\:content-end { + align-content: flex-end; + } + + .xl\:content-between { + align-content: space-between; + } + + .xl\:content-around { + align-content: space-around; + } + + .xl\:flex-1 { + flex: 1; + } + + .xl\:flex-auto { + flex: auto; + } + + .xl\:flex-initial { + flex: initial; + } + + .xl\:flex-none { + flex: none; + } + + .xl\:flex-grow { + flex-grow: 1; + } + + .xl\:flex-shrink { + flex-shrink: 1; + } + + .xl\:flex-no-grow { + flex-grow: 0; + } + + .xl\:flex-no-shrink { + flex-shrink: 0; + } + + .xl\:float-right { + float: right; + } + + .xl\:float-left { + float: left; + } + + .xl\:float-none { + float: none; + } + + .xl\:clearfix:after { + content: ""; + display: table; + clear: both; + } + + .xl\:font-sans { + font-family: Roboto, sans-serif; + } + + .xl\:font-serif { + font-family: Constantia, Lucida Bright, Lucidabright, Lucida Serif, Lucida, DejaVu Serif, Bitstream Vera Serif, Liberation Serif, Georgia, serif; + } + + .xl\:font-mono { + font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; + } + + .xl\:font-hairline { + font-weight: 100; + } + + .xl\:font-thin { + font-weight: 200; + } + + .xl\:font-light { + font-weight: 300; + } + + .xl\:font-normal { + font-weight: 400; + } + + .xl\:font-medium { + font-weight: 500; + } + + .xl\:font-semibold { + font-weight: 600; + } + + .xl\:font-bold { + font-weight: 700; + } + + .xl\:font-extrabold { + font-weight: 800; + } + + .xl\:font-black { + font-weight: 900; + } + + .xl\:hover\:font-hairline:hover { + font-weight: 100; + } + + .xl\:hover\:font-thin:hover { + font-weight: 200; + } + + .xl\:hover\:font-light:hover { + font-weight: 300; + } + + .xl\:hover\:font-normal:hover { + font-weight: 400; + } + + .xl\:hover\:font-medium:hover { + font-weight: 500; + } + + .xl\:hover\:font-semibold:hover { + font-weight: 600; + } + + .xl\:hover\:font-bold:hover { + font-weight: 700; + } + + .xl\:hover\:font-extrabold:hover { + font-weight: 800; + } + + .xl\:hover\:font-black:hover { + font-weight: 900; + } + + .xl\:focus\:font-hairline:focus { + font-weight: 100; + } + + .xl\:focus\:font-thin:focus { + font-weight: 200; + } + + .xl\:focus\:font-light:focus { + font-weight: 300; + } + + .xl\:focus\:font-normal:focus { + font-weight: 400; + } + + .xl\:focus\:font-medium:focus { + font-weight: 500; + } + + .xl\:focus\:font-semibold:focus { + font-weight: 600; + } + + .xl\:focus\:font-bold:focus { + font-weight: 700; + } + + .xl\:focus\:font-extrabold:focus { + font-weight: 800; + } + + .xl\:focus\:font-black:focus { + font-weight: 900; + } + + .xl\:h-1 { + height: .25rem; + } + + .xl\:h-2 { + height: .5rem; + } + + .xl\:h-3 { + height: .75rem; + } + + .xl\:h-4 { + height: 1rem; + } + + .xl\:h-5 { + height: 1.25rem; + } + + .xl\:h-6 { + height: 1.5rem; + } + + .xl\:h-8 { + height: 2rem; + } + + .xl\:h-10 { + height: 2.5rem; + } + + .xl\:h-12 { + height: 3rem; + } + + .xl\:h-16 { + height: 4rem; + } + + .xl\:h-24 { + height: 6rem; + } + + .xl\:h-32 { + height: 8rem; + } + + .xl\:h-48 { + height: 12rem; + } + + .xl\:h-64 { + height: 16rem; + } + + .xl\:h-auto { + height: auto; + } + + .xl\:h-px { + height: 1px; + } + + .xl\:h-full { + height: 100%; + } + + .xl\:h-screen { + height: 100vh; + } + + .xl\:leading-none { + line-height: 1; + } + + .xl\:leading-tight { + line-height: 1.25; + } + + .xl\:leading-normal { + line-height: 1.5; + } + + .xl\:leading-loose { + line-height: 2; + } + + .xl\:m-0 { + margin: 0; + } + + .xl\:m-1 { + margin: .25rem; + } + + .xl\:m-2 { + margin: .5rem; + } + + .xl\:m-3 { + margin: .75rem; + } + + .xl\:m-4 { + margin: 1rem; + } + + .xl\:m-5 { + margin: 1.25rem; + } + + .xl\:m-6 { + margin: 1.5rem; + } + + .xl\:m-8 { + margin: 2rem; + } + + .xl\:m-10 { + margin: 2.5rem; + } + + .xl\:m-12 { + margin: 3rem; + } + + .xl\:m-16 { + margin: 4rem; + } + + .xl\:m-20 { + margin: 5rem; + } + + .xl\:m-24 { + margin: 6rem; + } + + .xl\:m-32 { + margin: 8rem; + } + + .xl\:m-auto { + margin: auto; + } + + .xl\:m-px { + margin: 1px; + } + + .xl\:my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .xl\:mx-0 { + margin-left: 0; + margin-right: 0; + } + + .xl\:my-1 { + margin-top: .25rem; + margin-bottom: .25rem; + } + + .xl\:mx-1 { + margin-left: .25rem; + margin-right: .25rem; + } + + .xl\:my-2 { + margin-top: .5rem; + margin-bottom: .5rem; + } + + .xl\:mx-2 { + margin-left: .5rem; + margin-right: .5rem; + } + + .xl\:my-3 { + margin-top: .75rem; + margin-bottom: .75rem; + } + + .xl\:mx-3 { + margin-left: .75rem; + margin-right: .75rem; + } + + .xl\:my-4 { + margin-top: 1rem; + margin-bottom: 1rem; + } + + .xl\:mx-4 { + margin-left: 1rem; + margin-right: 1rem; + } + + .xl\:my-5 { + margin-top: 1.25rem; + margin-bottom: 1.25rem; + } + + .xl\:mx-5 { + margin-left: 1.25rem; + margin-right: 1.25rem; + } + + .xl\:my-6 { + margin-top: 1.5rem; + margin-bottom: 1.5rem; + } + + .xl\:mx-6 { + margin-left: 1.5rem; + margin-right: 1.5rem; + } + + .xl\:my-8 { + margin-top: 2rem; + margin-bottom: 2rem; + } + + .xl\:mx-8 { + margin-left: 2rem; + margin-right: 2rem; + } + + .xl\:my-10 { + margin-top: 2.5rem; + margin-bottom: 2.5rem; + } + + .xl\:mx-10 { + margin-left: 2.5rem; + margin-right: 2.5rem; + } + + .xl\:my-12 { + margin-top: 3rem; + margin-bottom: 3rem; + } + + .xl\:mx-12 { + margin-left: 3rem; + margin-right: 3rem; + } + + .xl\:my-16 { + margin-top: 4rem; + margin-bottom: 4rem; + } + + .xl\:mx-16 { + margin-left: 4rem; + margin-right: 4rem; + } + + .xl\:my-20 { + margin-top: 5rem; + margin-bottom: 5rem; + } + + .xl\:mx-20 { + margin-left: 5rem; + margin-right: 5rem; + } + + .xl\:my-24 { + margin-top: 6rem; + margin-bottom: 6rem; + } + + .xl\:mx-24 { + margin-left: 6rem; + margin-right: 6rem; + } + + .xl\:my-32 { + margin-top: 8rem; + margin-bottom: 8rem; + } + + .xl\:mx-32 { + margin-left: 8rem; + margin-right: 8rem; + } + + .xl\:my-auto { + margin-top: auto; + margin-bottom: auto; + } + + .xl\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .xl\:my-px { + margin-top: 1px; + margin-bottom: 1px; + } + + .xl\:mx-px { + margin-left: 1px; + margin-right: 1px; + } + + .xl\:mt-0 { + margin-top: 0; + } + + .xl\:mr-0 { + margin-right: 0; + } + + .xl\:mb-0 { + margin-bottom: 0; + } + + .xl\:ml-0 { + margin-left: 0; + } + + .xl\:mt-1 { + margin-top: .25rem; + } + + .xl\:mr-1 { + margin-right: .25rem; + } + + .xl\:mb-1 { + margin-bottom: .25rem; + } + + .xl\:ml-1 { + margin-left: .25rem; + } + + .xl\:mt-2 { + margin-top: .5rem; + } + + .xl\:mr-2 { + margin-right: .5rem; + } + + .xl\:mb-2 { + margin-bottom: .5rem; + } + + .xl\:ml-2 { + margin-left: .5rem; + } + + .xl\:mt-3 { + margin-top: .75rem; + } + + .xl\:mr-3 { + margin-right: .75rem; + } + + .xl\:mb-3 { + margin-bottom: .75rem; + } + + .xl\:ml-3 { + margin-left: .75rem; + } + + .xl\:mt-4 { + margin-top: 1rem; + } + + .xl\:mr-4 { + margin-right: 1rem; + } + + .xl\:mb-4 { + margin-bottom: 1rem; + } + + .xl\:ml-4 { + margin-left: 1rem; + } + + .xl\:mt-5 { + margin-top: 1.25rem; + } + + .xl\:mr-5 { + margin-right: 1.25rem; + } + + .xl\:mb-5 { + margin-bottom: 1.25rem; + } + + .xl\:ml-5 { + margin-left: 1.25rem; + } + + .xl\:mt-6 { + margin-top: 1.5rem; + } + + .xl\:mr-6 { + margin-right: 1.5rem; + } + + .xl\:mb-6 { + margin-bottom: 1.5rem; + } + + .xl\:ml-6 { + margin-left: 1.5rem; + } + + .xl\:mt-8 { + margin-top: 2rem; + } + + .xl\:mr-8 { + margin-right: 2rem; + } + + .xl\:mb-8 { + margin-bottom: 2rem; + } + + .xl\:ml-8 { + margin-left: 2rem; + } + + .xl\:mt-10 { + margin-top: 2.5rem; + } + + .xl\:mr-10 { + margin-right: 2.5rem; + } + + .xl\:mb-10 { + margin-bottom: 2.5rem; + } + + .xl\:ml-10 { + margin-left: 2.5rem; + } + + .xl\:mt-12 { + margin-top: 3rem; + } + + .xl\:mr-12 { + margin-right: 3rem; + } + + .xl\:mb-12 { + margin-bottom: 3rem; + } + + .xl\:ml-12 { + margin-left: 3rem; + } + + .xl\:mt-16 { + margin-top: 4rem; + } + + .xl\:mr-16 { + margin-right: 4rem; + } + + .xl\:mb-16 { + margin-bottom: 4rem; + } + + .xl\:ml-16 { + margin-left: 4rem; + } + + .xl\:mt-20 { + margin-top: 5rem; + } + + .xl\:mr-20 { + margin-right: 5rem; + } + + .xl\:mb-20 { + margin-bottom: 5rem; + } + + .xl\:ml-20 { + margin-left: 5rem; + } + + .xl\:mt-24 { + margin-top: 6rem; + } + + .xl\:mr-24 { + margin-right: 6rem; + } + + .xl\:mb-24 { + margin-bottom: 6rem; + } + + .xl\:ml-24 { + margin-left: 6rem; + } + + .xl\:mt-32 { + margin-top: 8rem; + } + + .xl\:mr-32 { + margin-right: 8rem; + } + + .xl\:mb-32 { + margin-bottom: 8rem; + } + + .xl\:ml-32 { + margin-left: 8rem; + } + + .xl\:mt-auto { + margin-top: auto; + } + + .xl\:mr-auto { + margin-right: auto; + } + + .xl\:mb-auto { + margin-bottom: auto; + } + + .xl\:ml-auto { + margin-left: auto; + } + + .xl\:mt-px { + margin-top: 1px; + } + + .xl\:mr-px { + margin-right: 1px; + } + + .xl\:mb-px { + margin-bottom: 1px; + } + + .xl\:ml-px { + margin-left: 1px; + } + + .xl\:max-h-full { + max-height: 100%; + } + + .xl\:max-h-screen { + max-height: 100vh; + } + + .xl\:max-w-xs { + max-width: 20rem; + } + + .xl\:max-w-sm { + max-width: 30rem; + } + + .xl\:max-w-md { + max-width: 40rem; + } + + .xl\:max-w-lg { + max-width: 50rem; + } + + .xl\:max-w-xl { + max-width: 60rem; + } + + .xl\:max-w-2xl { + max-width: 70rem; + } + + .xl\:max-w-3xl { + max-width: 80rem; + } + + .xl\:max-w-4xl { + max-width: 90rem; + } + + .xl\:max-w-5xl { + max-width: 100rem; + } + + .xl\:max-w-full { + max-width: 100%; + } + + .xl\:min-h-0 { + min-height: 0; + } + + .xl\:min-h-full { + min-height: 100%; + } + + .xl\:min-h-screen { + min-height: 100vh; + } + + .xl\:min-w-0 { + min-width: 0; + } + + .xl\:min-w-full { + min-width: 100%; + } + + .xl\:-m-0 { + margin: 0; + } + + .xl\:-m-1 { + margin: -0.25rem; + } + + .xl\:-m-2 { + margin: -0.5rem; + } + + .xl\:-m-3 { + margin: -0.75rem; + } + + .xl\:-m-4 { + margin: -1rem; + } + + .xl\:-m-5 { + margin: -1.25rem; + } + + .xl\:-m-6 { + margin: -1.5rem; + } + + .xl\:-m-8 { + margin: -2rem; + } + + .xl\:-m-10 { + margin: -2.5rem; + } + + .xl\:-m-12 { + margin: -3rem; + } + + .xl\:-m-16 { + margin: -4rem; + } + + .xl\:-m-20 { + margin: -5rem; + } + + .xl\:-m-24 { + margin: -6rem; + } + + .xl\:-m-32 { + margin: -8rem; + } + + .xl\:-m-px { + margin: -1px; + } + + .xl\:-my-0 { + margin-top: 0; + margin-bottom: 0; + } + + .xl\:-mx-0 { + margin-left: 0; + margin-right: 0; + } + + .xl\:-my-1 { + margin-top: -0.25rem; + margin-bottom: -0.25rem; + } + + .xl\:-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; + } + + .xl\:-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; + } + + .xl\:-mx-2 { + margin-left: -0.5rem; + margin-right: -0.5rem; + } + + .xl\:-my-3 { + margin-top: -0.75rem; + margin-bottom: -0.75rem; + } + + .xl\:-mx-3 { + margin-left: -0.75rem; + margin-right: -0.75rem; + } + + .xl\:-my-4 { + margin-top: -1rem; + margin-bottom: -1rem; + } + + .xl\:-mx-4 { + margin-left: -1rem; + margin-right: -1rem; + } + + .xl\:-my-5 { + margin-top: -1.25rem; + margin-bottom: -1.25rem; + } + + .xl\:-mx-5 { + margin-left: -1.25rem; + margin-right: -1.25rem; + } + + .xl\:-my-6 { + margin-top: -1.5rem; + margin-bottom: -1.5rem; + } + + .xl\:-mx-6 { + margin-left: -1.5rem; + margin-right: -1.5rem; + } + + .xl\:-my-8 { + margin-top: -2rem; + margin-bottom: -2rem; + } + + .xl\:-mx-8 { + margin-left: -2rem; + margin-right: -2rem; + } + + .xl\:-my-10 { + margin-top: -2.5rem; + margin-bottom: -2.5rem; + } + + .xl\:-mx-10 { + margin-left: -2.5rem; + margin-right: -2.5rem; + } + + .xl\:-my-12 { + margin-top: -3rem; + margin-bottom: -3rem; + } + + .xl\:-mx-12 { + margin-left: -3rem; + margin-right: -3rem; + } + + .xl\:-my-16 { + margin-top: -4rem; + margin-bottom: -4rem; + } + + .xl\:-mx-16 { + margin-left: -4rem; + margin-right: -4rem; + } + + .xl\:-my-20 { + margin-top: -5rem; + margin-bottom: -5rem; + } + + .xl\:-mx-20 { + margin-left: -5rem; + margin-right: -5rem; + } + + .xl\:-my-24 { + margin-top: -6rem; + margin-bottom: -6rem; + } + + .xl\:-mx-24 { + margin-left: -6rem; + margin-right: -6rem; + } + + .xl\:-my-32 { + margin-top: -8rem; + margin-bottom: -8rem; + } + + .xl\:-mx-32 { + margin-left: -8rem; + margin-right: -8rem; + } + + .xl\:-my-px { + margin-top: -1px; + margin-bottom: -1px; + } + + .xl\:-mx-px { + margin-left: -1px; + margin-right: -1px; + } + + .xl\:-mt-0 { + margin-top: 0; + } + + .xl\:-mr-0 { + margin-right: 0; + } + + .xl\:-mb-0 { + margin-bottom: 0; + } + + .xl\:-ml-0 { + margin-left: 0; + } + + .xl\:-mt-1 { + margin-top: -0.25rem; + } + + .xl\:-mr-1 { + margin-right: -0.25rem; + } + + .xl\:-mb-1 { + margin-bottom: -0.25rem; + } + + .xl\:-ml-1 { + margin-left: -0.25rem; + } + + .xl\:-mt-2 { + margin-top: -0.5rem; + } + + .xl\:-mr-2 { + margin-right: -0.5rem; + } + + .xl\:-mb-2 { + margin-bottom: -0.5rem; + } + + .xl\:-ml-2 { + margin-left: -0.5rem; + } + + .xl\:-mt-3 { + margin-top: -0.75rem; + } + + .xl\:-mr-3 { + margin-right: -0.75rem; + } + + .xl\:-mb-3 { + margin-bottom: -0.75rem; + } + + .xl\:-ml-3 { + margin-left: -0.75rem; + } + + .xl\:-mt-4 { + margin-top: -1rem; + } + + .xl\:-mr-4 { + margin-right: -1rem; + } + + .xl\:-mb-4 { + margin-bottom: -1rem; + } + + .xl\:-ml-4 { + margin-left: -1rem; + } + + .xl\:-mt-5 { + margin-top: -1.25rem; + } + + .xl\:-mr-5 { + margin-right: -1.25rem; + } + + .xl\:-mb-5 { + margin-bottom: -1.25rem; + } + + .xl\:-ml-5 { + margin-left: -1.25rem; + } + + .xl\:-mt-6 { + margin-top: -1.5rem; + } + + .xl\:-mr-6 { + margin-right: -1.5rem; + } + + .xl\:-mb-6 { + margin-bottom: -1.5rem; + } + + .xl\:-ml-6 { + margin-left: -1.5rem; + } + + .xl\:-mt-8 { + margin-top: -2rem; + } + + .xl\:-mr-8 { + margin-right: -2rem; + } + + .xl\:-mb-8 { + margin-bottom: -2rem; + } + + .xl\:-ml-8 { + margin-left: -2rem; + } + + .xl\:-mt-10 { + margin-top: -2.5rem; + } + + .xl\:-mr-10 { + margin-right: -2.5rem; + } + + .xl\:-mb-10 { + margin-bottom: -2.5rem; + } + + .xl\:-ml-10 { + margin-left: -2.5rem; + } + + .xl\:-mt-12 { + margin-top: -3rem; + } + + .xl\:-mr-12 { + margin-right: -3rem; + } + + .xl\:-mb-12 { + margin-bottom: -3rem; + } + + .xl\:-ml-12 { + margin-left: -3rem; + } + + .xl\:-mt-16 { + margin-top: -4rem; + } + + .xl\:-mr-16 { + margin-right: -4rem; + } + + .xl\:-mb-16 { + margin-bottom: -4rem; + } + + .xl\:-ml-16 { + margin-left: -4rem; + } + + .xl\:-mt-20 { + margin-top: -5rem; + } + + .xl\:-mr-20 { + margin-right: -5rem; + } + + .xl\:-mb-20 { + margin-bottom: -5rem; + } + + .xl\:-ml-20 { + margin-left: -5rem; + } + + .xl\:-mt-24 { + margin-top: -6rem; + } + + .xl\:-mr-24 { + margin-right: -6rem; + } + + .xl\:-mb-24 { + margin-bottom: -6rem; + } + + .xl\:-ml-24 { + margin-left: -6rem; + } + + .xl\:-mt-32 { + margin-top: -8rem; + } + + .xl\:-mr-32 { + margin-right: -8rem; + } + + .xl\:-mb-32 { + margin-bottom: -8rem; + } + + .xl\:-ml-32 { + margin-left: -8rem; + } + + .xl\:-mt-px { + margin-top: -1px; + } + + .xl\:-mr-px { + margin-right: -1px; + } + + .xl\:-mb-px { + margin-bottom: -1px; + } + + .xl\:-ml-px { + margin-left: -1px; + } + + .xl\:opacity-0 { + opacity: 0; + } + + .xl\:opacity-25 { + opacity: .25; + } + + .xl\:opacity-50 { + opacity: .5; + } + + .xl\:opacity-75 { + opacity: .75; + } + + .xl\:opacity-100 { + opacity: 1; + } + + .xl\:overflow-auto { + overflow: auto; + } + + .xl\:overflow-hidden { + overflow: hidden; + } + + .xl\:overflow-visible { + overflow: visible; + } + + .xl\:overflow-scroll { + overflow: scroll; + } + + .xl\:overflow-x-auto { + overflow-x: auto; + } + + .xl\:overflow-y-auto { + overflow-y: auto; + } + + .xl\:overflow-x-hidden { + overflow-x: hidden; + } + + .xl\:overflow-y-hidden { + overflow-y: hidden; + } + + .xl\:overflow-x-visible { + overflow-x: visible; + } + + .xl\:overflow-y-visible { + overflow-y: visible; + } + + .xl\:overflow-x-scroll { + overflow-x: scroll; + } + + .xl\:overflow-y-scroll { + overflow-y: scroll; + } + + .xl\:scrolling-touch { + -webkit-overflow-scrolling: touch; + } + + .xl\:scrolling-auto { + -webkit-overflow-scrolling: auto; + } + + .xl\:p-0 { + padding: 0; + } + + .xl\:p-1 { + padding: .25rem; + } + + .xl\:p-2 { + padding: .5rem; + } + + .xl\:p-3 { + padding: .75rem; + } + + .xl\:p-4 { + padding: 1rem; + } + + .xl\:p-5 { + padding: 1.25rem; + } + + .xl\:p-6 { + padding: 1.5rem; + } + + .xl\:p-8 { + padding: 2rem; + } + + .xl\:p-10 { + padding: 2.5rem; + } + + .xl\:p-12 { + padding: 3rem; + } + + .xl\:p-16 { + padding: 4rem; + } + + .xl\:p-20 { + padding: 5rem; + } + + .xl\:p-24 { + padding: 6rem; + } + + .xl\:p-32 { + padding: 8rem; + } + + .xl\:p-px { + padding: 1px; + } + + .xl\:py-0 { + padding-top: 0; + padding-bottom: 0; + } + + .xl\:px-0 { + padding-left: 0; + padding-right: 0; + } + + .xl\:py-1 { + padding-top: .25rem; + padding-bottom: .25rem; + } + + .xl\:px-1 { + padding-left: .25rem; + padding-right: .25rem; + } + + .xl\:py-2 { + padding-top: .5rem; + padding-bottom: .5rem; + } + + .xl\:px-2 { + padding-left: .5rem; + padding-right: .5rem; + } + + .xl\:py-3 { + padding-top: .75rem; + padding-bottom: .75rem; + } + + .xl\:px-3 { + padding-left: .75rem; + padding-right: .75rem; + } + + .xl\:py-4 { + padding-top: 1rem; + padding-bottom: 1rem; + } + + .xl\:px-4 { + padding-left: 1rem; + padding-right: 1rem; + } + + .xl\:py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; + } + + .xl\:px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; + } + + .xl\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .xl\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .xl\:py-8 { + padding-top: 2rem; + padding-bottom: 2rem; + } + + .xl\:px-8 { + padding-left: 2rem; + padding-right: 2rem; + } + + .xl\:py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; + } + + .xl\:px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; + } + + .xl\:py-12 { + padding-top: 3rem; + padding-bottom: 3rem; + } + + .xl\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .xl\:py-16 { + padding-top: 4rem; + padding-bottom: 4rem; + } + + .xl\:px-16 { + padding-left: 4rem; + padding-right: 4rem; + } + + .xl\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .xl\:px-20 { + padding-left: 5rem; + padding-right: 5rem; + } + + .xl\:py-24 { + padding-top: 6rem; + padding-bottom: 6rem; + } + + .xl\:px-24 { + padding-left: 6rem; + padding-right: 6rem; + } + + .xl\:py-32 { + padding-top: 8rem; + padding-bottom: 8rem; + } + + .xl\:px-32 { + padding-left: 8rem; + padding-right: 8rem; + } + + .xl\:py-px { + padding-top: 1px; + padding-bottom: 1px; + } + + .xl\:px-px { + padding-left: 1px; + padding-right: 1px; + } + + .xl\:pt-0 { + padding-top: 0; + } + + .xl\:pr-0 { + padding-right: 0; + } + + .xl\:pb-0 { + padding-bottom: 0; + } + + .xl\:pl-0 { + padding-left: 0; + } + + .xl\:pt-1 { + padding-top: .25rem; + } + + .xl\:pr-1 { + padding-right: .25rem; + } + + .xl\:pb-1 { + padding-bottom: .25rem; + } + + .xl\:pl-1 { + padding-left: .25rem; + } + + .xl\:pt-2 { + padding-top: .5rem; + } + + .xl\:pr-2 { + padding-right: .5rem; + } + + .xl\:pb-2 { + padding-bottom: .5rem; + } + + .xl\:pl-2 { + padding-left: .5rem; + } + + .xl\:pt-3 { + padding-top: .75rem; + } + + .xl\:pr-3 { + padding-right: .75rem; + } + + .xl\:pb-3 { + padding-bottom: .75rem; + } + + .xl\:pl-3 { + padding-left: .75rem; + } + + .xl\:pt-4 { + padding-top: 1rem; + } + + .xl\:pr-4 { + padding-right: 1rem; + } + + .xl\:pb-4 { + padding-bottom: 1rem; + } + + .xl\:pl-4 { + padding-left: 1rem; + } + + .xl\:pt-5 { + padding-top: 1.25rem; + } + + .xl\:pr-5 { + padding-right: 1.25rem; + } + + .xl\:pb-5 { + padding-bottom: 1.25rem; + } + + .xl\:pl-5 { + padding-left: 1.25rem; + } + + .xl\:pt-6 { + padding-top: 1.5rem; + } + + .xl\:pr-6 { + padding-right: 1.5rem; + } + + .xl\:pb-6 { + padding-bottom: 1.5rem; + } + + .xl\:pl-6 { + padding-left: 1.5rem; + } + + .xl\:pt-8 { + padding-top: 2rem; + } + + .xl\:pr-8 { + padding-right: 2rem; + } + + .xl\:pb-8 { + padding-bottom: 2rem; + } + + .xl\:pl-8 { + padding-left: 2rem; + } + + .xl\:pt-10 { + padding-top: 2.5rem; + } + + .xl\:pr-10 { + padding-right: 2.5rem; + } + + .xl\:pb-10 { + padding-bottom: 2.5rem; + } + + .xl\:pl-10 { + padding-left: 2.5rem; + } + + .xl\:pt-12 { + padding-top: 3rem; + } + + .xl\:pr-12 { + padding-right: 3rem; + } + + .xl\:pb-12 { + padding-bottom: 3rem; + } + + .xl\:pl-12 { + padding-left: 3rem; + } + + .xl\:pt-16 { + padding-top: 4rem; + } + + .xl\:pr-16 { + padding-right: 4rem; + } + + .xl\:pb-16 { + padding-bottom: 4rem; + } + + .xl\:pl-16 { + padding-left: 4rem; + } + + .xl\:pt-20 { + padding-top: 5rem; + } + + .xl\:pr-20 { + padding-right: 5rem; + } + + .xl\:pb-20 { + padding-bottom: 5rem; + } + + .xl\:pl-20 { + padding-left: 5rem; + } + + .xl\:pt-24 { + padding-top: 6rem; + } + + .xl\:pr-24 { + padding-right: 6rem; + } + + .xl\:pb-24 { + padding-bottom: 6rem; + } + + .xl\:pl-24 { + padding-left: 6rem; + } + + .xl\:pt-32 { + padding-top: 8rem; + } + + .xl\:pr-32 { + padding-right: 8rem; + } + + .xl\:pb-32 { + padding-bottom: 8rem; + } + + .xl\:pl-32 { + padding-left: 8rem; + } + + .xl\:pt-px { + padding-top: 1px; + } + + .xl\:pr-px { + padding-right: 1px; + } + + .xl\:pb-px { + padding-bottom: 1px; + } + + .xl\:pl-px { + padding-left: 1px; + } + + .xl\:pointer-events-none { + pointer-events: none; + } + + .xl\:pointer-events-auto { + pointer-events: auto; + } + + .xl\:static { + position: static; + } + + .xl\:fixed { + position: fixed; + } + + .xl\:absolute { + position: absolute; + } + + .xl\:relative { + position: relative; + } + + .xl\:sticky { + position: sticky; + } + + .xl\:pin-none { + top: auto; + right: auto; + bottom: auto; + left: auto; + } + + .xl\:pin { + top: 0; + right: 0; + bottom: 0; + left: 0; + } + + .xl\:pin-y { + top: 0; + bottom: 0; + } + + .xl\:pin-x { + right: 0; + left: 0; + } + + .xl\:pin-t { + top: 0; + } + + .xl\:pin-r { + right: 0; + } + + .xl\:pin-b { + bottom: 0; + } + + .xl\:pin-l { + left: 0; + } + + .xl\:resize-none { + resize: none; + } + + .xl\:resize-y { + resize: vertical; + } + + .xl\:resize-x { + resize: horizontal; + } + + .xl\:resize { + resize: both; + } + + .xl\:shadow { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .xl\:shadow-md { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .xl\:shadow-lg { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .xl\:shadow-inner { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .xl\:shadow-outline { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .xl\:shadow-none { + box-shadow: none; + } + + .xl\:hover\:shadow:hover { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .xl\:hover\:shadow-md:hover { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .xl\:hover\:shadow-lg:hover { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .xl\:hover\:shadow-inner:hover { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .xl\:hover\:shadow-outline:hover { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .xl\:hover\:shadow-none:hover { + box-shadow: none; + } + + .xl\:focus\:shadow:focus { + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1); + } + + .xl\:focus\:shadow-md:focus { + box-shadow: 0 4px 8px 0 rgba(0, 0, 0, .12), 0 2px 4px 0 rgba(0, 0, 0, .08); + } + + .xl\:focus\:shadow-lg:focus { + box-shadow: 0 15px 30px 0 rgba(0, 0, 0, .11), 0 5px 15px 0 rgba(0, 0, 0, .08); + } + + .xl\:focus\:shadow-inner:focus { + box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, .06); + } + + .xl\:focus\:shadow-outline:focus { + box-shadow: 0 0 0 3px rgba(52, 144, 220, .5); + } + + .xl\:focus\:shadow-none:focus { + box-shadow: none; + } + + .xl\:table-auto { + table-layout: auto; + } + + .xl\:table-fixed { + table-layout: fixed; + } + + .xl\:text-left { + text-align: left; + } + + .xl\:text-center { + text-align: center; + } + + .xl\:text-right { + text-align: right; + } + + .xl\:text-justify { + text-align: justify; + } + + .xl\:text-transparent { + color: transparent; + } + + .xl\:text-black { + color: #22292f; + } + + .xl\:text-grey-darkest { + color: #3d4852; + } + + .xl\:text-grey-darker { + color: #606f7b; + } + + .xl\:text-grey-dark { + color: #0B346E; + } + + .xl\:text-grey { + color: #b8c2cc; + } + + .xl\:text-grey-light { + color: #dae1e7; + } + + .xl\:text-grey-lighter { + color: #f1f5f8; + } + + .xl\:text-grey-lightest { + color: #f8fafc; + } + + .xl\:text-white { + color: #fff; + } + + .xl\:text-indigo-darkest { + color: #191e38; + } + + .xl\:text-indigo-darker { + color: #2EA9DF; + } + + .xl\:text-indigo-dark { + color: #005CAF; + } + + .xl\:text-indigo { + color: #005CAF; + } + + .xl\:text-indigo-light { + color: #7886d7; + } + + .xl\:text-indigo-lighter { + color: #A5DEE4; + } + + .xl\:text-indigo-lightest { + color: #e6e8ff; + } + + .xl\:hover\:text-transparent:hover { + color: transparent; + } + + .xl\:hover\:text-black:hover { + color: #22292f; + } + + .xl\:hover\:text-grey-darkest:hover { + color: #3d4852; + } + + .xl\:hover\:text-grey-darker:hover { + color: #606f7b; + } + + .xl\:hover\:text-grey-dark:hover { + color: #0B346E; + } + + .xl\:hover\:text-grey:hover { + color: #b8c2cc; + } + + .xl\:hover\:text-grey-light:hover { + color: #dae1e7; + } + + .xl\:hover\:text-grey-lighter:hover { + color: #f1f5f8; + } + + .xl\:hover\:text-grey-lightest:hover { + color: #f8fafc; + } + + .xl\:hover\:text-white:hover { + color: #fff; + } + + .xl\:hover\:text-indigo-darkest:hover { + color: #191e38; + } + + .xl\:hover\:text-indigo-darker:hover { + color: #2EA9DF; + } + + .xl\:hover\:text-indigo-dark:hover { + color: #005CAF; + } + + .xl\:hover\:text-indigo:hover { + color: #005CAF; + } + + .xl\:hover\:text-indigo-light:hover { + color: #7886d7; + } + + .xl\:hover\:text-indigo-lighter:hover { + color: #A5DEE4; + } + + .xl\:hover\:text-indigo-lightest:hover { + color: #e6e8ff; + } + + .xl\:focus\:text-transparent:focus { + color: transparent; + } + + .xl\:focus\:text-black:focus { + color: #22292f; + } + + .xl\:focus\:text-grey-darkest:focus { + color: #3d4852; + } + + .xl\:focus\:text-grey-darker:focus { + color: #606f7b; + } + + .xl\:focus\:text-grey-dark:focus { + color: #0B346E; + } + + .xl\:focus\:text-grey:focus { + color: #b8c2cc; + } + + .xl\:focus\:text-grey-light:focus { + color: #dae1e7; + } + + .xl\:focus\:text-grey-lighter:focus { + color: #f1f5f8; + } + + .xl\:focus\:text-grey-lightest:focus { + color: #f8fafc; + } + + .xl\:focus\:text-white:focus { + color: #fff; + } + + .xl\:focus\:text-indigo-darkest:focus { + color: #191e38; + } + + .xl\:focus\:text-indigo-darker:focus { + color: #2EA9DF; + } + + .xl\:focus\:text-indigo-dark:focus { + color: #005CAF; + } + + .xl\:focus\:text-indigo:focus { + color: #005CAF; + } + + .xl\:focus\:text-indigo-light:focus { + color: #7886d7; + } + + .xl\:focus\:text-indigo-lighter:focus { + color: #A5DEE4; + } + + .xl\:focus\:text-indigo-lightest:focus { + color: #e6e8ff; + } + + .xl\:text-xs { + font-size: .75rem; + } + + .xl\:text-sm { + font-size: .875rem; + } + + .xl\:text-base { + font-size: 1rem; + } + + .xl\:text-lg { + font-size: 1.125rem; + } + + .xl\:text-xl { + font-size: 1.25rem; + } + + .xl\:text-2xl { + font-size: 1.5rem; + } + + .xl\:text-3xl { + font-size: 1.875rem; + } + + .xl\:text-4xl { + font-size: 2.25rem; + } + + .xl\:text-5xl { + font-size: 3rem; + } + + .xl\:italic { + font-style: italic; + } + + .xl\:roman { + font-style: normal; + } + + .xl\:uppercase { + text-transform: uppercase; + } + + .xl\:lowercase { + text-transform: lowercase; + } + + .xl\:capitalize { + text-transform: capitalize; + } + + .xl\:normal-case { + text-transform: none; + } + + .xl\:underline { + text-decoration: underline; + } + + .xl\:line-through { + text-decoration: line-through; + } + + .xl\:no-underline { + text-decoration: none; + } + + .xl\:antialiased { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .xl\:subpixel-antialiased { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .xl\:hover\:italic:hover { + font-style: italic; + } + + .xl\:hover\:roman:hover { + font-style: normal; + } + + .xl\:hover\:uppercase:hover { + text-transform: uppercase; + } + + .xl\:hover\:lowercase:hover { + text-transform: lowercase; + } + + .xl\:hover\:capitalize:hover { + text-transform: capitalize; + } + + .xl\:hover\:normal-case:hover { + text-transform: none; + } + + .xl\:hover\:underline:hover { + text-decoration: underline; + } + + .xl\:hover\:line-through:hover { + text-decoration: line-through; + } + + .xl\:hover\:no-underline:hover { + text-decoration: none; + } + + .xl\:hover\:antialiased:hover { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .xl\:hover\:subpixel-antialiased:hover { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .xl\:focus\:italic:focus { + font-style: italic; + } + + .xl\:focus\:roman:focus { + font-style: normal; + } + + .xl\:focus\:uppercase:focus { + text-transform: uppercase; + } + + .xl\:focus\:lowercase:focus { + text-transform: lowercase; + } + + .xl\:focus\:capitalize:focus { + text-transform: capitalize; + } + + .xl\:focus\:normal-case:focus { + text-transform: none; + } + + .xl\:focus\:underline:focus { + text-decoration: underline; + } + + .xl\:focus\:line-through:focus { + text-decoration: line-through; + } + + .xl\:focus\:no-underline:focus { + text-decoration: none; + } + + .xl\:focus\:antialiased:focus { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .xl\:focus\:subpixel-antialiased:focus { + -webkit-font-smoothing: auto; + -moz-osx-font-smoothing: auto; + } + + .xl\:tracking-tight { + letter-spacing: -0.05em; + } + + .xl\:tracking-normal { + letter-spacing: 0; + } + + .xl\:tracking-wide { + letter-spacing: .05em; + } + + .xl\:select-none { + user-select: none; + } + + .xl\:select-text { + user-select: text; + } + + .xl\:align-baseline { + vertical-align: baseline; + } + + .xl\:align-top { + vertical-align: top; + } + + .xl\:align-middle { + vertical-align: middle; + } + + .xl\:align-bottom { + vertical-align: bottom; + } + + .xl\:align-text-top { + vertical-align: text-top; + } + + .xl\:align-text-bottom { + vertical-align: text-bottom; + } + + .xl\:visible { + visibility: visible; + } + + .xl\:invisible { + visibility: hidden; + } + + .xl\:whitespace-normal { + white-space: normal; + } + + .xl\:whitespace-no-wrap { + white-space: nowrap; + } + + .xl\:whitespace-pre { + white-space: pre; + } + + .xl\:whitespace-pre-line { + white-space: pre-line; + } + + .xl\:whitespace-pre-wrap { + white-space: pre-wrap; + } + + .xl\:break-words { + word-wrap: break-word; + } + + .xl\:break-normal { + word-wrap: normal; + } + + .xl\:truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + .xl\:w-1 { + width: .25rem; + } + + .xl\:w-2 { + width: .5rem; + } + + .xl\:w-3 { + width: .75rem; + } + + .xl\:w-4 { + width: 1rem; + } + + .xl\:w-5 { + width: 1.25rem; + } + + .xl\:w-6 { + width: 1.5rem; + } + + .xl\:w-8 { + width: 2rem; + } + + .xl\:w-10 { + width: 2.5rem; + } + + .xl\:w-12 { + width: 3rem; + } + + .xl\:w-16 { + width: 4rem; + } + + .xl\:w-24 { + width: 6rem; + } + + .xl\:w-32 { + width: 8rem; + } + + .xl\:w-48 { + width: 12rem; + } + + .xl\:w-64 { + width: 16rem; + } + + .xl\:w-auto { + width: auto; + } + + .xl\:w-px { + width: 1px; + } + + .xl\:w-1\/2 { + width: 50%; + } + + .xl\:w-1\/3 { + width: 33.33333%; + } + + .xl\:w-2\/3 { + width: 66.66667%; + } + + .xl\:w-1\/4 { + width: 25%; + } + + .xl\:w-3\/4 { + width: 75%; + } + + .xl\:w-1\/5 { + width: 20%; + } + + .xl\:w-2\/5 { + width: 40%; + } + + .xl\:w-3\/5 { + width: 60%; + } + + .xl\:w-4\/5 { + width: 80%; + } + + .xl\:w-1\/6 { + width: 16.66667%; + } + + .xl\:w-5\/6 { + width: 83.33333%; + } + + .xl\:w-full { + width: 100%; + } + + .xl\:w-screen { + width: 100vw; + } + + .xl\:z-0 { + z-index: 0; + } + + .xl\:z-10 { + z-index: 10; + } + + .xl\:z-20 { + z-index: 20; + } + + .xl\:z-30 { + z-index: 30; + } + + .xl\:z-40 { + z-index: 40; + } + + .xl\:z-50 { + z-index: 50; + } + + .xl\:z-auto { + z-index: auto; + } +} \ No newline at end of file diff --git a/assets/img/category-default.svg b/assets/img/category-default.svg new file mode 100755 index 0000000..a66a516 --- /dev/null +++ b/assets/img/category-default.svg @@ -0,0 +1,19 @@ + + + + Icon + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/home-default.svg b/assets/img/home-default.svg new file mode 100755 index 0000000..1b6e77f --- /dev/null +++ b/assets/img/home-default.svg @@ -0,0 +1,19 @@ + + + + Icon + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/logo.svg b/assets/img/logo.svg new file mode 100755 index 0000000..3c6363a --- /dev/null +++ b/assets/img/logo.svg @@ -0,0 +1,19 @@ + + + + logo + 白云图书馆 + + + + + + + + + \ No newline at end of file diff --git a/assets/img/profile-default.svg b/assets/img/profile-default.svg new file mode 100644 index 0000000..41af56b --- /dev/null +++ b/assets/img/profile-default.svg @@ -0,0 +1,19 @@ + + + + Icon + Created with Sketch. + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/img/wishlist-default.svg b/assets/img/wishlist-default.svg new file mode 100644 index 0000000..f704061 --- /dev/null +++ b/assets/img/wishlist-default.svg @@ -0,0 +1,22 @@ + + + + Group + Created with Sketch. + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/js/bundle.js b/assets/js/bundle.js new file mode 100755 index 0000000..24a1fd5 --- /dev/null +++ b/assets/js/bundle.js @@ -0,0 +1,5074 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { + scope = scope ? scope : document; + return scope.querySelector(selector); +}; + +const getAll = (selector, scope) => { + scope = scope ? scope : document; + return scope.querySelectorAll(selector); +}; + +const nav = get("nav"); +const profile = get("#profile"); +const loading = get("#loading"); +const content = get("#content"); +const toggle = get(".toggle"); +const avatarAnimation = anime({ + targets: '#avatar #moon', + rotate: '1turn', + transformOrigin: "center center 0", + duration: 5000 +}); +const showSidenavCategories = anime({ + targets: '#sidenav-categories li', + translateY: [-10, 0], + duration: 1200, + opacity: [0,1], + delay: function(el, i) { + return i * 60; + } +}); +const showSidenavUsers = anime({ + targets: '#sidenav-users li', + translateY: [-10, 0], + duration: 1200, + opacity: [0,1], + delay: function(el, i) { + return i * 60; + } +}); +const showSidenavAdmins = anime({ + targets: '#sidenav-admins li', + translateY: [-10, 0], + duration: 1200, + opacity: [0,1], + delay: function(el, i) { + return i * 60; + } +}); + +function isHidden(el) { + return (el.offsetParent === null) +} + +function removeLoadingScreen () { + anime({ + targets: "#loading", + opacity: 0, + duration: 1000, + easing: "easeOutExpo", + complete: () => { + loading.style.display = "none"; + } + }); +} + +// loading animation +anime({ + targets: '#morphing #moon', + rotate: '1turn', + transformOrigin: "center center 0", + duration: 5000, + loop: true +}); + +// toggle stats on when window resizes +window.addEventListener("resize", () => { + let mobileHiddens = getAll(".js-mobile-hidden"); + if(window.innerWidth > 768) { + for (var i = 0; i < mobileHiddens.length; i++) { + mobileHiddens[i].classList.remove('hidden'); + } + if (get("[data-tab='section-stats']") && get("[data-tab='section-stats']").classList.contains('active')) { + get("[data-tab='section-library']").click(); + } + if (content.classList.contains("hidden")) { + content.classList.remove("hidden"); + content.classList.add("flex"); + profile.style.top = 0; + } + } else { + for (var i = 0; i < mobileHiddens.length; i++) { + mobileHiddens[i].classList.add('hidden'); + } + } +}) + +// show loading screen if images loaded faster than 200ms +setTimeout(() => { + imagesloaded(get("body"), () => { + let tabs = getAll(".js-tab"); + let panes = getAll(".js-tab-pane"); + let mobileHiddens = getAll(".js-mobile-hidden"); + let sidenavCategoriesTrigger = get("#sidenav-categories-trigger"); + let sidenavCategories = get("#sidenav-categories"); + let sidenavCategoriesIcon = get("#sidenav-categories-icon"); + let sidenavUsersTrigger = get("#sidenav-users-trigger"); + let sidenavUsers = get("#sidenav-users"); + let sidenavUsersIcon = get("#sidenav-users-icon"); + let sidenavAdminsTrigger = get("#sidenav-admins-trigger"); + let sidenavAdmins = get("#sidenav-admins"); + let sidenavAdminsIcon = get("#sidenav-admins-icon"); + + let books = getAll(".js-book"); + let mobileReoadTriggers = getAll(".mobile-home-trigger"); + + removeLoadingScreen(); + + // bind click event to sideNav + sidenavCategoriesTrigger.addEventListener("click", sidenavCategoriesClick); + sidenavUsersTrigger.addEventListener("click", sidenavUsersClick); + if (sidenavAdminsTrigger) sidenavAdminsTrigger.addEventListener("click", sidenavAdminsClick); + + // bind click event to each tab + for (var i = 0; i < tabs.length; i++) { + tabs[i].addEventListener("click", tabClick); + } + + for (let i = 0; i < mobileReoadTriggers.length; i++) { + mobileReoadTriggers[i].addEventListener("click", event => { + location.reload(); + }) + } + + for (var i = 0; i < books.length; i++) { + /*tippy(books[i], { + html: "#popup", + placement: "right", + theme: "light rounded", + arrow: true, + arrowTransform: "scaleX(1.3)", + distance: 20, + maxWidth: "200px", + animation: "fade", + trigger: "click", + interactive: true, + });*/ + books[i].addEventListener("click", function() { + location.href = this.getAttribute("data-href"); + }) + } + + // disable/enable tippy if on mobile/desktop device + tippy.browser.onUserInputChange = type => { + const method = type === 'touch' || this.window.innerWidth < 768 ? 'disable' : 'enable'; + for (let i = 0; i < books.length; i++) { + books[i]._tippy[method](); + } + } + + function sidenavCategoriesClick (event) { + if (sidenavCategories.classList.contains("hidden")) { + sidenavCategories.classList.remove("hidden"); + sidenavCategoriesIcon.classList.remove("rotate"); + showSidenavCategories.restart(); + } else { + sidenavCategories.classList.add("hidden"); + sidenavCategoriesIcon.classList.add("rotate"); + } + } + + function sidenavUsersClick (event) { + if (sidenavUsers.classList.contains("hidden")) { + sidenavUsers.classList.remove("hidden"); + sidenavUsersIcon.classList.remove("rotate"); + showSidenavUsers.restart(); + } else { + sidenavUsers.classList.add("hidden"); + sidenavUsersIcon.classList.add("rotate"); + } + } + + function sidenavAdminsClick (event) { + if (sidenavAdmins.classList.contains("hidden")) { + sidenavAdmins.classList.remove("hidden"); + sidenavAdminsIcon.classList.remove("rotate"); + showSidenavAdmins.restart(); + } else { + sidenavAdmins.classList.add("hidden"); + sidenavAdminsIcon.classList.add("rotate"); + } + } + + if (window.innerWidth > 768) { + for (var i = 0; i < mobileHiddens.length; i++) { + mobileHiddens[i].classList.remove('hidden'); + } + } + + // each click event is scoped to the tab_container + function tabClick (event) { + let clickedTab = event.target; + let activePane = get(`#${clickedTab.getAttribute("data-tab")}`); + + // remove all active tab classes + for (let i = 0; i < tabs.length; i++) { + tabs[i].classList.remove('active'); + } + + // remove all active pane classes + for (var i = 0; i < panes.length; i++) { + panes[i].classList.remove('active'); + } + + // apply active classes on desired tab and pane + clickedTab.classList.add('active'); + activePane.classList.add('active'); + } + }); +}, 1000); + +get("#mobile-nav-trigger").addEventListener("click", event => { + if (isHidden(nav)) { + toggle.classList.add("open"); + nav.classList.remove("hidden"); + } else { + toggle.classList.remove("open"); + nav.classList.add("hidden"); + } +}); + +/*get("#mobile-profile-trigger").addEventListener("click", event => { + profile.classList.remove("hidden"); + profile.style.top = "63px"; + content.classList.remove("flex"); + content.classList.add("hidden"); + nav.classList.add("hidden"); + toggle.classList.remove("open"); +});*/ + +// avatar animation +if (get("#avatar")) { + get("#avatar").addEventListener("mouseenter", event => { + avatarAnimation.restart(); + }, false); + + get("#avatar").addEventListener("mouseleave", event => { + avatarAnimation.reverse(); + }, false); +} + +},{"animejs":2,"imagesloaded":4,"tippy.js":5}],2:[function(require,module,exports){ +(function (global){ +/* + 2017 Julian Garnier + Released under the MIT license +*/ +var $jscomp={scope:{}};$jscomp.defineProperty="function"==typeof Object.defineProperties?Object.defineProperty:function(e,r,p){if(p.get||p.set)throw new TypeError("ES3 does not support getters and setters.");e!=Array.prototype&&e!=Object.prototype&&(e[r]=p.value)};$jscomp.getGlobal=function(e){return"undefined"!=typeof window&&window===e?e:"undefined"!=typeof global&&null!=global?global:e};$jscomp.global=$jscomp.getGlobal(this);$jscomp.SYMBOL_PREFIX="jscomp_symbol_"; +$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(e){return $jscomp.SYMBOL_PREFIX+(e||"")+$jscomp.symbolCounter_++}; +$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var e=$jscomp.global.Symbol.iterator;e||(e=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[e]&&$jscomp.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(e){var r=0;return $jscomp.iteratorPrototype(function(){return rb&&(b+=1);1b?c:b<2/3?a+(c-a)*(2/3-b)*6:a}var d=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(a)||/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(a);a=parseInt(d[1])/360;var b=parseInt(d[2])/100,f=parseInt(d[3])/100,d=d[4]||1;if(0==b)f=b=a=f;else{var n=.5>f?f*(1+b):f+b-f*b,k=2*f-n,f=c(k,n,a+1/3),b=c(k,n,a);a=c(k,n,a-1/3)}return"rgba("+ +255*f+","+255*b+","+255*a+","+d+")"}function y(a){if(a=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(a))return a[2]}function V(a){if(-1=g.currentTime)for(var G=0;G=w||!k)g.began||(g.began=!0,f("begin")),f("run");if(q>n&&q=k&&r!==k||!k)b(k),x||e();f("update");a>=k&&(g.remaining?(t=h,"alternate"===g.direction&&(g.reversed=!g.reversed)):(g.pause(),g.completed||(g.completed=!0,f("complete"),"Promise"in window&&(p(),m=c()))),l=0)}a=void 0===a?{}:a;var h,t,l=0,p=null,m=c(),g=fa(a);g.reset=function(){var a=g.direction,c=g.loop;g.currentTime= +0;g.progress=0;g.paused=!0;g.began=!1;g.completed=!1;g.reversed="reverse"===a;g.remaining="alternate"===a&&1===c?2:c;b(0);for(a=g.children.length;a--;)g.children[a].reset()};g.tick=function(a){h=a;t||(t=h);k((l+h-t)*q.speed)};g.seek=function(a){k(d(a))};g.pause=function(){var a=v.indexOf(g);-1=c&&0<=b&&1>=b){var e=new Float32Array(11);if(c!==d||b!==f)for(var k=0;11>k;++k)e[k]=a(.1*k,c,b);return function(k){if(c===d&&b===f)return k;if(0===k)return 0;if(1===k)return 1;for(var h=0,l=1;10!==l&&e[l]<=k;++l)h+=.1;--l;var l=h+(k-e[l])/(e[l+1]-e[l])*.1,n=3*(1-3*b+3*c)*l*l+2*(3*b-6*c)*l+3*c;if(.001<=n){for(h=0;4>h;++h){n=3*(1-3*b+3*c)*l*l+2*(3*b-6*c)*l+3*c;if(0===n)break;var m=a(l,c,b)-k,l=l-m/n}k=l}else if(0=== +n)k=l;else{var l=h,h=h+.1,g=0;do m=l+(h-l)/2,n=a(m,c,b)-k,0++g);k=m}return a(k,d,f)}}}}(),Q=function(){function a(a,b){return 0===a||1===a?a:-Math.pow(2,10*(a-1))*Math.sin(2*(a-1-b/(2*Math.PI)*Math.asin(1))*Math.PI/b)}var c="Quad Cubic Quart Quint Sine Expo Circ Back Elastic".split(" "),d={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],a],Out:[[.25, +.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(b,c){return 1-a(1-b,c)}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(b,c){return.5>b?a(2*b,c)/2:1-a(-2*b+2,c)/2}]},b={linear:A(.25,.25,.75,.75)},f={},e;for(e in d)f.type=e,d[f.type].forEach(function(a){return function(d,f){b["ease"+a.type+c[f]]=h.fnc(d)? +d:A.apply($jscomp$this,d)}}(f)),f={type:f.type};return b}(),ha={css:function(a,c,d){return a.style[c]=d},attribute:function(a,c,d){return a.setAttribute(c,d)},object:function(a,c,d){return a[c]=d},transform:function(a,c,d,b,f){b[f]||(b[f]=[]);b[f].push(c+"("+d+")")}},v=[],B=0,ia=function(){function a(){B=requestAnimationFrame(c)}function c(c){var b=v.length;if(b){for(var d=0;db&&(c.duration=d.duration);c.children.push(d)});c.seek(0);c.reset();c.autoplay&&c.restart();return c};return c};q.random=function(a,c){return Math.floor(Math.random()*(c-a+1))+a};return q}); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(require,module,exports){ +/** + * EvEmitter v1.1.0 + * Lil' event emitter + * MIT License + */ + +/* jshint unused: true, undef: true, strict: true */ + +( function( global, factory ) { + // universal module definition + /* jshint strict: false */ /* globals define, module, window */ + if ( typeof define == 'function' && define.amd ) { + // AMD - RequireJS + define( factory ); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS - Browserify, Webpack + module.exports = factory(); + } else { + // Browser globals + global.EvEmitter = factory(); + } + +}( typeof window != 'undefined' ? window : this, function() { + +"use strict"; + +function EvEmitter() {} + +var proto = EvEmitter.prototype; + +proto.on = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // set events hash + var events = this._events = this._events || {}; + // set listeners array + var listeners = events[ eventName ] = events[ eventName ] || []; + // only add once + if ( listeners.indexOf( listener ) == -1 ) { + listeners.push( listener ); + } + + return this; +}; + +proto.once = function( eventName, listener ) { + if ( !eventName || !listener ) { + return; + } + // add event + this.on( eventName, listener ); + // set once flag + // set onceEvents hash + var onceEvents = this._onceEvents = this._onceEvents || {}; + // set onceListeners object + var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {}; + // set flag + onceListeners[ listener ] = true; + + return this; +}; + +proto.off = function( eventName, listener ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + var index = listeners.indexOf( listener ); + if ( index != -1 ) { + listeners.splice( index, 1 ); + } + + return this; +}; + +proto.emitEvent = function( eventName, args ) { + var listeners = this._events && this._events[ eventName ]; + if ( !listeners || !listeners.length ) { + return; + } + // copy over to avoid interference if .off() in listener + listeners = listeners.slice(0); + args = args || []; + // once stuff + var onceListeners = this._onceEvents && this._onceEvents[ eventName ]; + + for ( var i=0; i < listeners.length; i++ ) { + var listener = listeners[i] + var isOnce = onceListeners && onceListeners[ listener ]; + if ( isOnce ) { + // remove listener + // remove before trigger to prevent recursion + this.off( eventName, listener ); + // unset once flag + delete onceListeners[ listener ]; + } + // trigger listener + listener.apply( this, args ); + } + + return this; +}; + +proto.allOff = function() { + delete this._events; + delete this._onceEvents; +}; + +return EvEmitter; + +})); + +},{}],4:[function(require,module,exports){ +/*! + * imagesLoaded v4.1.4 + * JavaScript is all like "You images are done yet or what?" + * MIT License + */ + +( function( window, factory ) { 'use strict'; + // universal module definition + + /*global define: false, module: false, require: false */ + + if ( typeof define == 'function' && define.amd ) { + // AMD + define( [ + 'ev-emitter/ev-emitter' + ], function( EvEmitter ) { + return factory( window, EvEmitter ); + }); + } else if ( typeof module == 'object' && module.exports ) { + // CommonJS + module.exports = factory( + window, + require('ev-emitter') + ); + } else { + // browser global + window.imagesLoaded = factory( + window, + window.EvEmitter + ); + } + +})( typeof window !== 'undefined' ? window : this, + +// -------------------------- factory -------------------------- // + +function factory( window, EvEmitter ) { + +'use strict'; + +var $ = window.jQuery; +var console = window.console; + +// -------------------------- helpers -------------------------- // + +// extend objects +function extend( a, b ) { + for ( var prop in b ) { + a[ prop ] = b[ prop ]; + } + return a; +} + +var arraySlice = Array.prototype.slice; + +// turn element or nodeList into an array +function makeArray( obj ) { + if ( Array.isArray( obj ) ) { + // use object if already an array + return obj; + } + + var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number'; + if ( isArrayLike ) { + // convert nodeList to array + return arraySlice.call( obj ); + } + + // array of single index + return [ obj ]; +} + +// -------------------------- imagesLoaded -------------------------- // + +/** + * @param {Array, Element, NodeList, String} elem + * @param {Object or Function} options - if function, use as callback + * @param {Function} onAlways - callback function + */ +function ImagesLoaded( elem, options, onAlways ) { + // coerce ImagesLoaded() without new, to be new ImagesLoaded() + if ( !( this instanceof ImagesLoaded ) ) { + return new ImagesLoaded( elem, options, onAlways ); + } + // use elem as selector string + var queryElem = elem; + if ( typeof elem == 'string' ) { + queryElem = document.querySelectorAll( elem ); + } + // bail if bad element + if ( !queryElem ) { + console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) ); + return; + } + + this.elements = makeArray( queryElem ); + this.options = extend( {}, this.options ); + // shift arguments if no options set + if ( typeof options == 'function' ) { + onAlways = options; + } else { + extend( this.options, options ); + } + + if ( onAlways ) { + this.on( 'always', onAlways ); + } + + this.getImages(); + + if ( $ ) { + // add jQuery Deferred object + this.jqDeferred = new $.Deferred(); + } + + // HACK check async to allow time to bind listeners + setTimeout( this.check.bind( this ) ); +} + +ImagesLoaded.prototype = Object.create( EvEmitter.prototype ); + +ImagesLoaded.prototype.options = {}; + +ImagesLoaded.prototype.getImages = function() { + this.images = []; + + // filter & find items if we have an item selector + this.elements.forEach( this.addElementImages, this ); +}; + +/** + * @param {Node} element + */ +ImagesLoaded.prototype.addElementImages = function( elem ) { + // filter siblings + if ( elem.nodeName == 'IMG' ) { + this.addImage( elem ); + } + // get background image on element + if ( this.options.background === true ) { + this.addElementBackgroundImages( elem ); + } + + // find children + // no non-element nodes, #143 + var nodeType = elem.nodeType; + if ( !nodeType || !elementNodeTypes[ nodeType ] ) { + return; + } + var childImgs = elem.querySelectorAll('img'); + // concat childElems to filterFound array + for ( var i=0; i < childImgs.length; i++ ) { + var img = childImgs[i]; + this.addImage( img ); + } + + // get child background images + if ( typeof this.options.background == 'string' ) { + var children = elem.querySelectorAll( this.options.background ); + for ( i=0; i < children.length; i++ ) { + var child = children[i]; + this.addElementBackgroundImages( child ); + } + } +}; + +var elementNodeTypes = { + 1: true, + 9: true, + 11: true +}; + +ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) { + var style = getComputedStyle( elem ); + if ( !style ) { + // Firefox returns null if in a hidden iframe https://bugzil.la/548397 + return; + } + // get url inside url("...") + var reURL = /url\((['"])?(.*?)\1\)/gi; + var matches = reURL.exec( style.backgroundImage ); + while ( matches !== null ) { + var url = matches && matches[2]; + if ( url ) { + this.addBackground( url, elem ); + } + matches = reURL.exec( style.backgroundImage ); + } +}; + +/** + * @param {Image} img + */ +ImagesLoaded.prototype.addImage = function( img ) { + var loadingImage = new LoadingImage( img ); + this.images.push( loadingImage ); +}; + +ImagesLoaded.prototype.addBackground = function( url, elem ) { + var background = new Background( url, elem ); + this.images.push( background ); +}; + +ImagesLoaded.prototype.check = function() { + var _this = this; + this.progressedCount = 0; + this.hasAnyBroken = false; + // complete if no images + if ( !this.images.length ) { + this.complete(); + return; + } + + function onProgress( image, elem, message ) { + // HACK - Chrome triggers event before object properties have changed. #83 + setTimeout( function() { + _this.progress( image, elem, message ); + }); + } + + this.images.forEach( function( loadingImage ) { + loadingImage.once( 'progress', onProgress ); + loadingImage.check(); + }); +}; + +ImagesLoaded.prototype.progress = function( image, elem, message ) { + this.progressedCount++; + this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; + // progress event + this.emitEvent( 'progress', [ this, image, elem ] ); + if ( this.jqDeferred && this.jqDeferred.notify ) { + this.jqDeferred.notify( this, image ); + } + // check if completed + if ( this.progressedCount == this.images.length ) { + this.complete(); + } + + if ( this.options.debug && console ) { + console.log( 'progress: ' + message, image, elem ); + } +}; + +ImagesLoaded.prototype.complete = function() { + var eventName = this.hasAnyBroken ? 'fail' : 'done'; + this.isComplete = true; + this.emitEvent( eventName, [ this ] ); + this.emitEvent( 'always', [ this ] ); + if ( this.jqDeferred ) { + var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve'; + this.jqDeferred[ jqMethod ]( this ); + } +}; + +// -------------------------- -------------------------- // + +function LoadingImage( img ) { + this.img = img; +} + +LoadingImage.prototype = Object.create( EvEmitter.prototype ); + +LoadingImage.prototype.check = function() { + // If complete is true and browser supports natural sizes, + // try to check for image status manually. + var isComplete = this.getIsImageComplete(); + if ( isComplete ) { + // report based on naturalWidth + this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); + return; + } + + // If none of the checks above matched, simulate loading on detached element. + this.proxyImage = new Image(); + this.proxyImage.addEventListener( 'load', this ); + this.proxyImage.addEventListener( 'error', this ); + // bind to image as well for Firefox. #191 + this.img.addEventListener( 'load', this ); + this.img.addEventListener( 'error', this ); + this.proxyImage.src = this.img.src; +}; + +LoadingImage.prototype.getIsImageComplete = function() { + // check for non-zero, non-undefined naturalWidth + // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671 + return this.img.complete && this.img.naturalWidth; +}; + +LoadingImage.prototype.confirm = function( isLoaded, message ) { + this.isLoaded = isLoaded; + this.emitEvent( 'progress', [ this, this.img, message ] ); +}; + +// ----- events ----- // + +// trigger specified handler for event type +LoadingImage.prototype.handleEvent = function( event ) { + var method = 'on' + event.type; + if ( this[ method ] ) { + this[ method ]( event ); + } +}; + +LoadingImage.prototype.onload = function() { + this.confirm( true, 'onload' ); + this.unbindEvents(); +}; + +LoadingImage.prototype.onerror = function() { + this.confirm( false, 'onerror' ); + this.unbindEvents(); +}; + +LoadingImage.prototype.unbindEvents = function() { + this.proxyImage.removeEventListener( 'load', this ); + this.proxyImage.removeEventListener( 'error', this ); + this.img.removeEventListener( 'load', this ); + this.img.removeEventListener( 'error', this ); +}; + +// -------------------------- Background -------------------------- // + +function Background( url, element ) { + this.url = url; + this.element = element; + this.img = new Image(); +} + +// inherit LoadingImage prototype +Background.prototype = Object.create( LoadingImage.prototype ); + +Background.prototype.check = function() { + this.img.addEventListener( 'load', this ); + this.img.addEventListener( 'error', this ); + this.img.src = this.url; + // check if image is already complete + var isComplete = this.getIsImageComplete(); + if ( isComplete ) { + this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' ); + this.unbindEvents(); + } +}; + +Background.prototype.unbindEvents = function() { + this.img.removeEventListener( 'load', this ); + this.img.removeEventListener( 'error', this ); +}; + +Background.prototype.confirm = function( isLoaded, message ) { + this.isLoaded = isLoaded; + this.emitEvent( 'progress', [ this, this.element, message ] ); +}; + +// -------------------------- jQuery -------------------------- // + +ImagesLoaded.makeJQueryPlugin = function( jQuery ) { + jQuery = jQuery || window.jQuery; + if ( !jQuery ) { + return; + } + // set local variable + $ = jQuery; + // $().imagesLoaded() + $.fn.imagesLoaded = function( options, callback ) { + var instance = new ImagesLoaded( this, options, callback ); + return instance.jqDeferred.promise( $(this) ); + }; +}; +// try making plugin +ImagesLoaded.makeJQueryPlugin(); + +// -------------------------- -------------------------- // + +return ImagesLoaded; + +}); + +},{"ev-emitter":3}],5:[function(require,module,exports){ +(function (global){ +/*! +* Tippy.js v2.5.4 +* (c) 2017-2018 atomiks +* MIT +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.tippy = factory()); +}(this, (function () { 'use strict'; + +var styles = ".tippy-touch{cursor:pointer!important}.tippy-notransition{transition:none!important}.tippy-popper{max-width:350px;-webkit-perspective:700px;perspective:700px;z-index:9999;outline:0;transition-timing-function:cubic-bezier(.165,.84,.44,1);pointer-events:none;line-height:1.4}.tippy-popper[data-html]{max-width:96%;max-width:calc(100% - 20px)}.tippy-popper[x-placement^=top] .tippy-backdrop{border-radius:40% 40% 0 0}.tippy-popper[x-placement^=top] .tippy-roundarrow{bottom:-8px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.tippy-popper[x-placement^=top] .tippy-arrow{border-top:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;bottom:-7px;margin:0 6px;-webkit-transform-origin:50% 0;transform-origin:50% 0}.tippy-popper[x-placement^=top] .tippy-backdrop{-webkit-transform-origin:0 90%;transform-origin:0 90%}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,25%);transform:scale(6) translate(-50%,25%);opacity:1}.tippy-popper[x-placement^=top] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,25%);transform:scale(1) translate(-50%,25%);opacity:0}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(-20px);transform:translateY(-20px)}.tippy-popper[x-placement^=top] [data-animation=perspective]{-webkit-transform-origin:bottom;transform-origin:bottom}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) rotateX(0);transform:translateY(-10px) rotateX(0)}.tippy-popper[x-placement^=top] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(90deg);transform:translateY(0) rotateX(90deg)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px);transform:translateY(-10px)}.tippy-popper[x-placement^=top] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(-10px) scale(1);transform:translateY(-10px) scale(1)}.tippy-popper[x-placement^=top] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=bottom] .tippy-backdrop{border-radius:0 0 30% 30%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow{top:-8px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(0);transform:rotate(0)}.tippy-popper[x-placement^=bottom] .tippy-arrow{border-bottom:7px solid #333;border-right:7px solid transparent;border-left:7px solid transparent;top:-7px;margin:0 6px;-webkit-transform-origin:50% 100%;transform-origin:50% 100%}.tippy-popper[x-placement^=bottom] .tippy-backdrop{-webkit-transform-origin:0 -90%;transform-origin:0 -90%}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-50%,-125%);transform:scale(6) translate(-50%,-125%);opacity:1}.tippy-popper[x-placement^=bottom] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1) translate(-50%,-125%);transform:scale(1) translate(-50%,-125%);opacity:0}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px)}.tippy-popper[x-placement^=bottom] [data-animation=perspective]{-webkit-transform-origin:top;transform-origin:top}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) rotateX(0);transform:translateY(10px) rotateX(0)}.tippy-popper[x-placement^=bottom] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) rotateX(-90deg);transform:translateY(0) rotateX(-90deg)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateY(10px);transform:translateY(10px)}.tippy-popper[x-placement^=bottom] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateY(0);transform:translateY(0)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateY(10px) scale(1);transform:translateY(10px) scale(1)}.tippy-popper[x-placement^=bottom] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateY(0) scale(0);transform:translateY(0) scale(0)}.tippy-popper[x-placement^=left] .tippy-backdrop{border-radius:50% 0 0 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow{right:-16px;-webkit-transform-origin:33.33333333% 50%;transform-origin:33.33333333% 50%}.tippy-popper[x-placement^=left] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(90deg);transform:rotate(90deg)}.tippy-popper[x-placement^=left] .tippy-arrow{border-left:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;right:-7px;margin:3px 0;-webkit-transform-origin:0 50%;transform-origin:0 50%}.tippy-popper[x-placement^=left] .tippy-backdrop{-webkit-transform-origin:100% 0;transform-origin:100% 0}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(40%,-50%);transform:scale(6) translate(40%,-50%);opacity:1}.tippy-popper[x-placement^=left] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(40%,-50%);transform:scale(1.5) translate(40%,-50%);opacity:0}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(-20px);transform:translateX(-20px)}.tippy-popper[x-placement^=left] [data-animation=perspective]{-webkit-transform-origin:right;transform-origin:right}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) rotateY(0);transform:translateX(-10px) rotateY(0)}.tippy-popper[x-placement^=left] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(-90deg);transform:translateX(0) rotateY(-90deg)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px);transform:translateX(-10px)}.tippy-popper[x-placement^=left] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(-10px) scale(1);transform:translateX(-10px) scale(1)}.tippy-popper[x-placement^=left] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-popper[x-placement^=right] .tippy-backdrop{border-radius:0 50% 50% 0}.tippy-popper[x-placement^=right] .tippy-roundarrow{left:-16px;-webkit-transform-origin:66.66666666% 50%;transform-origin:66.66666666% 50%}.tippy-popper[x-placement^=right] .tippy-roundarrow svg{position:absolute;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.tippy-popper[x-placement^=right] .tippy-arrow{border-right:7px solid #333;border-top:7px solid transparent;border-bottom:7px solid transparent;left:-7px;margin:3px 0;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.tippy-popper[x-placement^=right] .tippy-backdrop{-webkit-transform-origin:-100% 0;transform-origin:-100% 0}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=visible]{-webkit-transform:scale(6) translate(-140%,-50%);transform:scale(6) translate(-140%,-50%);opacity:1}.tippy-popper[x-placement^=right] .tippy-backdrop[data-state=hidden]{-webkit-transform:scale(1.5) translate(-140%,-50%);transform:scale(1.5) translate(-140%,-50%);opacity:0}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-toward][data-state=hidden]{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.tippy-popper[x-placement^=right] [data-animation=perspective]{-webkit-transform-origin:left;transform-origin:left}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) rotateY(0);transform:translateX(10px) rotateY(0)}.tippy-popper[x-placement^=right] [data-animation=perspective][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) rotateY(90deg);transform:translateX(0) rotateY(90deg)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=fade][data-state=hidden]{opacity:0;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=visible]{opacity:1;-webkit-transform:translateX(10px);transform:translateX(10px)}.tippy-popper[x-placement^=right] [data-animation=shift-away][data-state=hidden]{opacity:0;-webkit-transform:translateX(0);transform:translateX(0)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=visible]{opacity:1;-webkit-transform:translateX(10px) scale(1);transform:translateX(10px) scale(1)}.tippy-popper[x-placement^=right] [data-animation=scale][data-state=hidden]{opacity:0;-webkit-transform:translateX(0) scale(0);transform:translateX(0) scale(0)}.tippy-tooltip{position:relative;color:#fff;border-radius:4px;font-size:.9rem;padding:.3rem .6rem;text-align:center;will-change:transform;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#333}.tippy-tooltip[data-size=small]{padding:.2rem .4rem;font-size:.75rem}.tippy-tooltip[data-size=large]{padding:.4rem .8rem;font-size:1rem}.tippy-tooltip[data-animatefill]{overflow:hidden;background-color:transparent}.tippy-tooltip[data-animatefill] .tippy-content{transition:-webkit-clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98);transition:clip-path cubic-bezier(.46,.1,.52,.98),-webkit-clip-path cubic-bezier(.46,.1,.52,.98)}.tippy-tooltip[data-interactive],.tippy-tooltip[data-interactive] path{pointer-events:auto}.tippy-tooltip[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.53,2,.36,.85)}.tippy-tooltip[data-inertia][data-state=hidden]{transition-timing-function:ease}.tippy-arrow,.tippy-roundarrow{position:absolute;width:0;height:0}.tippy-roundarrow{width:24px;height:8px;fill:#333;pointer-events:none}.tippy-backdrop{position:absolute;will-change:transform;background-color:#333;border-radius:50%;width:26%;left:50%;top:50%;z-index:-1;transition:all cubic-bezier(.46,.1,.52,.98);-webkit-backface-visibility:hidden;backface-visibility:hidden}.tippy-backdrop:after{content:\"\";float:left;padding-top:100%}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(100% 100% at 50% 50%);clip-path:ellipse(100% 100% at 50% 50%)}body:not(.tippy-touch) .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(5% 50% at 50% 50%);clip-path:ellipse(5% 50% at 50% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 0 50%);clip-path:ellipse(135% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=right] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 0 50%);clip-path:ellipse(40% 100% at 0 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=visible] .tippy-content{-webkit-clip-path:ellipse(135% 100% at 100% 50%);clip-path:ellipse(135% 100% at 100% 50%)}body:not(.tippy-touch) .tippy-popper[x-placement=left] .tippy-tooltip[data-animatefill][data-state=hidden] .tippy-content{-webkit-clip-path:ellipse(40% 100% at 100% 50%);clip-path:ellipse(40% 100% at 100% 50%)}@media (max-width:360px){.tippy-popper{max-width:96%;max-width:calc(100% - 20px)}}"; + +var version = "2.5.4"; + +var isBrowser = typeof window !== 'undefined'; + +var isIE = isBrowser && /MSIE |Trident\//.test(navigator.userAgent); + +var browser = {}; + +if (isBrowser) { + browser.supported = 'requestAnimationFrame' in window; + browser.supportsTouch = 'ontouchstart' in window; + browser.usingTouch = false; + browser.dynamicInputDetection = true; + browser.iOS = /iPhone|iPad|iPod/.test(navigator.platform) && !window.MSStream; + browser.onUserInputChange = function () {}; +} + +/** + * Selector constants used for grabbing elements + */ +var selectors = { + POPPER: '.tippy-popper', + TOOLTIP: '.tippy-tooltip', + CONTENT: '.tippy-content', + BACKDROP: '.tippy-backdrop', + ARROW: '.tippy-arrow', + ROUND_ARROW: '.tippy-roundarrow', + REFERENCE: '[data-tippy]' +}; + +var defaults = { + placement: 'top', + livePlacement: true, + trigger: 'mouseenter focus', + animation: 'shift-away', + html: false, + animateFill: true, + arrow: false, + delay: 0, + duration: [350, 300], + interactive: false, + interactiveBorder: 2, + theme: 'dark', + size: 'regular', + distance: 10, + offset: 0, + hideOnClick: true, + multiple: false, + followCursor: false, + inertia: false, + updateDuration: 350, + sticky: false, + appendTo: function appendTo() { + return document.body; + }, + zIndex: 9999, + touchHold: false, + performance: false, + dynamicTitle: false, + flip: true, + flipBehavior: 'flip', + arrowType: 'sharp', + arrowTransform: '', + maxWidth: '', + target: null, + allowTitleHTML: true, + popperOptions: {}, + createPopperInstanceOnInit: false, + onShow: function onShow() {}, + onShown: function onShown() {}, + onHide: function onHide() {}, + onHidden: function onHidden() {} +}; + +/** + * The keys of the defaults object for reducing down into a new object + * Used in `getIndividualOptions()` + */ +var defaultsKeys = browser.supported && Object.keys(defaults); + +/** + * Determines if a value is an object literal + * @param {*} value + * @return {Boolean} + */ +function isObjectLiteral(value) { + return {}.toString.call(value) === '[object Object]'; +} + +/** + * Ponyfill for Array.from + * @param {*} value + * @return {Array} + */ +function toArray(value) { + return [].slice.call(value); +} + +/** + * Returns an array of elements based on the selector input + * @param {String|Element|Element[]|NodeList|Object} selector + * @return {Element[]} + */ +function getArrayOfElements(selector) { + if (selector instanceof Element || isObjectLiteral(selector)) { + return [selector]; + } + + if (selector instanceof NodeList) { + return toArray(selector); + } + + if (Array.isArray(selector)) { + return selector; + } + + try { + return toArray(document.querySelectorAll(selector)); + } catch (_) { + return []; + } +} + +/** + * Polyfills needed props/methods for a virtual reference object + * NOTE: in v3.0 this will be pure + * @param {Object} reference + */ +function polyfillVirtualReferenceProps(reference) { + reference.refObj = true; + reference.attributes = reference.attributes || {}; + reference.setAttribute = function (key, val) { + reference.attributes[key] = val; + }; + reference.getAttribute = function (key) { + return reference.attributes[key]; + }; + reference.removeAttribute = function (key) { + delete reference.attributes[key]; + }; + reference.hasAttribute = function (key) { + return key in reference.attributes; + }; + reference.addEventListener = function () {}; + reference.removeEventListener = function () {}; + reference.classList = { + classNames: {}, + add: function add(key) { + return reference.classList.classNames[key] = true; + }, + remove: function remove(key) { + delete reference.classList.classNames[key]; + return true; + }, + contains: function contains(key) { + return key in reference.classList.classNames; + } + }; +} + +/** + * Returns the supported prefixed property - only `webkit` is needed, `moz`, `ms` and `o` are obsolete + * @param {String} property + * @return {String} - browser supported prefixed property + */ +function prefix(property) { + var prefixes = ['', 'webkit']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var _prefix = prefixes[i]; + var prefixedProp = _prefix ? _prefix + upperProp : property; + if (typeof document.body.style[prefixedProp] !== 'undefined') { + return prefixedProp; + } + } + + return null; +} + +/** + * Creates a div element + * @return {Element} + */ +function div() { + return document.createElement('div'); +} + +/** + * Creates a popper element then returns it + * @param {Number} id - the popper id + * @param {String} title - the tooltip's `title` attribute + * @param {Object} options - individual options + * @return {Element} - the popper element + */ +function createPopperElement(id, title, options) { + var popper = div(); + popper.setAttribute('class', 'tippy-popper'); + popper.setAttribute('role', 'tooltip'); + popper.setAttribute('id', 'tippy-' + id); + popper.style.zIndex = options.zIndex; + popper.style.maxWidth = options.maxWidth; + + var tooltip = div(); + tooltip.setAttribute('class', 'tippy-tooltip'); + tooltip.setAttribute('data-size', options.size); + tooltip.setAttribute('data-animation', options.animation); + tooltip.setAttribute('data-state', 'hidden'); + options.theme.split(' ').forEach(function (t) { + tooltip.classList.add(t + '-theme'); + }); + + var content = div(); + content.setAttribute('class', 'tippy-content'); + + if (options.arrow) { + var arrow = div(); + arrow.style[prefix('transform')] = options.arrowTransform; + + if (options.arrowType === 'round') { + arrow.classList.add('tippy-roundarrow'); + arrow.innerHTML = ''; + } else { + arrow.classList.add('tippy-arrow'); + } + + tooltip.appendChild(arrow); + } + + if (options.animateFill) { + // Create animateFill circle element for animation + tooltip.setAttribute('data-animatefill', ''); + var backdrop = div(); + backdrop.classList.add('tippy-backdrop'); + backdrop.setAttribute('data-state', 'hidden'); + tooltip.appendChild(backdrop); + } + + if (options.inertia) { + // Change transition timing function cubic bezier + tooltip.setAttribute('data-inertia', ''); + } + + if (options.interactive) { + tooltip.setAttribute('data-interactive', ''); + } + + var html = options.html; + if (html) { + var templateId = void 0; + + if (html instanceof Element) { + content.appendChild(html); + templateId = '#' + (html.id || 'tippy-html-template'); + } else { + // trick linters: https://github.com/atomiks/tippyjs/issues/197 + //content[true && 'innerHTML'] = document.querySelector(html)[true && 'innerHTML']; + templateId = html; + } + + popper.setAttribute('data-html', ''); + tooltip.setAttribute('data-template-id', templateId); + + if (options.interactive) { + popper.setAttribute('tabindex', '-1'); + } + } else { + content[options.allowTitleHTML ? 'innerHTML' : 'textContent'] = title; + } + + tooltip.appendChild(content); + popper.appendChild(tooltip); + + return popper; +} + +/** + * Creates a trigger by adding the necessary event listeners to the reference element + * @param {String} eventType - the custom event specified in the `trigger` setting + * @param {Element} reference + * @param {Object} handlers - the handlers for each event + * @param {Object} options + * @return {Array} - array of listener objects + */ +function createTrigger(eventType, reference, handlers, options) { + var onTrigger = handlers.onTrigger, + onMouseLeave = handlers.onMouseLeave, + onBlur = handlers.onBlur, + onDelegateShow = handlers.onDelegateShow, + onDelegateHide = handlers.onDelegateHide; + + var listeners = []; + + if (eventType === 'manual') return listeners; + + var on = function on(eventType, handler) { + reference.addEventListener(eventType, handler); + listeners.push({ event: eventType, handler: handler }); + }; + + if (!options.target) { + on(eventType, onTrigger); + + if (browser.supportsTouch && options.touchHold) { + on('touchstart', onTrigger); + on('touchend', onMouseLeave); + } + if (eventType === 'mouseenter') { + on('mouseleave', onMouseLeave); + } + if (eventType === 'focus') { + on(isIE ? 'focusout' : 'blur', onBlur); + } + } else { + if (browser.supportsTouch && options.touchHold) { + on('touchstart', onDelegateShow); + on('touchend', onDelegateHide); + } + if (eventType === 'mouseenter') { + on('mouseover', onDelegateShow); + on('mouseout', onDelegateHide); + } + if (eventType === 'focus') { + on('focusin', onDelegateShow); + on('focusout', onDelegateHide); + } + if (eventType === 'click') { + on('click', onDelegateShow); + } + } + + return listeners; +} + +var classCallCheck = function (instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + + + + + + + +var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/** + * Returns an object of settings to override global settings + * @param {Element} reference + * @param {Object} instanceOptions + * @return {Object} - individual options + */ +function getIndividualOptions(reference, instanceOptions) { + var options = defaultsKeys.reduce(function (acc, key) { + var val = reference.getAttribute('data-tippy-' + key.toLowerCase()) || instanceOptions[key]; + + // Convert strings to booleans + if (val === 'false') val = false; + if (val === 'true') val = true; + + // Convert number strings to true numbers + if (isFinite(val) && !isNaN(parseFloat(val))) { + val = parseFloat(val); + } + + // Convert array strings to actual arrays + if (key !== 'target' && typeof val === 'string' && val.trim().charAt(0) === '[') { + val = JSON.parse(val); + } + + acc[key] = val; + + return acc; + }, {}); + + return _extends({}, instanceOptions, options); +} + +/** + * Evaluates/modifies the options object for appropriate behavior + * @param {Element|Object} reference + * @param {Object} options + * @return {Object} modified/evaluated options + */ +function evaluateOptions(reference, options) { + // animateFill is disabled if an arrow is true + if (options.arrow) { + options.animateFill = false; + } + + if (options.appendTo && typeof options.appendTo === 'function') { + options.appendTo = options.appendTo(); + } + + if (typeof options.html === 'function') { + options.html = options.html(reference); + } + + return options; +} + +/** + * Returns inner elements of the popper element + * @param {Element} popper + * @return {Object} + */ +function getInnerElements(popper) { + var select = function select(s) { + return popper.querySelector(s); + }; + return { + tooltip: select(selectors.TOOLTIP), + backdrop: select(selectors.BACKDROP), + content: select(selectors.CONTENT), + arrow: select(selectors.ARROW) || select(selectors.ROUND_ARROW) + }; +} + +/** + * Removes the title from an element, setting `data-original-title` + * appropriately + * @param {Element} el + */ +function removeTitle(el) { + var title = el.getAttribute('title'); + // Only set `data-original-title` attr if there is a title + if (title) { + el.setAttribute('data-original-title', title); + } + el.removeAttribute('title'); +} + +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.14.3 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var isBrowser$1 = typeof window !== 'undefined' && typeof document !== 'undefined'; + +var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; +var timeoutDuration = 0; +for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { + if (isBrowser$1 && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) { + timeoutDuration = 1; + break; + } +} + +function microtaskDebounce(fn) { + var called = false; + return function () { + if (called) { + return; + } + called = true; + window.Promise.resolve().then(function () { + called = false; + fn(); + }); + }; +} + +function taskDebounce(fn) { + var scheduled = false; + return function () { + if (!scheduled) { + scheduled = true; + setTimeout(function () { + scheduled = false; + fn(); + }, timeoutDuration); + } + }; +} + +var supportsMicroTasks = isBrowser$1 && window.Promise; + +/** +* Create a debounced version of a method, that's asynchronously deferred +* but called in the minimum time possible. +* +* @method +* @memberof Popper.Utils +* @argument {Function} fn +* @returns {Function} +*/ +var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce; + +/** + * Check if the given variable is a function + * @method + * @memberof Popper.Utils + * @argument {Any} functionToCheck - variable to check + * @returns {Boolean} answer to: is a function? + */ +function isFunction(functionToCheck) { + var getType = {}; + return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'; +} + +/** + * Get CSS computed property of the given element + * @method + * @memberof Popper.Utils + * @argument {Eement} element + * @argument {String} property + */ +function getStyleComputedProperty(element, property) { + if (element.nodeType !== 1) { + return []; + } + // NOTE: 1 DOM access here + var css = getComputedStyle(element, null); + return property ? css[property] : css; +} + +/** + * Returns the parentNode or the host of the element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} parent + */ +function getParentNode(element) { + if (element.nodeName === 'HTML') { + return element; + } + return element.parentNode || element.host; +} + +/** + * Returns the scrolling parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} scroll parent + */ +function getScrollParent(element) { + // Return body, `getScroll` will take care to get the correct `scrollTop` from it + if (!element) { + return document.body; + } + + switch (element.nodeName) { + case 'HTML': + case 'BODY': + return element.ownerDocument.body; + case '#document': + return element.body; + } + + // Firefox want us to check `-x` and `-y` variations as well + + var _getStyleComputedProp = getStyleComputedProperty(element), + overflow = _getStyleComputedProp.overflow, + overflowX = _getStyleComputedProp.overflowX, + overflowY = _getStyleComputedProp.overflowY; + + if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) { + return element; + } + + return getScrollParent(getParentNode(element)); +} + +var isIE11 = isBrowser$1 && !!(window.MSInputMethodContext && document.documentMode); +var isIE10 = isBrowser$1 && /MSIE 10/.test(navigator.userAgent); + +/** + * Determines if the browser is Internet Explorer + * @method + * @memberof Popper.Utils + * @param {Number} version to check + * @returns {Boolean} isIE + */ +function isIE$1(version) { + if (version === 11) { + return isIE11; + } + if (version === 10) { + return isIE10; + } + return isIE11 || isIE10; +} + +/** + * Returns the offset parent of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} offset parent + */ +function getOffsetParent(element) { + if (!element) { + return document.documentElement; + } + + var noOffsetParent = isIE$1(10) ? document.body : null; + + // NOTE: 1 DOM access here + var offsetParent = element.offsetParent; + // Skip hidden elements which don't have an offsetParent + while (offsetParent === noOffsetParent && element.nextElementSibling) { + offsetParent = (element = element.nextElementSibling).offsetParent; + } + + var nodeName = offsetParent && offsetParent.nodeName; + + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + return element ? element.ownerDocument.documentElement : document.documentElement; + } + + // .offsetParent will return the closest TD or TABLE in case + // no offsetParent is present, I hate this job... + if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') { + return getOffsetParent(offsetParent); + } + + return offsetParent; +} + +function isOffsetContainer(element) { + var nodeName = element.nodeName; + + if (nodeName === 'BODY') { + return false; + } + return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element; +} + +/** + * Finds the root node (document, shadowDOM root) of the given element + * @method + * @memberof Popper.Utils + * @argument {Element} node + * @returns {Element} root node + */ +function getRoot(node) { + if (node.parentNode !== null) { + return getRoot(node.parentNode); + } + + return node; +} + +/** + * Finds the offset parent common to the two provided nodes + * @method + * @memberof Popper.Utils + * @argument {Element} element1 + * @argument {Element} element2 + * @returns {Element} common offset parent + */ +function findCommonOffsetParent(element1, element2) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { + return document.documentElement; + } + + // Here we make sure to give as "start" the element that comes first in the DOM + var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING; + var start = order ? element1 : element2; + var end = order ? element2 : element1; + + // Get common ancestor container + var range = document.createRange(); + range.setStart(start, 0); + range.setEnd(end, 0); + var commonAncestorContainer = range.commonAncestorContainer; + + // Both nodes are inside #document + + if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) { + if (isOffsetContainer(commonAncestorContainer)) { + return commonAncestorContainer; + } + + return getOffsetParent(commonAncestorContainer); + } + + // one of the nodes is inside shadowDOM, find which one + var element1root = getRoot(element1); + if (element1root.host) { + return findCommonOffsetParent(element1root.host, element2); + } else { + return findCommonOffsetParent(element1, getRoot(element2).host); + } +} + +/** + * Gets the scroll value of the given element in the given side (top and left) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {String} side `top` or `left` + * @returns {number} amount of scrolled pixels + */ +function getScroll(element) { + var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top'; + + var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; + var nodeName = element.nodeName; + + if (nodeName === 'BODY' || nodeName === 'HTML') { + var html = element.ownerDocument.documentElement; + var scrollingElement = element.ownerDocument.scrollingElement || html; + return scrollingElement[upperSide]; + } + + return element[upperSide]; +} + +/* + * Sum or subtract the element scroll values (left and top) from a given rect object + * @method + * @memberof Popper.Utils + * @param {Object} rect - Rect object you want to change + * @param {HTMLElement} element - The element from the function reads the scroll values + * @param {Boolean} subtract - set to true if you want to subtract the scroll values + * @return {Object} rect - The modifier rect object + */ +function includeScroll(rect, element) { + var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + var modifier = subtract ? -1 : 1; + rect.top += scrollTop * modifier; + rect.bottom += scrollTop * modifier; + rect.left += scrollLeft * modifier; + rect.right += scrollLeft * modifier; + return rect; +} + +/* + * Helper to detect borders of a given element + * @method + * @memberof Popper.Utils + * @param {CSSStyleDeclaration} styles + * Result of `getStyleComputedProperty` on the given element + * @param {String} axis - `x` or `y` + * @return {number} borders - The borders size of the given axis + */ + +function getBordersSize(styles, axis) { + var sideA = axis === 'x' ? 'Left' : 'Top'; + var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; + + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); +} + +function getSize(axis, body, html, computedStyle) { + return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE$1(10) ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0); +} + +function getWindowSizes() { + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE$1(10) && getComputedStyle(html); + + return { + height: getSize('Height', body, html, computedStyle), + width: getSize('Width', body, html, computedStyle) + }; +} + +var classCallCheck$1 = function classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +}; + +var createClass$1 = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; +}(); + +var defineProperty$1 = function defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +}; + +var _extends$1 = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; +}; + +/** + * Given element offsets, generate an output similar to getBoundingClientRect + * @method + * @memberof Popper.Utils + * @argument {Object} offsets + * @returns {Object} ClientRect like output + */ +function getClientRect(offsets) { + return _extends$1({}, offsets, { + right: offsets.left + offsets.width, + bottom: offsets.top + offsets.height + }); +} + +/** + * Get bounding client rect of given element + * @method + * @memberof Popper.Utils + * @param {HTMLElement} element + * @return {Object} client rect + */ +function getBoundingClientRect(element) { + var rect = {}; + + // IE10 10 FIX: Please, don't ask, the element isn't + // considered in DOM in some circumstances... + // This isn't reproducible in IE10 compatibility mode of IE11 + try { + if (isIE$1(10)) { + rect = element.getBoundingClientRect(); + var scrollTop = getScroll(element, 'top'); + var scrollLeft = getScroll(element, 'left'); + rect.top += scrollTop; + rect.left += scrollLeft; + rect.bottom += scrollTop; + rect.right += scrollLeft; + } else { + rect = element.getBoundingClientRect(); + } + } catch (e) {} + + var result = { + left: rect.left, + top: rect.top, + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + + // subtract scrollbar size from sizes + var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {}; + var width = sizes.width || element.clientWidth || result.right - result.left; + var height = sizes.height || element.clientHeight || result.bottom - result.top; + + var horizScrollbar = element.offsetWidth - width; + var vertScrollbar = element.offsetHeight - height; + + // if an hypothetical scrollbar is detected, we must be sure it's not a `border` + // we make this check conditional for performance reasons + if (horizScrollbar || vertScrollbar) { + var styles = getStyleComputedProperty(element); + horizScrollbar -= getBordersSize(styles, 'x'); + vertScrollbar -= getBordersSize(styles, 'y'); + + result.width -= horizScrollbar; + result.height -= vertScrollbar; + } + + return getClientRect(result); +} + +function getOffsetRectRelativeToArbitraryNode(children, parent) { + var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + var isIE10 = isIE$1(10); + var isHTML = parent.nodeName === 'HTML'; + var childrenRect = getBoundingClientRect(children); + var parentRect = getBoundingClientRect(parent); + var scrollParent = getScrollParent(children); + + var styles = getStyleComputedProperty(parent); + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); + + // In cases where the parent is fixed, we must ignore negative scroll in offset calc + if (fixedPosition && parent.nodeName === 'HTML') { + parentRect.top = Math.max(parentRect.top, 0); + parentRect.left = Math.max(parentRect.left, 0); + } + var offsets = getClientRect({ + top: childrenRect.top - parentRect.top - borderTopWidth, + left: childrenRect.left - parentRect.left - borderLeftWidth, + width: childrenRect.width, + height: childrenRect.height + }); + offsets.marginTop = 0; + offsets.marginLeft = 0; + + // Subtract margins of documentElement in case it's being used as parent + // we do this only on HTML because it's the only element that behaves + // differently when margins are applied to it. The margins are included in + // the box of the documentElement, in the other cases not. + if (!isIE10 && isHTML) { + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); + + offsets.top -= borderTopWidth - marginTop; + offsets.bottom -= borderTopWidth - marginTop; + offsets.left -= borderLeftWidth - marginLeft; + offsets.right -= borderLeftWidth - marginLeft; + + // Attach marginTop and marginLeft because in some circumstances we may need them + offsets.marginTop = marginTop; + offsets.marginLeft = marginLeft; + } + + if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') { + offsets = includeScroll(offsets, parent); + } + + return offsets; +} + +function getViewportOffsetRectRelativeToArtbitraryNode(element) { + var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var html = element.ownerDocument.documentElement; + var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html); + var width = Math.max(html.clientWidth, window.innerWidth || 0); + var height = Math.max(html.clientHeight, window.innerHeight || 0); + + var scrollTop = !excludeScroll ? getScroll(html) : 0; + var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0; + + var offset = { + top: scrollTop - relativeOffset.top + relativeOffset.marginTop, + left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft, + width: width, + height: height + }; + + return getClientRect(offset); +} + +/** + * Check if the given element is fixed or is inside a fixed parent + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @argument {Element} customContainer + * @returns {Boolean} answer to "isFixed?" + */ +function isFixed(element) { + var nodeName = element.nodeName; + if (nodeName === 'BODY' || nodeName === 'HTML') { + return false; + } + if (getStyleComputedProperty(element, 'position') === 'fixed') { + return true; + } + return isFixed(getParentNode(element)); +} + +/** + * Finds the first parent of an element that has a transformed property defined + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Element} first transformed parent or documentElement + */ + +function getFixedPositionOffsetParent(element) { + // This check is needed to avoid errors in case one of the elements isn't defined for any reason + if (!element || !element.parentElement || isIE$1()) { + return document.documentElement; + } + var el = element.parentElement; + while (el && getStyleComputedProperty(el, 'transform') === 'none') { + el = el.parentElement; + } + return el || document.documentElement; +} + +/** + * Computed the boundaries limits and return them + * @method + * @memberof Popper.Utils + * @param {HTMLElement} popper + * @param {HTMLElement} reference + * @param {number} padding + * @param {HTMLElement} boundariesElement - Element used to define the boundaries + * @param {Boolean} fixedPosition - Is in fixed position mode + * @returns {Object} Coordinates of the boundaries + */ +function getBoundaries(popper, reference, padding, boundariesElement) { + var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; + + // NOTE: 1 DOM access here + + var boundaries = { top: 0, left: 0 }; + var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + + // Handle viewport case + if (boundariesElement === 'viewport') { + boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition); + } else { + // Handle other cases based on DOM element used as boundaries + var boundariesNode = void 0; + if (boundariesElement === 'scrollParent') { + boundariesNode = getScrollParent(getParentNode(reference)); + if (boundariesNode.nodeName === 'BODY') { + boundariesNode = popper.ownerDocument.documentElement; + } + } else if (boundariesElement === 'window') { + boundariesNode = popper.ownerDocument.documentElement; + } else { + boundariesNode = boundariesElement; + } + + var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); + + // In case of HTML, we need a different computation + if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) { + var _getWindowSizes = getWindowSizes(), + height = _getWindowSizes.height, + width = _getWindowSizes.width; + + boundaries.top += offsets.top - offsets.marginTop; + boundaries.bottom = height + offsets.top; + boundaries.left += offsets.left - offsets.marginLeft; + boundaries.right = width + offsets.left; + } else { + // for all the other DOM elements, this one is good + boundaries = offsets; + } + } + + // Add paddings + boundaries.left += padding; + boundaries.top += padding; + boundaries.right -= padding; + boundaries.bottom -= padding; + + return boundaries; +} + +function getArea(_ref) { + var width = _ref.width, + height = _ref.height; + + return width * height; +} + +/** + * Utility used to transform the `auto` placement to the placement with more + * available space. + * @method + * @memberof Popper.Utils + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) { + var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0; + + if (placement.indexOf('auto') === -1) { + return placement; + } + + var boundaries = getBoundaries(popper, reference, padding, boundariesElement); + + var rects = { + top: { + width: boundaries.width, + height: refRect.top - boundaries.top + }, + right: { + width: boundaries.right - refRect.right, + height: boundaries.height + }, + bottom: { + width: boundaries.width, + height: boundaries.bottom - refRect.bottom + }, + left: { + width: refRect.left - boundaries.left, + height: boundaries.height + } + }; + + var sortedAreas = Object.keys(rects).map(function (key) { + return _extends$1({ + key: key + }, rects[key], { + area: getArea(rects[key]) + }); + }).sort(function (a, b) { + return b.area - a.area; + }); + + var filteredAreas = sortedAreas.filter(function (_ref2) { + var width = _ref2.width, + height = _ref2.height; + return width >= popper.clientWidth && height >= popper.clientHeight; + }); + + var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key; + + var variation = placement.split('-')[1]; + + return computedPlacement + (variation ? '-' + variation : ''); +} + +/** + * Get offsets to the reference element + * @method + * @memberof Popper.Utils + * @param {Object} state + * @param {Element} popper - the popper element + * @param {Element} reference - the reference element (the popper will be relative to this) + * @param {Element} fixedPosition - is in fixed position mode + * @returns {Object} An object containing the offsets which will be applied to the popper + */ +function getReferenceOffsets(state, popper, reference) { + var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; + + var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference); + return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition); +} + +/** + * Get the outer sizes of the given element (offset size + margins) + * @method + * @memberof Popper.Utils + * @argument {Element} element + * @returns {Object} object containing width and height properties + */ +function getOuterSizes(element) { + var styles = getComputedStyle(element); + var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); + var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); + var result = { + width: element.offsetWidth + y, + height: element.offsetHeight + x + }; + return result; +} + +/** + * Get the opposite placement of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement + * @returns {String} flipped placement + */ +function getOppositePlacement(placement) { + var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' }; + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash[matched]; + }); +} + +/** + * Get offsets to the popper + * @method + * @memberof Popper.Utils + * @param {Object} position - CSS position the Popper will get applied + * @param {HTMLElement} popper - the popper element + * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this) + * @param {String} placement - one of the valid placement options + * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper + */ +function getPopperOffsets(popper, referenceOffsets, placement) { + placement = placement.split('-')[0]; + + // Get popper node sizes + var popperRect = getOuterSizes(popper); + + // Add position, width and height to our offsets object + var popperOffsets = { + width: popperRect.width, + height: popperRect.height + }; + + // depending by the popper placement we have to compute its offsets slightly differently + var isHoriz = ['right', 'left'].indexOf(placement) !== -1; + var mainSide = isHoriz ? 'top' : 'left'; + var secondarySide = isHoriz ? 'left' : 'top'; + var measurement = isHoriz ? 'height' : 'width'; + var secondaryMeasurement = !isHoriz ? 'height' : 'width'; + + popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2; + if (placement === secondarySide) { + popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement]; + } else { + popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)]; + } + + return popperOffsets; +} + +/** + * Mimics the `find` method of Array + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ +function find(arr, check) { + // use native find if supported + if (Array.prototype.find) { + return arr.find(check); + } + + // use `filter` to obtain the same behavior of `find` + return arr.filter(check)[0]; +} + +/** + * Return the index of the matching object + * @method + * @memberof Popper.Utils + * @argument {Array} arr + * @argument prop + * @argument value + * @returns index or -1 + */ +function findIndex(arr, prop, value) { + // use native findIndex if supported + if (Array.prototype.findIndex) { + return arr.findIndex(function (cur) { + return cur[prop] === value; + }); + } + + // use `find` + `indexOf` if `findIndex` isn't supported + var match = find(arr, function (obj) { + return obj[prop] === value; + }); + return arr.indexOf(match); +} + +/** + * Loop trough the list of modifiers and run them in order, + * each of them will then edit the data object. + * @method + * @memberof Popper.Utils + * @param {dataObject} data + * @param {Array} modifiers + * @param {String} ends - Optional modifier name used as stopper + * @returns {dataObject} + */ +function runModifiers(modifiers, data, ends) { + var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends)); + + modifiersToRun.forEach(function (modifier) { + if (modifier['function']) { + // eslint-disable-line dot-notation + console.warn('`modifier.function` is deprecated, use `modifier.fn`!'); + } + var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation + if (modifier.enabled && isFunction(fn)) { + // Add properties to offsets to make them a complete clientRect object + // we do this before each modifier to make sure the previous one doesn't + // mess with these values + data.offsets.popper = getClientRect(data.offsets.popper); + data.offsets.reference = getClientRect(data.offsets.reference); + + data = fn(data, modifier); + } + }); + + return data; +} + +/** + * Updates the position of the popper, computing the new offsets and applying + * the new style.
+ * Prefer `scheduleUpdate` over `update` because of performance reasons. + * @method + * @memberof Popper + */ +function update() { + // if popper is destroyed, don't perform any further update + if (this.state.isDestroyed) { + return; + } + + var data = { + instance: this, + styles: {}, + arrowStyles: {}, + attributes: {}, + flipped: false, + offsets: {} + }; + + // compute reference element offsets + data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); + + // store the computed placement inside `originalPlacement` + data.originalPlacement = data.placement; + + data.positionFixed = this.options.positionFixed; + + // compute the popper offsets + data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement); + + data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; + + // run the modifiers + data = runModifiers(this.modifiers, data); + + // the first `update` will call `onCreate` callback + // the other ones will call `onUpdate` callback + if (!this.state.isCreated) { + this.state.isCreated = true; + this.options.onCreate(data); + } else { + this.options.onUpdate(data); + } +} + +/** + * Helper used to know if the given modifier is enabled. + * @method + * @memberof Popper.Utils + * @returns {Boolean} + */ +function isModifierEnabled(modifiers, modifierName) { + return modifiers.some(function (_ref) { + var name = _ref.name, + enabled = _ref.enabled; + return enabled && name === modifierName; + }); +} + +/** + * Get the prefixed supported property name + * @method + * @memberof Popper.Utils + * @argument {String} property (camelCase) + * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix) + */ +function getSupportedPropertyName(property) { + var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O']; + var upperProp = property.charAt(0).toUpperCase() + property.slice(1); + + for (var i = 0; i < prefixes.length; i++) { + var prefix = prefixes[i]; + var toCheck = prefix ? '' + prefix + upperProp : property; + if (typeof document.body.style[toCheck] !== 'undefined') { + return toCheck; + } + } + return null; +} + +/** + * Destroy the popper + * @method + * @memberof Popper + */ +function destroy() { + this.state.isDestroyed = true; + + // touch DOM only if `applyStyle` modifier is enabled + if (isModifierEnabled(this.modifiers, 'applyStyle')) { + this.popper.removeAttribute('x-placement'); + this.popper.style.position = ''; + this.popper.style.top = ''; + this.popper.style.left = ''; + this.popper.style.right = ''; + this.popper.style.bottom = ''; + this.popper.style.willChange = ''; + this.popper.style[getSupportedPropertyName('transform')] = ''; + } + + this.disableEventListeners(); + + // remove the popper if user explicity asked for the deletion on destroy + // do not use `remove` because IE11 doesn't support it + if (this.options.removeOnDestroy) { + this.popper.parentNode.removeChild(this.popper); + } + return this; +} + +/** + * Get the window associated with the element + * @argument {Element} element + * @returns {Window} + */ +function getWindow(element) { + var ownerDocument = element.ownerDocument; + return ownerDocument ? ownerDocument.defaultView : window; +} + +function attachToScrollParents(scrollParent, event, callback, scrollParents) { + var isBody = scrollParent.nodeName === 'BODY'; + var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; + target.addEventListener(event, callback, { passive: true }); + + if (!isBody) { + attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents); + } + scrollParents.push(target); +} + +/** + * Setup needed event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ +function setupEventListeners(reference, options, state, updateBound) { + // Resize event listener on window + state.updateBound = updateBound; + getWindow(reference).addEventListener('resize', state.updateBound, { passive: true }); + + // Scroll event listener on scroll parents + var scrollElement = getScrollParent(reference); + attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents); + state.scrollElement = scrollElement; + state.eventsEnabled = true; + + return state; +} + +/** + * It will add resize/scroll events and start recalculating + * position of the popper element when they are triggered. + * @method + * @memberof Popper + */ +function enableEventListeners() { + if (!this.state.eventsEnabled) { + this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate); + } +} + +/** + * Remove event listeners used to update the popper position + * @method + * @memberof Popper.Utils + * @private + */ +function removeEventListeners(reference, state) { + // Remove resize event listener on window + getWindow(reference).removeEventListener('resize', state.updateBound); + + // Remove scroll event listener on scroll parents + state.scrollParents.forEach(function (target) { + target.removeEventListener('scroll', state.updateBound); + }); + + // Reset state + state.updateBound = null; + state.scrollParents = []; + state.scrollElement = null; + state.eventsEnabled = false; + return state; +} + +/** + * It will remove resize/scroll events and won't recalculate popper position + * when they are triggered. It also won't trigger onUpdate callback anymore, + * unless you call `update` method manually. + * @method + * @memberof Popper + */ +function disableEventListeners() { + if (this.state.eventsEnabled) { + cancelAnimationFrame(this.scheduleUpdate); + this.state = removeEventListeners(this.reference, this.state); + } +} + +/** + * Tells if a given input is a number + * @method + * @memberof Popper.Utils + * @param {*} input to check + * @return {Boolean} + */ +function isNumeric(n) { + return n !== '' && !isNaN(parseFloat(n)) && isFinite(n); +} + +/** + * Set the style to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the style to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ +function setStyles(element, styles) { + Object.keys(styles).forEach(function (prop) { + var unit = ''; + // add unit if the value is numeric and is one of the following + if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) { + unit = 'px'; + } + element.style[prop] = styles[prop] + unit; + }); +} + +/** + * Set the attributes to the given popper + * @method + * @memberof Popper.Utils + * @argument {Element} element - Element to apply the attributes to + * @argument {Object} styles + * Object with a list of properties and values which will be applied to the element + */ +function setAttributes(element, attributes) { + Object.keys(attributes).forEach(function (prop) { + var value = attributes[prop]; + if (value !== false) { + element.setAttribute(prop, attributes[prop]); + } else { + element.removeAttribute(prop); + } + }); +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} data.styles - List of style properties - values to apply to popper element + * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The same data object + */ +function applyStyle(data) { + // any property present in `data.styles` will be applied to the popper, + // in this way we can make the 3rd party modifiers add custom styles to it + // Be aware, modifiers could override the properties defined in the previous + // lines of this modifier! + setStyles(data.instance.popper, data.styles); + + // any property present in `data.attributes` will be applied to the popper, + // they will be set as HTML attributes of the element + setAttributes(data.instance.popper, data.attributes); + + // if arrowElement is defined and arrowStyles has some properties + if (data.arrowElement && Object.keys(data.arrowStyles).length) { + setStyles(data.arrowElement, data.arrowStyles); + } + + return data; +} + +/** + * Set the x-placement attribute before everything else because it could be used + * to add margins to the popper margins needs to be calculated to get the + * correct popper offsets. + * @method + * @memberof Popper.modifiers + * @param {HTMLElement} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper + * @param {Object} options - Popper.js options + */ +function applyStyleOnLoad(reference, popper, options, modifierOptions, state) { + // compute reference element offsets + var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); + + // compute auto placement, store placement inside the data object, + // modifiers will be able to edit `placement` if needed + // and refer to originalPlacement to know the original value + var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding); + + popper.setAttribute('x-placement', placement); + + // Apply `position` to popper before anything else because + // without the position applied we can't guarantee correct computations + setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' }); + + return options; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function computeStyle(data, options) { + var x = options.x, + y = options.y; + var popper = data.offsets.popper; + + // Remove this legacy support in Popper.js v2 + + var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'applyStyle'; + }).gpuAcceleration; + if (legacyGpuAccelerationOption !== undefined) { + console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'); + } + var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration; + + var offsetParent = getOffsetParent(data.instance.popper); + var offsetParentRect = getBoundingClientRect(offsetParent); + + // Styles + var styles = { + position: popper.position + }; + + // Avoid blurry text by using full pixel integers. + // For pixel-perfect positioning, top/bottom prefers rounded + // values, while left/right prefers floored values. + var offsets = { + left: Math.floor(popper.left), + top: Math.round(popper.top), + bottom: Math.round(popper.bottom), + right: Math.floor(popper.right) + }; + + var sideA = x === 'bottom' ? 'top' : 'bottom'; + var sideB = y === 'right' ? 'left' : 'right'; + + // if gpuAcceleration is set to `true` and transform is supported, + // we use `translate3d` to apply the position to the popper we + // automatically use the supported prefixed version if needed + var prefixedProperty = getSupportedPropertyName('transform'); + + // now, let's make a step back and look at this code closely (wtf?) + // If the content of the popper grows once it's been positioned, it + // may happen that the popper gets misplaced because of the new content + // overflowing its reference element + // To avoid this problem, we provide two options (x and y), which allow + // the consumer to define the offset origin. + // If we position a popper on top of a reference element, we can set + // `x` to `top` to make the popper grow towards its top instead of + // its bottom. + var left = void 0, + top = void 0; + if (sideA === 'bottom') { + top = -offsetParentRect.height + offsets.bottom; + } else { + top = offsets.top; + } + if (sideB === 'right') { + left = -offsetParentRect.width + offsets.right; + } else { + left = offsets.left; + } + if (gpuAcceleration && prefixedProperty) { + styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)'; + styles[sideA] = 0; + styles[sideB] = 0; + styles.willChange = 'transform'; + } else { + // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties + var invertTop = sideA === 'bottom' ? -1 : 1; + var invertLeft = sideB === 'right' ? -1 : 1; + styles[sideA] = top * invertTop; + styles[sideB] = left * invertLeft; + styles.willChange = sideA + ', ' + sideB; + } + + // Attributes + var attributes = { + 'x-placement': data.placement + }; + + // Update `data` attributes, styles and arrowStyles + data.attributes = _extends$1({}, attributes, data.attributes); + data.styles = _extends$1({}, styles, data.styles); + data.arrowStyles = _extends$1({}, data.offsets.arrow, data.arrowStyles); + + return data; +} + +/** + * Helper used to know if the given modifier depends from another one.
+ * It checks if the needed modifier is listed and enabled. + * @method + * @memberof Popper.Utils + * @param {Array} modifiers - list of modifiers + * @param {String} requestingName - name of requesting modifier + * @param {String} requestedName - name of requested modifier + * @returns {Boolean} + */ +function isModifierRequired(modifiers, requestingName, requestedName) { + var requesting = find(modifiers, function (_ref) { + var name = _ref.name; + return name === requestingName; + }); + + var isRequired = !!requesting && modifiers.some(function (modifier) { + return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order; + }); + + if (!isRequired) { + var _requesting = '`' + requestingName + '`'; + var requested = '`' + requestedName + '`'; + console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!'); + } + return isRequired; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function arrow(data, options) { + var _data$offsets$arrow; + + // arrow depends on keepTogether in order to work + if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { + return data; + } + + var arrowElement = options.element; + + // if arrowElement is a string, suppose it's a CSS selector + if (typeof arrowElement === 'string') { + arrowElement = data.instance.popper.querySelector(arrowElement); + + // if arrowElement is not found, don't run the modifier + if (!arrowElement) { + return data; + } + } else { + // if the arrowElement isn't a query selector we must check that the + // provided DOM node is child of its popper node + if (!data.instance.popper.contains(arrowElement)) { + console.warn('WARNING: `arrow.element` must be child of its popper element!'); + return data; + } + } + + var placement = data.placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isVertical = ['left', 'right'].indexOf(placement) !== -1; + + var len = isVertical ? 'height' : 'width'; + var sideCapitalized = isVertical ? 'Top' : 'Left'; + var side = sideCapitalized.toLowerCase(); + var altSide = isVertical ? 'left' : 'top'; + var opSide = isVertical ? 'bottom' : 'right'; + var arrowElementSize = getOuterSizes(arrowElement)[len]; + + // + // extends keepTogether behavior making sure the popper and its + // reference have enough pixels in conjuction + // + + // top/left side + if (reference[opSide] - arrowElementSize < popper[side]) { + data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize); + } + // bottom/right side + if (reference[side] + arrowElementSize > popper[opSide]) { + data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; + } + data.offsets.popper = getClientRect(data.offsets.popper); + + // compute center of the popper + var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; + + // Compute the sideValue using the updated popper offsets + // take popper margin in account because we don't have this info available + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; + + // prevent arrowElement from being placed not contiguously to its popper + sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); + + data.arrowElement = arrowElement; + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty$1(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty$1(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); + + return data; +} + +/** + * Get the opposite placement variation of the given one + * @method + * @memberof Popper.Utils + * @argument {String} placement variation + * @returns {String} flipped placement variation + */ +function getOppositeVariation(variation) { + if (variation === 'end') { + return 'start'; + } else if (variation === 'start') { + return 'end'; + } + return variation; +} + +/** + * List of accepted placements to use as values of the `placement` option.
+ * Valid placements are: + * - `auto` + * - `top` + * - `right` + * - `bottom` + * - `left` + * + * Each placement can have a variation from this list: + * - `-start` + * - `-end` + * + * Variations are interpreted easily if you think of them as the left to right + * written languages. Horizontally (`top` and `bottom`), `start` is left and `end` + * is right.
+ * Vertically (`left` and `right`), `start` is top and `end` is bottom. + * + * Some valid examples are: + * - `top-end` (on top of reference, right aligned) + * - `right-start` (on right of reference, top aligned) + * - `bottom` (on bottom, centered) + * - `auto-right` (on the side with more space available, alignment depends by placement) + * + * @static + * @type {Array} + * @enum {String} + * @readonly + * @method placements + * @memberof Popper + */ +var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; + +// Get rid of `auto` `auto-start` and `auto-end` +var validPlacements = placements.slice(3); + +/** + * Given an initial placement, returns all the subsequent placements + * clockwise (or counter-clockwise). + * + * @method + * @memberof Popper.Utils + * @argument {String} placement - A valid placement (it accepts variations) + * @argument {Boolean} counter - Set to true to walk the placements counterclockwise + * @returns {Array} placements including their variations + */ +function clockwise(placement) { + var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var index = validPlacements.indexOf(placement); + var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index)); + return counter ? arr.reverse() : arr; +} + +var BEHAVIORS = { + FLIP: 'flip', + CLOCKWISE: 'clockwise', + COUNTERCLOCKWISE: 'counterclockwise' +}; + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function flip(data, options) { + // if `inner` modifier is enabled, we can't use the `flip` modifier + if (isModifierEnabled(data.instance.modifiers, 'inner')) { + return data; + } + + if (data.flipped && data.placement === data.originalPlacement) { + // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides + return data; + } + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed); + + var placement = data.placement.split('-')[0]; + var placementOpposite = getOppositePlacement(placement); + var variation = data.placement.split('-')[1] || ''; + + var flipOrder = []; + + switch (options.behavior) { + case BEHAVIORS.FLIP: + flipOrder = [placement, placementOpposite]; + break; + case BEHAVIORS.CLOCKWISE: + flipOrder = clockwise(placement); + break; + case BEHAVIORS.COUNTERCLOCKWISE: + flipOrder = clockwise(placement, true); + break; + default: + flipOrder = options.behavior; + } + + flipOrder.forEach(function (step, index) { + if (placement !== step || flipOrder.length === index + 1) { + return data; + } + + placement = data.placement.split('-')[0]; + placementOpposite = getOppositePlacement(placement); + + var popperOffsets = data.offsets.popper; + var refOffsets = data.offsets.reference; + + // using floor because the reference offsets may contain decimals we are not going to consider here + var floor = Math.floor; + var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom); + + var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left); + var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right); + var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top); + var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom); + + var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; + + // flip the variation if required + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); + + if (overlapsRef || overflowsBoundaries || flippedVariation) { + // this boolean to detect any flip loop + data.flipped = true; + + if (overlapsRef || overflowsBoundaries) { + placement = flipOrder[index + 1]; + } + + if (flippedVariation) { + variation = getOppositeVariation(variation); + } + + data.placement = placement + (variation ? '-' + variation : ''); + + // this object contains `position`, we want to preserve it along with + // any additional property we may add in the future + data.offsets.popper = _extends$1({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement)); + + data = runModifiers(data.instance.modifiers, data, 'flip'); + } + }); + return data; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function keepTogether(data) { + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var placement = data.placement.split('-')[0]; + var floor = Math.floor; + var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; + var side = isVertical ? 'right' : 'bottom'; + var opSide = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + if (popper[side] < floor(reference[opSide])) { + data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement]; + } + if (popper[opSide] > floor(reference[side])) { + data.offsets.popper[opSide] = floor(reference[side]); + } + + return data; +} + +/** + * Converts a string containing value + unit into a px value number + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} str - Value + unit string + * @argument {String} measurement - `height` or `width` + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @returns {Number|String} + * Value in pixels, or original string if no values were extracted + */ +function toValue(str, measurement, popperOffsets, referenceOffsets) { + // separate value from unit + var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/); + var value = +split[1]; + var unit = split[2]; + + // If it's not a number it's an operator, I guess + if (!value) { + return str; + } + + if (unit.indexOf('%') === 0) { + var element = void 0; + switch (unit) { + case '%p': + element = popperOffsets; + break; + case '%': + case '%r': + default: + element = referenceOffsets; + } + + var rect = getClientRect(element); + return rect[measurement] / 100 * value; + } else if (unit === 'vh' || unit === 'vw') { + // if is a vh or vw, we calculate the size based on the viewport + var size = void 0; + if (unit === 'vh') { + size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); + } else { + size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); + } + return size / 100 * value; + } else { + // if is an explicit pixel unit, we get rid of the unit and keep the value + // if is an implicit unit, it's px, and we return just the value + return value; + } +} + +/** + * Parse an `offset` string to extrapolate `x` and `y` numeric offsets. + * @function + * @memberof {modifiers~offset} + * @private + * @argument {String} offset + * @argument {Object} popperOffsets + * @argument {Object} referenceOffsets + * @argument {String} basePlacement + * @returns {Array} a two cells array with x and y offsets in numbers + */ +function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) { + var offsets = [0, 0]; + + // Use height if placement is left or right and index is 0 otherwise use width + // in this way the first offset will use an axis and the second one + // will use the other one + var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; + + // Split the offset string to obtain a list of values and operands + // The regex addresses values with the plus or minus sign in front (+10, -20, etc) + var fragments = offset.split(/(\+|\-)/).map(function (frag) { + return frag.trim(); + }); + + // Detect if the offset string contains a pair of values or a single one + // they could be separated by comma or space + var divider = fragments.indexOf(find(fragments, function (frag) { + return frag.search(/,|\s/) !== -1; + })); + + if (fragments[divider] && fragments[divider].indexOf(',') === -1) { + console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.'); + } + + // If divider is found, we divide the list of values and operands to divide + // them by ofset X and Y. + var splitRegex = /\s*,\s*|\s+/; + var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; + + // Convert the values with units to absolute pixels to allow our computations + ops = ops.map(function (op, index) { + // Most of the units rely on the orientation of the popper + var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width'; + var mergeWithPrevious = false; + return op + // This aggregates any `+` or `-` sign that aren't considered operators + // e.g.: 10 + +5 => [10, +, +5] + .reduce(function (a, b) { + if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) { + a[a.length - 1] = b; + mergeWithPrevious = true; + return a; + } else if (mergeWithPrevious) { + a[a.length - 1] += b; + mergeWithPrevious = false; + return a; + } else { + return a.concat(b); + } + }, []) + // Here we convert the string values into number values (in px) + .map(function (str) { + return toValue(str, measurement, popperOffsets, referenceOffsets); + }); + }); + + // Loop trough the offsets arrays and execute the operations + ops.forEach(function (op, index) { + op.forEach(function (frag, index2) { + if (isNumeric(frag)) { + offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1); + } + }); + }); + return offsets; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @argument {Number|String} options.offset=0 + * The offset value as described in the modifier description + * @returns {Object} The data object, properly modified + */ +function offset(data, _ref) { + var offset = _ref.offset; + var placement = data.placement, + _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var basePlacement = placement.split('-')[0]; + + var offsets = void 0; + if (isNumeric(+offset)) { + offsets = [+offset, 0]; + } else { + offsets = parseOffset(offset, popper, reference, basePlacement); + } + + if (basePlacement === 'left') { + popper.top += offsets[0]; + popper.left -= offsets[1]; + } else if (basePlacement === 'right') { + popper.top += offsets[0]; + popper.left += offsets[1]; + } else if (basePlacement === 'top') { + popper.left += offsets[0]; + popper.top -= offsets[1]; + } else if (basePlacement === 'bottom') { + popper.left += offsets[0]; + popper.top += offsets[1]; + } + + data.popper = popper; + return data; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function preventOverflow(data, options) { + var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); + + // If offsetParent is the reference element, we really want to + // go one step up and use the next offsetParent as reference to + // avoid to make this modifier completely useless and look like broken + if (data.instance.reference === boundariesElement) { + boundariesElement = getOffsetParent(boundariesElement); + } + + // NOTE: DOM access here + // resets the popper's position so that the document size can be calculated excluding + // the size of the popper element itself + var transformProp = getSupportedPropertyName('transform'); + var popperStyles = data.instance.popper.style; // assignment to help minification + var top = popperStyles.top, + left = popperStyles.left, + transform = popperStyles[transformProp]; + + popperStyles.top = ''; + popperStyles.left = ''; + popperStyles[transformProp] = ''; + + var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); + + // NOTE: DOM access here + // restores the original style properties after the offsets have been computed + popperStyles.top = top; + popperStyles.left = left; + popperStyles[transformProp] = transform; + + options.boundaries = boundaries; + + var order = options.priority; + var popper = data.offsets.popper; + + var check = { + primary: function primary(placement) { + var value = popper[placement]; + if (popper[placement] < boundaries[placement] && !options.escapeWithReference) { + value = Math.max(popper[placement], boundaries[placement]); + } + return defineProperty$1({}, placement, value); + }, + secondary: function secondary(placement) { + var mainSide = placement === 'right' ? 'left' : 'top'; + var value = popper[mainSide]; + if (popper[placement] > boundaries[placement] && !options.escapeWithReference) { + value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height)); + } + return defineProperty$1({}, mainSide, value); + } + }; + + order.forEach(function (placement) { + var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary'; + popper = _extends$1({}, popper, check[side](placement)); + }); + + data.offsets.popper = popper; + + return data; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function shift(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var shiftvariation = placement.split('-')[1]; + + // if shift shiftvariation is specified, run the modifier + if (shiftvariation) { + var _data$offsets = data.offsets, + reference = _data$offsets.reference, + popper = _data$offsets.popper; + + var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1; + var side = isVertical ? 'left' : 'top'; + var measurement = isVertical ? 'width' : 'height'; + + var shiftOffsets = { + start: defineProperty$1({}, side, reference[side]), + end: defineProperty$1({}, side, reference[side] + reference[measurement] - popper[measurement]) + }; + + data.offsets.popper = _extends$1({}, popper, shiftOffsets[shiftvariation]); + } + + return data; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by update method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function hide(data) { + if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) { + return data; + } + + var refRect = data.offsets.reference; + var bound = find(data.instance.modifiers, function (modifier) { + return modifier.name === 'preventOverflow'; + }).boundaries; + + if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === true) { + return data; + } + + data.hide = true; + data.attributes['x-out-of-boundaries'] = ''; + } else { + // Avoid unnecessary DOM access if visibility hasn't changed + if (data.hide === false) { + return data; + } + + data.hide = false; + data.attributes['x-out-of-boundaries'] = false; + } + + return data; +} + +/** + * @function + * @memberof Modifiers + * @argument {Object} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {Object} The data object, properly modified + */ +function inner(data) { + var placement = data.placement; + var basePlacement = placement.split('-')[0]; + var _data$offsets = data.offsets, + popper = _data$offsets.popper, + reference = _data$offsets.reference; + + var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1; + + var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1; + + popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0); + + data.placement = getOppositePlacement(placement); + data.offsets.popper = getClientRect(popper); + + return data; +} + +/** + * Modifier function, each modifier can have a function of this type assigned + * to its `fn` property.
+ * These functions will be called on each update, this means that you must + * make sure they are performant enough to avoid performance bottlenecks. + * + * @function ModifierFn + * @argument {dataObject} data - The data object generated by `update` method + * @argument {Object} options - Modifiers configuration and options + * @returns {dataObject} The data object, properly modified + */ + +/** + * Modifiers are plugins used to alter the behavior of your poppers.
+ * Popper.js uses a set of 9 modifiers to provide all the basic functionalities + * needed by the library. + * + * Usually you don't want to override the `order`, `fn` and `onLoad` props. + * All the other properties are configurations that could be tweaked. + * @namespace modifiers + */ +var modifiers = { + /** + * Modifier used to shift the popper on the start or end of its reference + * element.
+ * It will read the variation of the `placement` property.
+ * It can be one either `-end` or `-start`. + * @memberof modifiers + * @inner + */ + shift: { + /** @prop {number} order=100 - Index used to define the order of execution */ + order: 100, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: shift + }, + + /** + * The `offset` modifier can shift your popper on both its axis. + * + * It accepts the following units: + * - `px` or unitless, interpreted as pixels + * - `%` or `%r`, percentage relative to the length of the reference element + * - `%p`, percentage relative to the length of the popper element + * - `vw`, CSS viewport width unit + * - `vh`, CSS viewport height unit + * + * For length is intended the main axis relative to the placement of the popper.
+ * This means that if the placement is `top` or `bottom`, the length will be the + * `width`. In case of `left` or `right`, it will be the height. + * + * You can provide a single value (as `Number` or `String`), or a pair of values + * as `String` divided by a comma or one (or more) white spaces.
+ * The latter is a deprecated method because it leads to confusion and will be + * removed in v2.
+ * Additionally, it accepts additions and subtractions between different units. + * Note that multiplications and divisions aren't supported. + * + * Valid examples are: + * ``` + * 10 + * '10%' + * '10, 10' + * '10%, 10' + * '10 + 10%' + * '10 - 5vh + 3%' + * '-10px + 5vh, 5px - 6%' + * ``` + * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap + * > with their reference element, unfortunately, you will have to disable the `flip` modifier. + * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373) + * + * @memberof modifiers + * @inner + */ + offset: { + /** @prop {number} order=200 - Index used to define the order of execution */ + order: 200, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: offset, + /** @prop {Number|String} offset=0 + * The offset value as described in the modifier description + */ + offset: 0 + }, + + /** + * Modifier used to prevent the popper from being positioned outside the boundary. + * + * An scenario exists where the reference itself is not within the boundaries.
+ * We can say it has "escaped the boundaries" — or just "escaped".
+ * In this case we need to decide whether the popper should either: + * + * - detach from the reference and remain "trapped" in the boundaries, or + * - if it should ignore the boundary and "escape with its reference" + * + * When `escapeWithReference` is set to`true` and reference is completely + * outside its boundaries, the popper will overflow (or completely leave) + * the boundaries in order to remain attached to the edge of the reference. + * + * @memberof modifiers + * @inner + */ + preventOverflow: { + /** @prop {number} order=300 - Index used to define the order of execution */ + order: 300, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: preventOverflow, + /** + * @prop {Array} [priority=['left','right','top','bottom']] + * Popper will try to prevent overflow following these priorities by default, + * then, it could overflow on the left and on top of the `boundariesElement` + */ + priority: ['left', 'right', 'top', 'bottom'], + /** + * @prop {number} padding=5 + * Amount of pixel used to define a minimum distance between the boundaries + * and the popper this makes sure the popper has always a little padding + * between the edges of its container + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='scrollParent' + * Boundaries used by the modifier, can be `scrollParent`, `window`, + * `viewport` or any DOM element. + */ + boundariesElement: 'scrollParent' + }, + + /** + * Modifier used to make sure the reference and its popper stay near eachothers + * without leaving any gap between the two. Expecially useful when the arrow is + * enabled and you want to assure it to point to its reference element. + * It cares only about the first axis, you can still have poppers with margin + * between the popper and its reference element. + * @memberof modifiers + * @inner + */ + keepTogether: { + /** @prop {number} order=400 - Index used to define the order of execution */ + order: 400, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: keepTogether + }, + + /** + * This modifier is used to move the `arrowElement` of the popper to make + * sure it is positioned between the reference element and its popper element. + * It will read the outer size of the `arrowElement` node to detect how many + * pixels of conjuction are needed. + * + * It has no effect if no `arrowElement` is provided. + * @memberof modifiers + * @inner + */ + arrow: { + /** @prop {number} order=500 - Index used to define the order of execution */ + order: 500, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: arrow, + /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */ + element: '[x-arrow]' + }, + + /** + * Modifier used to flip the popper's placement when it starts to overlap its + * reference element. + * + * Requires the `preventOverflow` modifier before it in order to work. + * + * **NOTE:** this modifier will interrupt the current update cycle and will + * restart it if it detects the need to flip the placement. + * @memberof modifiers + * @inner + */ + flip: { + /** @prop {number} order=600 - Index used to define the order of execution */ + order: 600, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: flip, + /** + * @prop {String|Array} behavior='flip' + * The behavior used to change the popper's placement. It can be one of + * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid + * placements (with optional variations). + */ + behavior: 'flip', + /** + * @prop {number} padding=5 + * The popper will flip if it hits the edges of the `boundariesElement` + */ + padding: 5, + /** + * @prop {String|HTMLElement} boundariesElement='viewport' + * The element which will define the boundaries of the popper position, + * the popper will never be placed outside of the defined boundaries + * (except if keepTogether is enabled) + */ + boundariesElement: 'viewport' + }, + + /** + * Modifier used to make the popper flow toward the inner of the reference element. + * By default, when this modifier is disabled, the popper will be placed outside + * the reference element. + * @memberof modifiers + * @inner + */ + inner: { + /** @prop {number} order=700 - Index used to define the order of execution */ + order: 700, + /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */ + enabled: false, + /** @prop {ModifierFn} */ + fn: inner + }, + + /** + * Modifier used to hide the popper when its reference element is outside of the + * popper boundaries. It will set a `x-out-of-boundaries` attribute which can + * be used to hide with a CSS selector the popper when its reference is + * out of boundaries. + * + * Requires the `preventOverflow` modifier before it in order to work. + * @memberof modifiers + * @inner + */ + hide: { + /** @prop {number} order=800 - Index used to define the order of execution */ + order: 800, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: hide + }, + + /** + * Computes the style that will be applied to the popper element to gets + * properly positioned. + * + * Note that this modifier will not touch the DOM, it just prepares the styles + * so that `applyStyle` modifier can apply it. This separation is useful + * in case you need to replace `applyStyle` with a custom implementation. + * + * This modifier has `850` as `order` value to maintain backward compatibility + * with previous versions of Popper.js. Expect the modifiers ordering method + * to change in future major versions of the library. + * + * @memberof modifiers + * @inner + */ + computeStyle: { + /** @prop {number} order=850 - Index used to define the order of execution */ + order: 850, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: computeStyle, + /** + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3d transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties. + */ + gpuAcceleration: true, + /** + * @prop {string} [x='bottom'] + * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin. + * Change this if your popper should grow in a direction different from `bottom` + */ + x: 'bottom', + /** + * @prop {string} [x='left'] + * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin. + * Change this if your popper should grow in a direction different from `right` + */ + y: 'right' + }, + + /** + * Applies the computed styles to the popper element. + * + * All the DOM manipulations are limited to this modifier. This is useful in case + * you want to integrate Popper.js inside a framework or view library and you + * want to delegate all the DOM manipulations to it. + * + * Note that if you disable this modifier, you must make sure the popper element + * has its position set to `absolute` before Popper.js can do its work! + * + * Just disable this modifier and define you own to achieve the desired effect. + * + * @memberof modifiers + * @inner + */ + applyStyle: { + /** @prop {number} order=900 - Index used to define the order of execution */ + order: 900, + /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */ + enabled: true, + /** @prop {ModifierFn} */ + fn: applyStyle, + /** @prop {Function} */ + onLoad: applyStyleOnLoad, + /** + * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier + * @prop {Boolean} gpuAcceleration=true + * If true, it uses the CSS 3d transformation to position the popper. + * Otherwise, it will use the `top` and `left` properties. + */ + gpuAcceleration: undefined + } +}; + +/** + * The `dataObject` is an object containing all the informations used by Popper.js + * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks. + * @name dataObject + * @property {Object} data.instance The Popper.js instance + * @property {String} data.placement Placement applied to popper + * @property {String} data.originalPlacement Placement originally defined on init + * @property {Boolean} data.flipped True if popper has been flipped by flip modifier + * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper. + * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier + * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`) + * @property {Object} data.boundaries Offsets of the popper boundaries + * @property {Object} data.offsets The measurements of popper, reference and arrow elements. + * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values + * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0 + */ + +/** + * Default options provided to Popper.js constructor.
+ * These can be overriden using the `options` argument of Popper.js.
+ * To override an option, simply pass as 3rd argument an object with the same + * structure of this object, example: + * ``` + * new Popper(ref, pop, { + * modifiers: { + * preventOverflow: { enabled: false } + * } + * }) + * ``` + * @type {Object} + * @static + * @memberof Popper + */ +var Defaults = { + /** + * Popper's placement + * @prop {Popper.placements} placement='bottom' + */ + placement: 'bottom', + + /** + * Set this to true if you want popper to position it self in 'fixed' mode + * @prop {Boolean} positionFixed=false + */ + positionFixed: false, + + /** + * Whether events (resize, scroll) are initially enabled + * @prop {Boolean} eventsEnabled=true + */ + eventsEnabled: true, + + /** + * Set to true if you want to automatically remove the popper when + * you call the `destroy` method. + * @prop {Boolean} removeOnDestroy=false + */ + removeOnDestroy: false, + + /** + * Callback called when the popper is created.
+ * By default, is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onCreate} + */ + onCreate: function onCreate() {}, + + /** + * Callback called when the popper is updated, this callback is not called + * on the initialization/creation of the popper, but only on subsequent + * updates.
+ * By default, is set to no-op.
+ * Access Popper.js instance with `data.instance`. + * @prop {onUpdate} + */ + onUpdate: function onUpdate() {}, + + /** + * List of modifiers used to modify the offsets before they are applied to the popper. + * They provide most of the functionalities of Popper.js + * @prop {modifiers} + */ + modifiers: modifiers +}; + +/** + * @callback onCreate + * @param {dataObject} data + */ + +/** + * @callback onUpdate + * @param {dataObject} data + */ + +// Utils +// Methods +var Popper = function () { + /** + * Create a new Popper.js instance + * @class Popper + * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper + * @param {HTMLElement} popper - The HTML element used as popper. + * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults) + * @return {Object} instance - The generated Popper.js instance + */ + function Popper(reference, popper) { + var _this = this; + + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + classCallCheck$1(this, Popper); + + this.scheduleUpdate = function () { + return requestAnimationFrame(_this.update); + }; + + // make update() debounced, so that it only runs at most once-per-tick + this.update = debounce(this.update.bind(this)); + + // with {} we create a new object with the options inside it + this.options = _extends$1({}, Popper.Defaults, options); + + // init state + this.state = { + isDestroyed: false, + isCreated: false, + scrollParents: [] + }; + + // get reference and popper elements (allow jQuery wrappers) + this.reference = reference && reference.jquery ? reference[0] : reference; + this.popper = popper && popper.jquery ? popper[0] : popper; + + // Deep merge modifiers options + this.options.modifiers = {}; + Object.keys(_extends$1({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) { + _this.options.modifiers[name] = _extends$1({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {}); + }); + + // Refactoring modifiers' list (Object => Array) + this.modifiers = Object.keys(this.options.modifiers).map(function (name) { + return _extends$1({ + name: name + }, _this.options.modifiers[name]); + }) + // sort the modifiers by order + .sort(function (a, b) { + return a.order - b.order; + }); + + // modifiers have the ability to execute arbitrary code when Popper.js get inited + // such code is executed in the same order of its modifier + // they could add new properties to their options configuration + // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`! + this.modifiers.forEach(function (modifierOptions) { + if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) { + modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state); + } + }); + + // fire the first update to position the popper in the right place + this.update(); + + var eventsEnabled = this.options.eventsEnabled; + if (eventsEnabled) { + // setup event listeners, they will take care of update the position in specific situations + this.enableEventListeners(); + } + + this.state.eventsEnabled = eventsEnabled; + } + + // We can't use class properties because they don't get listed in the + // class prototype and break stuff like Sinon stubs + + + createClass$1(Popper, [{ + key: 'update', + value: function update$$1() { + return update.call(this); + } + }, { + key: 'destroy', + value: function destroy$$1() { + return destroy.call(this); + } + }, { + key: 'enableEventListeners', + value: function enableEventListeners$$1() { + return enableEventListeners.call(this); + } + }, { + key: 'disableEventListeners', + value: function disableEventListeners$$1() { + return disableEventListeners.call(this); + } + + /** + * Schedule an update, it will run on the next UI update available + * @method scheduleUpdate + * @memberof Popper + */ + + /** + * Collection of utilities useful when writing custom modifiers. + * Starting from version 1.7, this method is available only if you + * include `popper-utils.js` before `popper.js`. + * + * **DEPRECATION**: This way to access PopperUtils is deprecated + * and will be removed in v2! Use the PopperUtils module directly instead. + * Due to the high instability of the methods contained in Utils, we can't + * guarantee them to follow semver. Use them at your own risk! + * @static + * @private + * @type {Object} + * @deprecated since version 1.8 + * @member Utils + * @memberof Popper + */ + + }]); + return Popper; +}(); + +/** + * The `referenceObject` is an object that provides an interface compatible with Popper.js + * and lets you use it as replacement of a real DOM node.
+ * You can use this method to position a popper relatively to a set of coordinates + * in case you don't have a DOM node to use as reference. + * + * ``` + * new Popper(referenceObject, popperNode); + * ``` + * + * NB: This feature isn't supported in Internet Explorer 10 + * @name referenceObject + * @property {Function} data.getBoundingClientRect + * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method. + * @property {number} data.clientWidth + * An ES6 getter that will return the width of the virtual reference element. + * @property {number} data.clientHeight + * An ES6 getter that will return the height of the virtual reference element. + */ + +Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils; +Popper.placements = placements; +Popper.Defaults = Defaults; + +/** + * Triggers document reflow. + * Use void because some minifiers or engines think simply accessing the property + * is unnecessary. + * @param {Element} popper + */ +function reflow(popper) { + void popper.offsetHeight; +} + +/** + * Wrapper util for popper position updating. + * Updates the popper's position and invokes the callback on update. + * Hackish workaround until Popper 2.0's update() becomes sync. + * @param {Popper} popperInstance + * @param {Function} callback: to run once popper's position was updated + * @param {Boolean} updateAlreadyCalled: was scheduleUpdate() already called? + */ +function updatePopperPosition(popperInstance, callback, updateAlreadyCalled) { + var popper = popperInstance.popper, + options = popperInstance.options; + + var onCreate = options.onCreate; + var onUpdate = options.onUpdate; + + options.onCreate = options.onUpdate = function () { + reflow(popper), callback && callback(), onUpdate(); + options.onCreate = onCreate; + options.onUpdate = onUpdate; + }; + + if (!updateAlreadyCalled) { + popperInstance.scheduleUpdate(); + } +} + +/** + * Returns the core placement ('top', 'bottom', 'left', 'right') of a popper + * @param {Element} popper + * @return {String} + */ +function getPopperPlacement(popper) { + return popper.getAttribute('x-placement').replace(/-.+/, ''); +} + +/** + * Determines if the mouse's cursor is outside the interactive border + * @param {MouseEvent} event + * @param {Element} popper + * @param {Object} options + * @return {Boolean} + */ +function cursorIsOutsideInteractiveBorder(event, popper, options) { + if (!popper.getAttribute('x-placement')) return true; + + var x = event.clientX, + y = event.clientY; + var interactiveBorder = options.interactiveBorder, + distance = options.distance; + + + var rect = popper.getBoundingClientRect(); + var placement = getPopperPlacement(popper); + var borderWithDistance = interactiveBorder + distance; + + var exceeds = { + top: rect.top - y > interactiveBorder, + bottom: y - rect.bottom > interactiveBorder, + left: rect.left - x > interactiveBorder, + right: x - rect.right > interactiveBorder + }; + + switch (placement) { + case 'top': + exceeds.top = rect.top - y > borderWithDistance; + break; + case 'bottom': + exceeds.bottom = y - rect.bottom > borderWithDistance; + break; + case 'left': + exceeds.left = rect.left - x > borderWithDistance; + break; + case 'right': + exceeds.right = x - rect.right > borderWithDistance; + break; + } + + return exceeds.top || exceeds.bottom || exceeds.left || exceeds.right; +} + +/** + * Transforms the `arrowTransform` numbers based on the placement axis + * @param {String} type 'scale' or 'translate' + * @param {Number[]} numbers + * @param {Boolean} isVertical + * @param {Boolean} isReverse + * @return {String} + */ +function transformNumbersBasedOnPlacementAxis(type, numbers, isVertical, isReverse) { + if (!numbers.length) return ''; + + var transforms = { + scale: function () { + if (numbers.length === 1) { + return '' + numbers[0]; + } else { + return isVertical ? numbers[0] + ', ' + numbers[1] : numbers[1] + ', ' + numbers[0]; + } + }(), + translate: function () { + if (numbers.length === 1) { + return isReverse ? -numbers[0] + 'px' : numbers[0] + 'px'; + } else { + if (isVertical) { + return isReverse ? numbers[0] + 'px, ' + -numbers[1] + 'px' : numbers[0] + 'px, ' + numbers[1] + 'px'; + } else { + return isReverse ? -numbers[1] + 'px, ' + numbers[0] + 'px' : numbers[1] + 'px, ' + numbers[0] + 'px'; + } + } + }() + }; + + return transforms[type]; +} + +/** + * Transforms the `arrowTransform` x or y axis based on the placement axis + * @param {String} axis 'X', 'Y', '' + * @param {Boolean} isVertical + * @return {String} + */ +function transformAxis(axis, isVertical) { + if (!axis) return ''; + var map = { + X: 'Y', + Y: 'X' + }; + return isVertical ? axis : map[axis]; +} + +/** + * Computes and applies the necessary arrow transform + * @param {Element} popper + * @param {Element} arrow + * @param {String} arrowTransform + */ +function computeArrowTransform(popper, arrow, arrowTransform) { + var placement = getPopperPlacement(popper); + var isVertical = placement === 'top' || placement === 'bottom'; + var isReverse = placement === 'right' || placement === 'bottom'; + + var getAxis = function getAxis(re) { + var match = arrowTransform.match(re); + return match ? match[1] : ''; + }; + + var getNumbers = function getNumbers(re) { + var match = arrowTransform.match(re); + return match ? match[1].split(',').map(parseFloat) : []; + }; + + var re = { + translate: /translateX?Y?\(([^)]+)\)/, + scale: /scaleX?Y?\(([^)]+)\)/ + }; + + var matches = { + translate: { + axis: getAxis(/translate([XY])/), + numbers: getNumbers(re.translate) + }, + scale: { + axis: getAxis(/scale([XY])/), + numbers: getNumbers(re.scale) + } + }; + + var computedTransform = arrowTransform.replace(re.translate, 'translate' + transformAxis(matches.translate.axis, isVertical) + '(' + transformNumbersBasedOnPlacementAxis('translate', matches.translate.numbers, isVertical, isReverse) + ')').replace(re.scale, 'scale' + transformAxis(matches.scale.axis, isVertical) + '(' + transformNumbersBasedOnPlacementAxis('scale', matches.scale.numbers, isVertical, isReverse) + ')'); + + arrow.style[prefix('transform')] = computedTransform; +} + +/** + * Returns the distance taking into account the default distance due to + * the transform: translate setting in CSS + * @param {Number} distance + * @return {String} + */ +function getOffsetDistanceInPx(distance) { + return -(distance - defaults.distance) + 'px'; +} + +/** + * Waits until next repaint to execute a fn + * @param {Function} fn + */ +function defer(fn) { + requestAnimationFrame(function () { + setTimeout(fn, 1); + }); +} + +var matches = {}; + +if (isBrowser) { + var e = Element.prototype; + matches = e.matches || e.matchesSelector || e.webkitMatchesSelector || e.mozMatchesSelector || e.msMatchesSelector || function (s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s); + var i = matches.length; + while (--i >= 0 && matches.item(i) !== this) {} // eslint-disable-line no-empty + return i > -1; + }; +} + +var matches$1 = matches; + +/** + * Ponyfill to get the closest parent element + * @param {Element} element - child of parent to be returned + * @param {String} parentSelector - selector to match the parent if found + * @return {Element} + */ +function closest(element, parentSelector) { + var fn = Element.prototype.closest || function (selector) { + var el = this; + while (el) { + if (matches$1.call(el, selector)) { + return el; + } + el = el.parentElement; + } + }; + + return fn.call(element, parentSelector); +} + +/** + * Returns the value taking into account the value being either a number or array + * @param {Number|Array} value + * @param {Number} index + * @return {Number} + */ +function getValue(value, index) { + return Array.isArray(value) ? value[index] : value; +} + +/** + * Sets the visibility state of an element for transition to begin + * @param {Element[]} els - array of elements + * @param {String} type - 'visible' or 'hidden' + */ +function setVisibilityState(els, type) { + els.forEach(function (el) { + if (!el) return; + el.setAttribute('data-state', type); + }); +} + +/** + * Sets the transition property to each element + * @param {Element[]} els - Array of elements + * @param {String} value + */ +function applyTransitionDuration(els, value) { + els.filter(Boolean).forEach(function (el) { + el.style[prefix('transitionDuration')] = value + 'ms'; + }); +} + +/** + * Focuses an element while preventing a scroll jump if it's not entirely within the viewport + * @param {Element} el + */ +function focus(el) { + var x = window.scrollX || window.pageXOffset; + var y = window.scrollY || window.pageYOffset; + el.focus(); + scroll(x, y); +} + +var key = {}; +var store = function store(data) { + return function (k) { + return k === key && data; + }; +}; + +var Tippy = function () { + function Tippy(config) { + classCallCheck(this, Tippy); + + for (var _key in config) { + this[_key] = config[_key]; + } + + this.state = { + destroyed: false, + visible: false, + enabled: true + }; + + this._ = store({ + mutationObservers: [] + }); + } + + /** + * Enables the tooltip to allow it to show or hide + * @memberof Tippy + * @public + */ + + + createClass(Tippy, [{ + key: 'enable', + value: function enable() { + this.state.enabled = true; + } + + /** + * Disables the tooltip from showing or hiding, but does not destroy it + * @memberof Tippy + * @public + */ + + }, { + key: 'disable', + value: function disable() { + this.state.enabled = false; + } + + /** + * Shows the tooltip + * @param {Number} duration in milliseconds + * @memberof Tippy + * @public + */ + + }, { + key: 'show', + value: function show(duration) { + var _this = this; + + if (this.state.destroyed || !this.state.enabled) return; + + var popper = this.popper, + reference = this.reference, + options = this.options; + + var _getInnerElements = getInnerElements(popper), + tooltip = _getInnerElements.tooltip, + backdrop = _getInnerElements.backdrop, + content = _getInnerElements.content; + + // If the `dynamicTitle` option is true, the instance is allowed + // to be created with an empty title. Make sure that the tooltip + // content is not empty before showing it + + + if (options.dynamicTitle && !reference.getAttribute('data-original-title')) { + return; + } + + // Do not show tooltip if reference contains 'disabled' attribute. FF fix for #221 + if (reference.hasAttribute('disabled')) return; + + // Destroy tooltip if the reference element is no longer on the DOM + if (!reference.refObj && !document.documentElement.contains(reference)) { + this.destroy(); + return; + } + + options.onShow.call(popper, this); + + duration = getValue(duration !== undefined ? duration : options.duration, 0); + + // Prevent a transition when popper changes position + applyTransitionDuration([popper, tooltip, backdrop], 0); + + popper.style.visibility = 'visible'; + this.state.visible = true; + + _mount.call(this, function () { + if (!_this.state.visible) return; + + if (!_hasFollowCursorBehavior.call(_this)) { + // FIX: Arrow will sometimes not be positioned correctly. Force another update. + _this.popperInstance.scheduleUpdate(); + } + + // Set initial position near the cursor + if (_hasFollowCursorBehavior.call(_this)) { + _this.popperInstance.disableEventListeners(); + var delay = getValue(options.delay, 0); + var lastTriggerEvent = _this._(key).lastTriggerEvent; + if (lastTriggerEvent) { + _this._(key).followCursorListener(delay && _this._(key).lastMouseMoveEvent ? _this._(key).lastMouseMoveEvent : lastTriggerEvent); + } + } + + // Re-apply transition durations + applyTransitionDuration([tooltip, backdrop, backdrop ? content : null], duration); + + if (backdrop) { + getComputedStyle(backdrop)[prefix('transform')]; + } + + if (options.interactive) { + reference.classList.add('tippy-active'); + } + + if (options.sticky) { + _makeSticky.call(_this); + } + + setVisibilityState([tooltip, backdrop], 'visible'); + + _onTransitionEnd.call(_this, duration, function () { + if (!options.updateDuration) { + tooltip.classList.add('tippy-notransition'); + } + + if (options.interactive) { + focus(popper); + } + + reference.setAttribute('aria-describedby', 'tippy-' + _this.id); + + options.onShown.call(popper, _this); + }); + }); + } + + /** + * Hides the tooltip + * @param {Number} duration in milliseconds + * @memberof Tippy + * @public + */ + + }, { + key: 'hide', + value: function hide(duration) { + var _this2 = this; + + if (this.state.destroyed || !this.state.enabled) return; + + var popper = this.popper, + reference = this.reference, + options = this.options; + + var _getInnerElements2 = getInnerElements(popper), + tooltip = _getInnerElements2.tooltip, + backdrop = _getInnerElements2.backdrop, + content = _getInnerElements2.content; + + options.onHide.call(popper, this); + + duration = getValue(duration !== undefined ? duration : options.duration, 1); + + if (!options.updateDuration) { + tooltip.classList.remove('tippy-notransition'); + } + + if (options.interactive) { + reference.classList.remove('tippy-active'); + } + + popper.style.visibility = 'hidden'; + this.state.visible = false; + + applyTransitionDuration([tooltip, backdrop, backdrop ? content : null], duration); + + setVisibilityState([tooltip, backdrop], 'hidden'); + + if (options.interactive && options.trigger.indexOf('click') > -1) { + focus(reference); + } + + /* + * This call is deferred because sometimes when the tooltip is still transitioning in but hide() + * is called before it finishes, the CSS transition won't reverse quickly enough, meaning + * the CSS transition will finish 1-2 frames later, and onHidden() will run since the JS set it + * more quickly. It should actually be onShown(). Seems to be something Chrome does, not Safari + */ + defer(function () { + _onTransitionEnd.call(_this2, duration, function () { + if (_this2.state.visible || !options.appendTo.contains(popper)) return; + + if (!_this2._(key).isPreparingToShow) { + document.removeEventListener('mousemove', _this2._(key).followCursorListener); + _this2._(key).lastMouseMoveEvent = null; + } + + if (_this2.popperInstance) { + _this2.popperInstance.disableEventListeners(); + } + + reference.removeAttribute('aria-describedby'); + + options.appendTo.removeChild(popper); + + options.onHidden.call(popper, _this2); + }); + }); + } + + /** + * Destroys the tooltip instance + * @param {Boolean} destroyTargetInstances - relevant only when destroying delegates + * @memberof Tippy + * @public + */ + + }, { + key: 'destroy', + value: function destroy() { + var _this3 = this; + + var destroyTargetInstances = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + + if (this.state.destroyed) return; + + // Ensure the popper is hidden + if (this.state.visible) { + this.hide(0); + } + + this.listeners.forEach(function (listener) { + _this3.reference.removeEventListener(listener.event, listener.handler); + }); + + // Restore title + if (this.title) { + this.reference.setAttribute('title', this.title); + } + + delete this.reference._tippy; + + var attributes = ['data-original-title', 'data-tippy', 'data-tippy-delegate']; + attributes.forEach(function (attr) { + _this3.reference.removeAttribute(attr); + }); + + if (this.options.target && destroyTargetInstances) { + toArray(this.reference.querySelectorAll(this.options.target)).forEach(function (child) { + return child._tippy && child._tippy.destroy(); + }); + } + + if (this.popperInstance) { + this.popperInstance.destroy(); + } + + this._(key).mutationObservers.forEach(function (observer) { + observer.disconnect(); + }); + + this.state.destroyed = true; + } + }]); + return Tippy; +}(); + +/** + * ------------------------------------------------------------------------ + * Private methods + * ------------------------------------------------------------------------ + * Standalone functions to be called with the instance's `this` context to make + * them truly private and not accessible on the prototype + */ + +/** + * Determines if the tooltip instance has followCursor behavior + * @return {Boolean} + * @memberof Tippy + * @private + */ +function _hasFollowCursorBehavior() { + var lastTriggerEvent = this._(key).lastTriggerEvent; + return this.options.followCursor && !browser.usingTouch && lastTriggerEvent && lastTriggerEvent.type !== 'focus'; +} + +/** + * Creates the Tippy instance for the child target of the delegate container + * @param {Event} event + * @memberof Tippy + * @private + */ +function _createDelegateChildTippy(event) { + var targetEl = closest(event.target, this.options.target); + if (targetEl && !targetEl._tippy) { + var title = targetEl.getAttribute('title') || this.title; + if (title) { + targetEl.setAttribute('title', title); + tippy(targetEl, _extends({}, this.options, { target: null })); + _enter.call(targetEl._tippy, event); + } + } +} + +/** + * Method used by event listeners to invoke the show method, taking into account delays and + * the `wait` option + * @param {Event} event + * @memberof Tippy + * @private + */ +function _enter(event) { + var _this4 = this; + + var options = this.options; + + + _clearDelayTimeouts.call(this); + + if (this.state.visible) return; + + // Is a delegate, create Tippy instance for the child target + if (options.target) { + _createDelegateChildTippy.call(this, event); + return; + } + + this._(key).isPreparingToShow = true; + + if (options.wait) { + options.wait.call(this.popper, this.show.bind(this), event); + return; + } + + // If the tooltip has a delay, we need to be listening to the mousemove as soon as the trigger + // event is fired so that it's in the correct position upon mount. + if (_hasFollowCursorBehavior.call(this)) { + if (!this._(key).followCursorListener) { + _setFollowCursorListener.call(this); + } + + var _getInnerElements3 = getInnerElements(this.popper), + arrow = _getInnerElements3.arrow; + + if (arrow) arrow.style.margin = '0'; + document.addEventListener('mousemove', this._(key).followCursorListener); + } + + var delay = getValue(options.delay, 0); + + if (delay) { + this._(key).showTimeout = setTimeout(function () { + _this4.show(); + }, delay); + } else { + this.show(); + } +} + +/** + * Method used by event listeners to invoke the hide method, taking into account delays + * @memberof Tippy + * @private + */ +function _leave() { + var _this5 = this; + + _clearDelayTimeouts.call(this); + + if (!this.state.visible) return; + + this._(key).isPreparingToShow = false; + + var delay = getValue(this.options.delay, 1); + + if (delay) { + this._(key).hideTimeout = setTimeout(function () { + if (_this5.state.visible) { + _this5.hide(); + } + }, delay); + } else { + this.hide(); + } +} + +/** + * Returns relevant listeners for the instance + * @return {Object} of listeners + * @memberof Tippy + * @private + */ +function _getEventListeners() { + var _this6 = this; + + var onTrigger = function onTrigger(event) { + if (!_this6.state.enabled) return; + + var shouldStopEvent = browser.supportsTouch && browser.usingTouch && ['mouseenter', 'mouseover', 'focus'].indexOf(event.type) > -1; + + if (shouldStopEvent && _this6.options.touchHold) return; + + _this6._(key).lastTriggerEvent = event; + + // Toggle show/hide when clicking click-triggered tooltips + if (event.type === 'click' && _this6.options.hideOnClick !== 'persistent' && _this6.state.visible) { + _leave.call(_this6); + } else { + _enter.call(_this6, event); + } + }; + + var onMouseLeave = function onMouseLeave(event) { + if (['mouseleave', 'mouseout'].indexOf(event.type) > -1 && browser.supportsTouch && browser.usingTouch && _this6.options.touchHold) return; + + if (_this6.options.interactive) { + var hide = _leave.bind(_this6); + + var onMouseMove = function onMouseMove(event) { + var referenceCursorIsOver = closest(event.target, selectors.REFERENCE); + var cursorIsOverPopper = closest(event.target, selectors.POPPER) === _this6.popper; + var cursorIsOverReference = referenceCursorIsOver === _this6.reference; + + if (cursorIsOverPopper || cursorIsOverReference) return; + + if (cursorIsOutsideInteractiveBorder(event, _this6.popper, _this6.options)) { + document.body.removeEventListener('mouseleave', hide); + document.removeEventListener('mousemove', onMouseMove); + + _leave.call(_this6, onMouseMove); + } + }; + + document.body.addEventListener('mouseleave', hide); + document.addEventListener('mousemove', onMouseMove); + return; + } + + _leave.call(_this6); + }; + + var onBlur = function onBlur(event) { + if (event.target !== _this6.reference || browser.usingTouch) return; + + if (_this6.options.interactive) { + if (!event.relatedTarget) return; + if (closest(event.relatedTarget, selectors.POPPER)) return; + } + + _leave.call(_this6); + }; + + var onDelegateShow = function onDelegateShow(event) { + if (closest(event.target, _this6.options.target)) { + _enter.call(_this6, event); + } + }; + + var onDelegateHide = function onDelegateHide(event) { + if (closest(event.target, _this6.options.target)) { + _leave.call(_this6); + } + }; + + return { + onTrigger: onTrigger, + onMouseLeave: onMouseLeave, + onBlur: onBlur, + onDelegateShow: onDelegateShow, + onDelegateHide: onDelegateHide + }; +} + +/** + * Creates and returns a new popper instance + * @return {Popper} + * @memberof Tippy + * @private + */ +function _createPopperInstance() { + var _this7 = this; + + var popper = this.popper, + reference = this.reference, + options = this.options; + + var _getInnerElements4 = getInnerElements(popper), + tooltip = _getInnerElements4.tooltip; + + var popperOptions = options.popperOptions; + + var arrowSelector = options.arrowType === 'round' ? selectors.ROUND_ARROW : selectors.ARROW; + var arrow = tooltip.querySelector(arrowSelector); + + var config = _extends({ + placement: options.placement + }, popperOptions || {}, { + modifiers: _extends({}, popperOptions ? popperOptions.modifiers : {}, { + arrow: _extends({ + element: arrowSelector + }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.arrow : {}), + flip: _extends({ + enabled: options.flip, + padding: options.distance + 5 /* 5px from viewport boundary */ + , behavior: options.flipBehavior + }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.flip : {}), + offset: _extends({ + offset: options.offset + }, popperOptions && popperOptions.modifiers ? popperOptions.modifiers.offset : {}) + }), + onCreate: function onCreate() { + tooltip.style[getPopperPlacement(popper)] = getOffsetDistanceInPx(options.distance); + + if (arrow && options.arrowTransform) { + computeArrowTransform(popper, arrow, options.arrowTransform); + } + }, + onUpdate: function onUpdate() { + var styles = tooltip.style; + styles.top = ''; + styles.bottom = ''; + styles.left = ''; + styles.right = ''; + styles[getPopperPlacement(popper)] = getOffsetDistanceInPx(options.distance); + + if (arrow && options.arrowTransform) { + computeArrowTransform(popper, arrow, options.arrowTransform); + } + } + }); + + _addMutationObserver.call(this, { + target: popper, + callback: function callback() { + _this7.popperInstance.update(); + }, + options: { + childList: true, + subtree: true, + characterData: true + } + }); + + return new Popper(reference, popper, config); +} + +/** + * Appends the popper element to the DOM, updating or creating the popper instance + * @param {Function} callback + * @memberof Tippy + * @private + */ +function _mount(callback) { + var options = this.options; + + + if (!this.popperInstance) { + this.popperInstance = _createPopperInstance.call(this); + if (!options.livePlacement) { + this.popperInstance.disableEventListeners(); + } + } else { + this.popperInstance.scheduleUpdate(); + if (options.livePlacement && !_hasFollowCursorBehavior.call(this)) { + this.popperInstance.enableEventListeners(); + } + } + + // If the instance previously had followCursor behavior, it will be positioned incorrectly + // if triggered by `focus` afterwards - update the reference back to the real DOM element + if (!_hasFollowCursorBehavior.call(this)) { + var _getInnerElements5 = getInnerElements(this.popper), + arrow = _getInnerElements5.arrow; + + if (arrow) arrow.style.margin = ''; + this.popperInstance.reference = this.reference; + } + + updatePopperPosition(this.popperInstance, callback, true); + + if (!options.appendTo.contains(this.popper)) { + options.appendTo.appendChild(this.popper); + } +} + +/** + * Clears the show and hide delay timeouts + * @memberof Tippy + * @private + */ +function _clearDelayTimeouts() { + var _ref = this._(key), + showTimeout = _ref.showTimeout, + hideTimeout = _ref.hideTimeout; + + clearTimeout(showTimeout); + clearTimeout(hideTimeout); +} + +/** + * Sets the mousemove event listener function for `followCursor` option + * @memberof Tippy + * @private + */ +function _setFollowCursorListener() { + var _this8 = this; + + this._(key).followCursorListener = function (event) { + var _$lastMouseMoveEvent = _this8._(key).lastMouseMoveEvent = event, + clientX = _$lastMouseMoveEvent.clientX, + clientY = _$lastMouseMoveEvent.clientY; + + if (!_this8.popperInstance) return; + + _this8.popperInstance.reference = { + getBoundingClientRect: function getBoundingClientRect() { + return { + width: 0, + height: 0, + top: clientY, + left: clientX, + right: clientX, + bottom: clientY + }; + }, + clientWidth: 0, + clientHeight: 0 + }; + + _this8.popperInstance.scheduleUpdate(); + }; +} + +/** + * Updates the popper's position on each animation frame + * @memberof Tippy + * @private + */ +function _makeSticky() { + var _this9 = this; + + var applyTransitionDuration$$1 = function applyTransitionDuration$$1() { + _this9.popper.style[prefix('transitionDuration')] = _this9.options.updateDuration + 'ms'; + }; + + var removeTransitionDuration = function removeTransitionDuration() { + _this9.popper.style[prefix('transitionDuration')] = ''; + }; + + var updatePosition = function updatePosition() { + if (_this9.popperInstance) { + _this9.popperInstance.update(); + } + + applyTransitionDuration$$1(); + + if (_this9.state.visible) { + requestAnimationFrame(updatePosition); + } else { + removeTransitionDuration(); + } + }; + + updatePosition(); +} + +/** + * Adds a mutation observer to an element and stores it in the instance + * @param {Object} + * @memberof Tippy + * @private + */ +function _addMutationObserver(_ref2) { + var target = _ref2.target, + callback = _ref2.callback, + options = _ref2.options; + + if (!window.MutationObserver) return; + + var observer = new MutationObserver(callback); + observer.observe(target, options); + + this._(key).mutationObservers.push(observer); +} + +/** + * Fires the callback functions once the CSS transition ends for `show` and `hide` methods + * @param {Number} duration + * @param {Function} callback - callback function to fire once transition completes + * @memberof Tippy + * @private + */ +function _onTransitionEnd(duration, callback) { + // Make callback synchronous if duration is 0 + if (!duration) { + return callback(); + } + + var _getInnerElements6 = getInnerElements(this.popper), + tooltip = _getInnerElements6.tooltip; + + var toggleListeners = function toggleListeners(action, listener) { + if (!listener) return; + tooltip[action + 'EventListener']('transition' in document.body.style ? 'transitionend' : 'webkitTransitionEnd', listener); + }; + + var listener = function listener(e) { + if (e.target === tooltip) { + toggleListeners('remove', listener); + callback(); + } + }; + + toggleListeners('remove', this._(key).transitionendListener); + toggleListeners('add', listener); + + this._(key).transitionendListener = listener; +} + +var idCounter = 1; + +/** + * Creates tooltips for each reference element + * @param {Element[]} els + * @param {Object} config + * @return {Tippy[]} Array of Tippy instances + */ +function createTooltips(els, config) { + return els.reduce(function (acc, reference) { + var id = idCounter; + + var options = evaluateOptions(reference, config.performance ? config : getIndividualOptions(reference, config)); + + var title = reference.getAttribute('title'); + + // Don't create an instance when: + // * the `title` attribute is falsy (null or empty string), and + // * it's not a delegate for tooltips, and + // * there is no html template specified, and + // * `dynamicTitle` option is false + if (!title && !options.target && !options.html && !options.dynamicTitle) { + return acc; + } + + // Delegates should be highlighted as different + reference.setAttribute(options.target ? 'data-tippy-delegate' : 'data-tippy', ''); + + removeTitle(reference); + + var popper = createPopperElement(id, title, options); + + var tippy = new Tippy({ + id: id, + reference: reference, + popper: popper, + options: options, + title: title, + popperInstance: null + }); + + if (options.createPopperInstanceOnInit) { + tippy.popperInstance = _createPopperInstance.call(tippy); + tippy.popperInstance.disableEventListeners(); + } + + var listeners = _getEventListeners.call(tippy); + tippy.listeners = options.trigger.trim().split(' ').reduce(function (acc, eventType) { + return acc.concat(createTrigger(eventType, reference, listeners, options)); + }, []); + + // Update tooltip content whenever the title attribute on the reference changes + if (options.dynamicTitle) { + _addMutationObserver.call(tippy, { + target: reference, + callback: function callback() { + var _getInnerElements = getInnerElements(popper), + content = _getInnerElements.content; + + var title = reference.getAttribute('title'); + if (title) { + content[options.allowTitleHTML ? 'innerHTML' : 'textContent'] = tippy.title = title; + removeTitle(reference); + } + }, + + options: { + attributes: true + } + }); + } + + // Shortcuts + reference._tippy = tippy; + popper._tippy = tippy; + popper._reference = reference; + + acc.push(tippy); + + idCounter++; + + return acc; + }, []); +} + +/** + * Hides all poppers + * @param {Tippy} excludeTippy - tippy to exclude if needed + */ +function hideAllPoppers(excludeTippy) { + var poppers = toArray(document.querySelectorAll(selectors.POPPER)); + + poppers.forEach(function (popper) { + var tippy = popper._tippy; + if (!tippy) return; + + var options = tippy.options; + + + if ((options.hideOnClick === true || options.trigger.indexOf('focus') > -1) && (!excludeTippy || popper !== excludeTippy.popper)) { + tippy.hide(); + } + }); +} + +/** + * Adds the needed event listeners + */ +function bindEventListeners() { + var onDocumentTouch = function onDocumentTouch() { + if (browser.usingTouch) return; + + browser.usingTouch = true; + + if (browser.iOS) { + document.body.classList.add('tippy-touch'); + } + + if (browser.dynamicInputDetection && window.performance) { + document.addEventListener('mousemove', onDocumentMouseMove); + } + + browser.onUserInputChange('touch'); + }; + + var onDocumentMouseMove = function () { + var time = void 0; + + return function () { + var now = performance.now(); + + // Chrome 60+ is 1 mousemove per animation frame, use 20ms time difference + if (now - time < 20) { + browser.usingTouch = false; + document.removeEventListener('mousemove', onDocumentMouseMove); + if (!browser.iOS) { + document.body.classList.remove('tippy-touch'); + } + browser.onUserInputChange('mouse'); + } + + time = now; + }; + }(); + + var onDocumentClick = function onDocumentClick(event) { + // Simulated events dispatched on the document + if (!(event.target instanceof Element)) { + return hideAllPoppers(); + } + + var reference = closest(event.target, selectors.REFERENCE); + var popper = closest(event.target, selectors.POPPER); + + if (popper && popper._tippy && popper._tippy.options.interactive) { + return; + } + + if (reference && reference._tippy) { + var options = reference._tippy.options; + + var isClickTrigger = options.trigger.indexOf('click') > -1; + var isMultiple = options.multiple; + + // Hide all poppers except the one belonging to the element that was clicked + if (!isMultiple && browser.usingTouch || !isMultiple && isClickTrigger) { + return hideAllPoppers(reference._tippy); + } + + if (options.hideOnClick !== true || isClickTrigger) { + return; + } + } + + hideAllPoppers(); + }; + + var onWindowBlur = function onWindowBlur() { + var _document = document, + el = _document.activeElement; + + if (el && el.blur && matches$1.call(el, selectors.REFERENCE)) { + el.blur(); + } + }; + + var onWindowResize = function onWindowResize() { + toArray(document.querySelectorAll(selectors.POPPER)).forEach(function (popper) { + var tippyInstance = popper._tippy; + if (tippyInstance && !tippyInstance.options.livePlacement) { + tippyInstance.popperInstance.scheduleUpdate(); + } + }); + }; + + document.addEventListener('click', onDocumentClick); + document.addEventListener('touchstart', onDocumentTouch); + window.addEventListener('blur', onWindowBlur); + window.addEventListener('resize', onWindowResize); + + if (!browser.supportsTouch && (navigator.maxTouchPoints || navigator.msMaxTouchPoints)) { + document.addEventListener('pointerdown', onDocumentTouch); + } +} + +var eventListenersBound = false; + +/** + * Exported module + * @param {String|Element|Element[]|NodeList|Object} selector + * @param {Object} options + * @param {Boolean} one - create one tooltip + * @return {Object} + */ +function tippy(selector, options, one) { + if (browser.supported && !eventListenersBound) { + bindEventListeners(); + eventListenersBound = true; + } + + if (isObjectLiteral(selector)) { + polyfillVirtualReferenceProps(selector); + } + + options = _extends({}, defaults, options); + + var references = getArrayOfElements(selector); + var firstReference = references[0]; + + return { + selector: selector, + options: options, + tooltips: browser.supported ? createTooltips(one && firstReference ? [firstReference] : references, options) : [], + destroyAll: function destroyAll() { + this.tooltips.forEach(function (tooltip) { + return tooltip.destroy(); + }); + this.tooltips = []; + } + }; +} + +tippy.version = version; +tippy.browser = browser; +tippy.defaults = defaults; +tippy.one = function (selector, options) { + return tippy(selector, options, true).tooltips[0]; +}; +tippy.disableAnimations = function () { + defaults.updateDuration = defaults.duration = 0; + defaults.animateFill = false; +}; + +/** + * Injects CSS styles to document head + * @param {String} css + */ +function injectCSS() { + var css = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + + if (isBrowser && browser.supported) { + var head = document.head || document.querySelector('head'); + var style = document.createElement('style'); + style.type = 'text/css'; + head.insertBefore(style, head.firstChild); + + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } + } +} + +injectCSS(styles); + +return tippy; + +}))); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}]},{},[1]); \ No newline at end of file diff --git a/config.php b/config.php new file mode 100755 index 0000000..ec8c6b8 --- /dev/null +++ b/config.php @@ -0,0 +1,13 @@ + '白云图书馆', + 'database' => [ + 'host' => 'mysql', + 'database' => 'books', + 'username' => 'books_user', + 'password' => 'JVjZ*34%C#FdH!Tz' + ], + 'salt' => 'Baiyun Library Management System: ', + 'timezone' => 'Asia/Shanghai', + 'environment' => 'development' +]; \ No newline at end of file diff --git a/index.php b/index.php new file mode 100755 index 0000000..93e07f1 --- /dev/null +++ b/index.php @@ -0,0 +1,15 @@ +auto_require_files(APP_ROOT.'/src/model'); + $this->auto_require_files(APP_ROOT.'/src/controller'); + } + + private function auto_require_files($dir) { + foreach ($this->scan_dir_files($dir) as $file) require($file); + } + + private function scan_dir_files($dir) { + foreach (scandir($dir) as $item) { + if ($item != '..' && $item != '.') { + if (is_dir($dir.'/'.$item)) { + $files = array_merge($files, $this->scan_dir_files($dir.'/'.$item)); + } else $files[] = $dir.'/'.$item; + } + } + return $files; + } + +} \ No newline at end of file diff --git a/src/controller/admin.php b/src/controller/admin.php new file mode 100755 index 0000000..0f94554 --- /dev/null +++ b/src/controller/admin.php @@ -0,0 +1,204 @@ + $v) + $books[$k]['stock'] = stock::count_in_stock_by_bid($v['bid']).'/'.stock::count_stock_by_bid($v['bid']); + $this->template('书籍管理', 'books', ['books' => $books, 'page' => $page, 'count' => books::count_books(), 'stock' => stock::count_stock()]); + } + + public function users() { + $page = $_GET['page'] ?? 1; + $users = users::list_users($page); + $this->template('用户管理', 'users', ['users' => $users, 'page' => $page, 'count' => users::count_users(), 'stock' => stock::count_out_stock()]); + } + + public function stock() { + $page = $_GET['page'] ?? 1; + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + $books = stock::list_stock_by_bid($_GET['bid'], $page); + $count = stock::count_stock_by_bid($_GET['bid']); + $stock = stock::count_in_stock_by_bid($_GET['bid']); + } else { + $books = stock::list_stock($page); + $count = stock::count_stock(); + $stock = stock::count_in_stock(); + } $this->template('库存管理', 'stock', ['books' => $books, 'page' => $page, 'count' => $count, 'stock' => $stock]); + } + + public function categories() { + $page = $_GET['page'] ?? 1; + $categories = categories::list_categories($page); + $this->template('分类管理', 'categories', ['categories' => $categories, 'page' => $page, 'count' => categories::count_categories(), 'stock' => stock::count_stock()]); + } + + public function add_user() { + $this->template('添加用户', 'add_user'); + } + + public function update_user() { + if (isset($_GET['uid']) && is_numeric($_GET['uid'])) { + $this->template('更新用户', 'update_user', ['user' => users::get_user_by_id($_GET['uid'])]); + } else header('Location: /admin/users'); + } + + public function delete_user() { + if (isset($_GET['uid']) && is_numeric($_GET['uid'])) { + $this->template('删除用户', 'delete_user', ['user' => users::get_user_by_id($_GET['uid'])]); + } else header('Location: /admin/users'); + } + + public function add_book() { + $categories = categories::get_categories(); + $this->template('添加书籍', 'add_book', ['categories' => $categories]); + } + + public function update_book() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + $this->template('更新书籍', 'update_book', ['book' => books::get_book_by_id($_GET['bid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/books'); + } + + public function delete_book() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + $this->template('删除书籍', 'delete_book', ['book' => books::get_book_by_id($_GET['bid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/books'); + } + + public function add_stock() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + $this->template('添加库存', 'add_stock', ['book' => books::get_book_by_id($_GET['bid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/stock'); + } + + public function update_stock() { + if (isset($_GET['sid']) && is_numeric($_GET['sid'])) { + $this->template('更新库存', 'update_stock', ['book' => stock::get_stock_by_id($_GET['sid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/stock'); + } + + public function delete_stock() { + if (isset($_GET['sid']) && is_numeric($_GET['sid'])) { + $this->template('删除库存', 'delete_stock', ['book' => stock::get_stock_by_id($_GET['sid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/stock'); + } + + public function add_category() { + $this->template('添加分类', 'add_category'); + } + + public function update_category() { + if (isset($_GET['cid']) && is_numeric($_GET['cid'])) { + $this->template('更新分类', 'update_category', ['category' => categories::get_category_by_id($_GET['cid'])]); + } else header('Location: /admin/categories'); + } + + public function delete_category() { + if (isset($_GET['cid']) && is_numeric($_GET['cid'])) { + $this->template('删除分类', 'delete_category', ['category' => categories::get_category_by_id($_GET['cid']), 'categories' => categories::get_categories()]); + } else header('Location: /admin/categories'); + } + + public function do_add_user() { + $username = $_POST['username']; + if (!(strlen($username) <= 30 && preg_match('/^[a-zA-Z_][a-zA-Z0-9_]+$/u', $username))) + exit(header('Location: /admin/add-user?page='.$_GET['page'].'&error=用户名不合规')); + $password = $_POST['password']; + if ($password != $_POST['confirm']) + exit(header('Location: /admin/add-user?page='.$_GET['page'].'&error=两次输入密码不一致')); + + header('Location: ' . (users::add_user($username, $password, $_POST['sex'], $_POST['birthday'], $_POST['id_card'], $_POST['borrow_num'], $_POST['type']) ? + '/admin/users?page='.$_GET['page'] : '/admin/add-user?page='.$_GET['page'].'&error=数据库错误')); + } + + public function do_update_user() { + if (isset($_GET['uid']) && is_numeric($_GET['uid'])) { + if (empty($password = $_POST['password'])) + $password = null; + elseif ($password != $_POST['confirm']) + exit(header('Location: /admin/update-user?page='.$_GET['page'].'&uid='.$_GET['uid'].'&error=两次输入密码不一致')); + + header('Location: ' . (users::update_user($_GET['uid'], $password, $_POST['sex'], $_POST['birthday'], $_POST['id_card'], $_POST['borrow_num'], $_POST['type']) ? + '/admin/users?page='.$_GET['page'] : '/admin/update-user?page='.$_GET['page'].'&uid='.$_GET['uid'].'&error=数据库错误')); + } else header('Location: /admin/users?page='.$_GET['page']); + } + + public function do_delete_user() { + if (isset($_GET['uid']) && is_numeric($_GET['uid'])) { + header('Location: ' . (users::del_user_by_id($_GET['uid']) ? + '/admin/users?page='.$_GET['page'] : '/admin/delete-user?page='.$_GET['page'].'&uid='.$_GET['uid'].'&error=数据库错误')); + } else header('Location: /admin/users?page='.$_GET['page']); + } + + public function do_add_book() { + header('Location: ' . (books::add_book($_POST['name'], $_POST['author'], $_POST['publish'], $_POST['isbn'], $_POST['cover'], $_POST['type'], $_POST['lang']) ? + '/admin/books?page='.$_GET['page'] : '/admin/add-book?page='.$_GET['page'].'&error=数据库错误')); + } + + public function do_update_book() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + header('Location: ' . (books::update_book($_GET['bid'], $_POST['name'], $_POST['author'], $_POST['publish'], $_POST['isbn'], $_POST['cover'], $_POST['type'], $_POST['lang']) ? + '/admin/books?page='.$_GET['page'] : '/admin/update-book?page='.$_GET['page'].'&bid='.$_GET['bid'].'&error=数据库错误')); + } else header('Location: /admin/books?page='.$_GET['page']); + } + + public function do_delete_book() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + header('Location: ' . (books::del_book_by_id($_GET['bid']) ? + '/admin/books?page='.$_GET['page'] : '/admin/delete-book?page='.$_GET['page'].'&bid='.$_GET['bid'].'&error=数据库错误')); + } else header('Location: /admin/books?page='.$_GET['page']); + } + + public function do_add_stock() { + if (isset($_GET['bid']) && is_numeric($_GET['bid'])) { + header('Location: ' . (stock::add_stock($_GET['bid'], $_POST['place'], $_POST['health'], $_POST['state']) ? + '/admin/stock?bid='.$_GET['bid'] : '/admin/add-stock?page='.$_GET['page'].'%bid='.$_GET['bid'].'&error=数据库错误')); + } else header('Location: /admin/stock?bid='.$_GET['bid'].'&page='.$_GET['page']); + } + + public function do_update_stock() { + if (isset($_GET['sid']) && isset($_GET['bid']) && is_numeric($_GET['sid']) && is_numeric($_GET['bid'])) { + header('Location: ' . (stock::update_stock($_GET['sid'], $_GET['bid'], $_POST['place'], $_POST['health'], $_POST['state']) ? + '/admin/stock?page='.$_GET['page'] : '/admin/update-stock?page='.$_GET['page'].'&sid='.$_GET['sid'].'&bid='.$_GET['bid'].'&error=数据库错误')); + } else header('Location: /admin/stock?page='.$_GET['page']); + } + + public function do_delete_stock() { + if (isset($_GET['sid']) && is_numeric($_GET['sid'])) { + header('Location: ' . (stock::del_stock_by_id($_GET['sid']) ? + '/admin/stock?page='.$_GET['page'] : '/admin/delete-stock?page='.$_GET['page'].'&sid='.$_GET['sid'].'&error=数据库错误')); + } else header('Location: /admin/stock?page='.$_GET['page']); + } + + public function do_add_category() { + header('Location: ' . (categories::add_category($_POST['name']) ? + '/admin/categories?page='.$_GET['page'] : '/admin/add-categories?page='.$_GET['page'].'&error=数据库错误')); + } + + public function do_update_category() { + if (isset($_GET['cid']) && is_numeric($_GET['cid'])) { + header('Location: ' . (categories::update_category($_GET['cid'], $_POST['name']) ? + '/admin/categories?page='.$_GET['page'] : '/admin/update-category?page='.$_GET['page'].'&cid='.$_GET['cid'].'&error=数据库错误')); + } else header('Location: /admin/categories?page='.$_GET['page']); + } + + public function do_delete_category() { + if (isset($_GET['cid']) && is_numeric($_GET['cid'])) { + header('Location: ' . (books::update_book_category($_GET['cid'], $_POST['category']) && categories::del_category_by_id($_GET['cid']) ? + '/admin/categories?page='.$_GET['page'] : '/admin/delete-category?page='.$_GET['page'].'&cid='.$_GET['cid'].'&error=数据库错误')); + } else header('Location: /admin/categories?page='.$_GET['page']); + } + + private function template($title, $name, $parameters = []) { + template::render('admins', $name, array_merge(['title' => $title], $parameters)); + } + +} \ No newline at end of file diff --git a/src/controller/default.php b/src/controller/default.php new file mode 100755 index 0000000..7072579 --- /dev/null +++ b/src/controller/default.php @@ -0,0 +1,55 @@ +template('首页', 'index', ['books' => $books, 'page' => $page, 'count' => $count, 'categories' => $categories, 'records' => $records, 'records_count' => $records_count]); + } + + public function lists() { + $page = $_GET['page'] ?? 1; + $count = books::count_books(); + $books = books::list_books($page); + $categories = categories::get_categories(); + $records = isset($_SESSION['user']) ? records::get_in_records_by_uid($_SESSION['user']['uid']) : null; + $records_count = isset($_SESSION['user']) ? records::count_in_records_by_uid($_SESSION['user']['uid']) : 0; + $this->template('书籍列表', 'lists', ['books' => $books, 'page' => $page, 'count' => $count, 'categories' => $categories, 'records' => $records, 'records_count' => $records_count]); + } + + public function search() { + $page = $_GET['page'] ?? 1; + if (isset($_GET['s']) && !empty($_GET['s'])) { + $word = $_GET['s'] ?? ''; + $books = books::find_books($word, $page); + $count = books::count_find_books($word); + $categories = categories::get_categories(); + } else $word = $books = $count = $categories = null; + $records = isset($_SESSION['user']) ? records::get_in_records_by_uid($_SESSION['user']['uid']) : null; + $records_count = isset($_SESSION['user']) ? records::count_in_records_by_uid($_SESSION['user']['uid']) : 0; + $this->template('馆存查询', 'search', ['books' => $books, 'page' => $page, 'count' => $count, 'categories' => $categories, 'records' => $records, 'records_count' => $records_count]); + } + + public function book($bid) { + $page = $_GET['page'] ?? 1; + $count = stock::count_stock_by_bid($bid); + $stock = stock::count_in_stock_by_bid($bid); + $books = stock::list_stock_by_bid($bid, $page); + $this->template('库存查询', 'book', ['books' => $books, 'page' => $page, 'count' => $count, 'stock' => $stock]); + } + + private function template($title, $name, $parameters = []) { + template::render('defaults', $name, array_merge(['title' => $title], $parameters)); + } + +} \ No newline at end of file diff --git a/src/controller/user.php b/src/controller/user.php new file mode 100755 index 0000000..6c1ddd2 --- /dev/null +++ b/src/controller/user.php @@ -0,0 +1,99 @@ +template('个人资料', 'info'); + } + + public function record() { + $page = $_GET['page'] ?? 1; + $books = records::list_records_by_uid($_SESSION['user']['uid'], $page); + $count = records::count_records_by_uid($_SESSION['user']['uid']); + $stock = records::count_in_records_by_uid($_SESSION['user']['uid']); + $this->template('借书记录', 'record', ['books' => $books, 'page' => $page, 'count' => $count, 'stock' => $stock]); + } + + public function update() { + $this->template('更新信息', 'update'); + } + + public function login() { + $this->template('用户登录', 'login'); + } + + public function register() { + $this->template('用户注册', 'register'); + } + + public function update_stock() { + if (isset($_GET['sid']) && is_numeric($_GET['sid']) && isset($_GET['bid']) && is_numeric($_GET['bid'])) { + if (stock::update_stock_state($_GET['sid'], 1)) + records::add_record($_GET['bid'], $_SESSION['user']['uid'], $_GET['sid'], time()); + } header('Location: /book/'.$_GET['bid'].'?page='.$_GET['page']); + } + + public function update_record() { + if (isset($_GET['rid']) && is_numeric($_GET['rid']) && isset($_GET['sid']) && is_numeric($_GET['sid'])) { + if (records::update_record($_GET['rid'], time())) stock::update_stock_state($_GET['sid'], 0); + } header('Location: /user/record?page='.$_GET['page']); + } + + public function do_login() { + $username = $_POST['username']; + $password = $_POST['password']; + if (!(strlen($username) <= 30 && preg_match('/^[a-zA-Z_][a-zA-Z0-9_]+$/u', $username))) + exit(header('Location: /user/login?error=用户名不合规')); + if ($user = users::get_user($username)) { + if ($user['password'] == hash('sha256', $GLOBALS['config']['salt'].$password)) { + $_SESSION['user'] = $user; + header('Location: /user/info'); + } else header('Location: /user/login?error=密码错误'); + } else header('Location: /user/login?error=用户不存在'); + } + + public function do_logout() { + session_destroy(); + header('Location: /user/login?error=注销成功'); + } + + public function do_update() { + $sex = $_POST['sex']; + $birthday = $_POST['birthday']; + if (empty($password = $_POST['password'])) + $password = null; + elseif ($password != $_POST['confirm']) + exit(header('Location: /user/update?error=两次输入密码不一致')); + + if (users::update_user($_SESSION['user']['uid'], $password, $sex, $birthday, $_SESSION['user']['id_card'], $_SESSION['user']['borrow_num'], $_SESSION['user']['type'])) { + session_destroy(); + header('Location: /user/login?error=更新成功,请重新登录'); + } else header('Location: /user/update?error=数据库错误'); + } + + public function do_register() { + $username = $_POST['username']; + if (!(strlen($username) <= 30 && preg_match('/^[a-zA-Z_][a-zA-Z0-9_]+$/u', $username))) + exit(header('Location: /user/register?error=用户名不合规')); + $id_card = $_POST['id_card']; + if (strlen($id_card) < 10 || !is_numeric($id_card)) + exit(header('Location: /user/register?error=身份证不合规')); + $password = $_POST['password']; + if ($password != $_POST['confirm']) + exit(header('Location: /user/register?error=两次输入密码不一致')); + + if (users::add_user($username, $password, 0, '1900-01-01', $id_card, 15, 0)) + header('Location: /user/login?error=注册成功,请登录'); + else header('Location: /user/register?error=数据库错误'); + } + + private function template($title, $name, $parameters = []) { + template::render('users', $name, array_merge(['title' => $title], $parameters)); + } + +} \ No newline at end of file diff --git a/src/model/books.php b/src/model/books.php new file mode 100755 index 0000000..9140fd2 --- /dev/null +++ b/src/model/books.php @@ -0,0 +1,63 @@ +table('books')->where(['bid' => $bid])->select(); + } + + public static function del_book_by_id(int $bid) { + return (new database())->table('books')->where(['bid' => $bid])->delete(); + } + + public static function add_book($name, $author, $publish, $isbn, $cover, $cid, $lang) { + return (new database())->table('books')->insert([ + 'name' => $name, + 'author' => $author, + 'publish' => $publish, + 'isbn' => $isbn, + 'cover' => $cover, + 'cid' => (int)$cid, + 'lang' => $lang + ]); + } + + public static function update_book(int $bid, $name, $author, $publish, $isbn, $cover, $cid, $lang) { + return (new database())->table('books')->where(['bid' => $bid])->update([ + 'name' => $name, + 'author' => $author, + 'publish' => $publish, + 'isbn' => $isbn, + 'cover' => $cover, + 'cid' => (int)$cid, + 'lang' => $lang + ]); + } + + public static function update_book_category(int $cid, $category) { + return (new database())->table('books')->where(['cid' => $cid])->update(['cid' => (int)$category]); + } + + public static function list_books(int $page = 1) { + $books = (new database())->table('books')->page(20, $page); + return isset($books[0]['bid']) ? $books : [$books]; + } + + public static function find_books($word, int $page = 1) { + $books = (new database())->table('books')->like('name', $word)->page(20, $page); + return isset($books[0]['bid']) ? $books : [$books]; + } + + public static function count_books() { + return (new database())->table('books')->count(); + } + + public static function count_find_books($word) { + return (new database())->table('books')->like('name', $word)->count(); + } + +} diff --git a/src/model/categories.php b/src/model/categories.php new file mode 100755 index 0000000..6f66e48 --- /dev/null +++ b/src/model/categories.php @@ -0,0 +1,39 @@ +table('categories')->where(['cid' => $cid])->select(); + } + + public static function del_category_by_id(int $cid) { + return (new database())->table('categories')->where(['cid' => $cid])->delete(); + } + + public static function add_category($name) { + return (new database())->table('categories')->insert(['name' => $name]); + } + + public static function update_category(int $cid, $name) { + return (new database())->table('categories')->where(['cid' => $cid])->update(['name' => $name]); + } + + public static function get_categories() { + $categories = (new database())->table('categories')->select(); + return isset($categories[0]['cid']) ? $categories : [$categories]; + } + + public static function list_categories(int $page = 1) { + $categories = (new database())->table('categories')->page(20, $page); + return isset($categories[0]['cid']) ? $categories : [$categories]; + } + + public static function count_categories() { + return (new database())->table('categories')->count(); + } + +} diff --git a/src/model/database.php b/src/model/database.php new file mode 100755 index 0000000..e23ed05 --- /dev/null +++ b/src/model/database.php @@ -0,0 +1,146 @@ +pdo == null) { + try { + $this->pdo = new \PDO('mysql:host='.$GLOBALS['config']['database']['host'].';dbname='.$GLOBALS['config']['database']['database'], + $GLOBALS['config']['database']['username'], $GLOBALS['config']['database']['password'], [\PDO::ATTR_PERSISTENT => true]); + } catch (PDOException $e) { + exit('Error: ' . $e->getMessage()); + } + } + + $this->table = null; + $this->where = []; + $this->order = ''; + $this->limit = ''; + $this->prepare = ''; + } + + public function table(string $table) { + $this->table = $table; + return $this; + } + + public function where(array $where) { + $this->where = array_merge($this->where, $where); + return $this; + } + + public function like($name, $word) { + $this->order = ' where `'.$name.'` like "%'.$word.'%"'; + return $this; + } + + public function group_by($name) { + $this->order = ' group by `'.$name.'`'; + return $this; + } + + public function select($select = null) { + $this->prepare_where(); + + if (is_array($select)) { + $select = '`'.implode('`, `', $select).'`'; + } elseif ($select == 'count(*)') { + $select = 'count(*)'; + } elseif (!empty($select)) { + $select = '`'.$select.'`'; + } else { + $select = '*'; + } + + $db = $this->pdo->prepare("select $select from `$this->table`$this->where$this->order$this->limit"); + $db->execute($this->prepare); + if ($db = $db->fetchAll(\PDO::FETCH_ASSOC)) + return count($db) > 1 ? $db : $db[0]; + else return false; + } + + public function insert(array $data) { + if (count($data) > 1) { + $keys = '`'.implode('`, `', array_keys($data)).'`'; + foreach ($data as $v) $values[] = '?'; + $values = implode(', ', $values); + } else { + $keys = '`'.array_keys($data)[0].'`'; + $values = '?'; + } + + $db = $this->pdo->prepare("insert into `$this->table`($keys) values($values)"); + return $db->execute(array_values($data)); + } + + public function update(array $data) { + $this->prepare_where(); + + if (count($data) > 1) { + $update = '`'.implode('` = ?, `', array_keys($data)).'` = ?'; + } else { + $update = '`'.array_keys($data)[0].'` = ?'; + } + + $db = $this->pdo->prepare("update `$this->table` set $update$this->where"); + return $db->execute(array_merge(array_values($data), $this->prepare)); + } + + public function delete() { + $this->prepare_where(); + + $db = $this->pdo->prepare("delete from `$this->table`$this->where"); + return $db->execute($this->prepare); + } + + public function count() { + return $this->select('count(*)')['count(*)']; + } + + public function last($last) { + $this->order = ' order by `'.$last.'` desc'; + $this->limit = ' limit 1'; + return $this->select(); + } + + public function page(int $limit, int $page) { + $this->limit = ' limit '.($page-1)*$limit.', '.$limit; + return $this->select(); + } + + public function pdo_query($sql) { + $db = $this->pdo->query($sql); + if ($db = $db->fetchAll(\PDO::FETCH_ASSOC)) + return count($db) > 1 ? $db : $db[0]; + else return false; + } + + public function pdo_prepare($sql) { + $this->prepare = $sql; + return $this; + } + + public function execute($arr) { + $db = $this->pdo->prepare($this->prepare); + $db->execute($arr); + if ($db = $db->fetchAll(\PDO::FETCH_ASSOC)) + return count($db) > 1 ? $db : $db[0]; + else return false; + } + + private function prepare_where() { + $where = ''; + $this->prepare = []; + if (!empty($this->where) && is_array($this->where)) { + $where = ' where '; + if (count($this->where) > 1) { + $where .= '`'.implode('` = ? and `', array_keys($this->where)).'` = ?'; + } else $where .= '`'.array_keys($this->where)[0].'` = ?'; + $this->prepare = array_values($this->where); + } + $this->where = $where; + } +} diff --git a/src/model/records.php b/src/model/records.php new file mode 100755 index 0000000..acf8ca2 --- /dev/null +++ b/src/model/records.php @@ -0,0 +1,71 @@ +pdo_prepare( + 'select r.rid, b.bid, b.cover'. + ' from records r left join books b on r.bid = b.bid where r.uid = :uid')->execute([':uid' => $uid])) ?? false; + return isset($records[0]['rid']) ? $records : [$records]; + } + + public static function get_in_records_by_uid(int $uid) { + $records = ((new database())->pdo_prepare( + 'select r.rid, b.bid, b.cover'. + ' from records r left join books b on r.bid = b.bid where r.uid = :uid and r.state = 0')->execute([':uid' => $uid])) ?? false; + return isset($records[0]['rid']) ? $records : [$records]; + } + + public static function add_record($bid, $uid, $sid, $borrow_time) { + return (new database())->table('records')->insert([ + 'bid' => $bid, + 'uid' => $uid, + 'sid' => $sid, + 'borrow_time' => $borrow_time, + 'state' => 0 + ]); + } + + public static function update_record($rid, $return_time) { + return (new database())->table('records')->where(['rid' => $rid])->update(['return_time' => $return_time, 'state' => 1]); + } + + public static function list_hot_records(int $page = 1) { + $records = ((new database())->pdo_query( + 'select b.bid, b.cid, b.name, b.author, b.publish, b.isbn, b.cover, b.lang, any_value(r.borrow_time) as borrow_time'. + ' from records r left join books b on r.bid = b.bid group by b.bid order by borrow_time desc limit '.(($page-1)*20).', 20')) ?? false; + return isset($records[0]['bid']) ? $records : [$records]; + } + + public static function list_records_by_uid(int $uid, int $page = 1) { + $records = ((new database())->pdo_prepare( + 'select r.rid, r.sid, b.name, b.author, b.publish, b.isbn, r.borrow_time, r.return_time, r.state'. + ' from records r left join books b on r.bid = b.bid where r.uid = :uid limit '.(($page-1)*20).', 20')->execute([':uid' => $uid])) ?? false; + return isset($records[0]['rid']) ? $records : [$records]; + } + + public static function count_records() { + return (new database())->table('records')->count(); + } + + public static function count_hot_records() { + return (new database())->pdo_query('select count(*) from (select `bid` as `count` from `records` group by `bid`) as c')['count(*)'] ?? 0; + } + + public static function count_records_by_uid(int $uid) { + return (new database())->table('records')->where(['uid' => $uid])->count(); + } + + public static function count_in_records() { + return (new database())->table('records')->where(['state' => 0])->count(); + } + + public static function count_in_records_by_uid(int $uid) { + return (new database())->table('records')->where(['uid' => $uid, 'state' => 0])->count(); + } + +} diff --git a/src/model/stock.php b/src/model/stock.php new file mode 100755 index 0000000..4966706 --- /dev/null +++ b/src/model/stock.php @@ -0,0 +1,75 @@ +pdo_prepare( + 'select s.sid, b.bid, b.cid, b.name, b.isbn, b.author, b.publish, b.cover, b.lang, s.place, s.health, s.state'. + ' from stock s left join books b on s.bid = b.bid where s.sid = :sid')->execute([':sid' => $sid])) ?? false; + } + + public static function del_stock_by_id(int $sid) { + return (new database())->table('stock')->where(['sid' => $sid])->delete(); + } + + public static function add_stock($bid, $place, $health, $state) { + return (new database())->table('stock')->insert([ + 'bid' => $bid, + 'place' => $place, + 'health' => $health, + 'state' => $state + ]); + } + + public static function update_stock(int $sid, $bid, $place, $health, $state) { + return (new database())->table('stock')->where(['sid' => $sid])->update([ + 'bid' => $bid, + 'place' => $place, + 'health' => $health, + 'state' => $state + ]); + } + + public static function update_stock_state(int $sid, $state) { + return (new database())->table('stock')->where(['sid' => $sid])->update(['state' => $state]); + } + + public static function count_stock() { + return (new database())->table('stock')->count(); + } + + public static function count_in_stock() { + return (new database())->table('stock')->where(['state' => 0])->count(); + } + + public static function count_out_stock() { + return (new database())->table('stock')->where(['state' => 1])->count(); + } + + public static function count_stock_by_bid(int $bid) { + return (new database())->table('stock')->where(['bid' => $bid])->count(); + } + + public static function count_in_stock_by_bid(int $bid) { + return (new database())->table('stock')->where(['bid' => $bid, 'state' => 0])->count(); + } + + public static function list_stock(int $page = 1) { + $stock = (new database())->pdo_query( + 'select s.sid, b.bid, b.cid, b.name, b.isbn, b.author, b.publish, b.cover, b.lang, s.place, s.health, s.state'. + ' from stock s left join books b on s.bid = b.bid limit '.(($page-1)*20).', 20'); + return isset($stock[0]['sid']) ? $stock : [$stock]; + } + + public static function list_stock_by_bid(int $bid, int $page = 1) { + $stock = (new database())->pdo_query( + 'select s.sid, b.bid, b.cid, b.name, b.isbn, b.author, b.publish, b.cover, b.lang, s.place, s.health, s.state'. + ' from stock s left join books b on s.bid = b.bid where s.bid = '.$bid.' limit '.(($page-1)*20).', 20'); + return isset($stock[0]['sid']) ? $stock : [$stock]; + } + +} diff --git a/src/model/template.php b/src/model/template.php new file mode 100755 index 0000000..ae47a60 --- /dev/null +++ b/src/model/template.php @@ -0,0 +1,14 @@ + $v) $$k = $v; + require(APP_ROOT.'/src/template/header.php'); + require(APP_ROOT.'/src/template/side_nav.php'); + require(APP_ROOT.'/src/template/'.$cont.'/'.$name.'.php'); + require(APP_ROOT.'/src/template/footer.php'); + } + +} diff --git a/src/model/users.php b/src/model/users.php new file mode 100755 index 0000000..9d6e14a --- /dev/null +++ b/src/model/users.php @@ -0,0 +1,54 @@ +table('users')->where(['username' => $username])->select(); + } + + public static function get_user_by_id(int $uid) { + return (new database())->table('users')->where(['uid' => $uid])->select(); + } + + public static function del_user_by_id(int $uid) { + return (new database())->table('users')->where(['uid' => $uid])->delete(); + } + + public static function add_user($username, $password, $sex, $birthday, $id_card, $borrow_num = 15, $type = 0) { + return (new database())->table('users')->insert([ + 'username' => $username, + 'password' => hash('sha256', $GLOBALS['config']['salt'].$password), + 'birthday' => $birthday, + 'sex' => (int)$sex, + 'id_card' => $id_card, + 'borrow_num' => (int)$borrow_num, + 'type' => (int)$type + ]); + } + + public static function update_user(int $uid, $password, $sex, $birthday, $id_card, $borrow_num, $type) { + $update = [ + 'sex' => (int)$sex, + 'birthday' => $birthday, + 'id_card' => $id_card, + 'borrow_num' => $borrow_num, + 'type' => $type, + ]; + if (!empty($password)) $update['password'] = hash('sha256', $GLOBALS['config']['salt'].$password); + return (new database())->table('users')->where(['uid' => $uid])->update($update); + } + + public static function list_users(int $page = 1) { + $users = (new database())->table('users')->page(20, $page); + return isset($users[0]['uid']) ? $users : [$users]; + } + + public static function count_users() { + return (new database())->table('users')->count(); + } + +} diff --git a/src/router.php b/src/router.php new file mode 100755 index 0000000..d31fe04 --- /dev/null +++ b/src/router.php @@ -0,0 +1,109 @@ + ['index', 1], + '/book' => ['book', 0], + '/user' => ['user', 0], + '/admin' => ['admin', 0], + '/lists' => ['lists', 1], + '/search' => ['search', 1] + ]; + + $to = ''; $uri = explode('?', $_SERVER['REQUEST_URI'])[0]; + foreach ($router as $k => $v) + if ($k == ($v[1] ? $uri : substr($uri, 0, strlen($k)))) $to = $v[0]; + + switch ($to) { + case 'user': + $controller = new user_controller(); + switch (explode('/', $uri)[2] ?? null) { + case 'login': $controller->login(); break; + case 'register': $controller->register(); break; + case 'info': $this->check_login(); $controller->info(); break; + case 'record': $this->check_login(); $controller->record(); break; + case 'update': $this->check_login(); $controller->update(); break; + case 'update-stock': $this->check_login(); $controller->update_stock(); break; + case 'update-record': $this->check_login(); $controller->update_record(); break; + case 'do': switch (explode('/', $uri)[3] ?? null) { + case 'login': $controller->do_login(); break; + case 'register': $controller->do_register(); break; + case 'logout': $this->check_login(); $controller->do_logout(); break; + case 'update': $this->check_login(); $controller->do_update(); break; + default: break; + } break; + default: + header('Location: /user/'.($this->check_login(0)?'info':'login')); break; + } break; + + case 'admin': + if (isset($_SESSION['user']) && $_SESSION['user']['type'] == 1) { + $controller = new admin_controller(); + switch (explode('/', $uri)[2] ?? null) { + + case 'users': $controller->users(); break; + case 'books': $controller->books(); break; + case 'stock': $controller->stock(); break; + case 'categories': $controller->categories(); break; + + case 'add-user': $controller->add_user(); break; + case 'update-user': $controller->update_user(); break; + case 'delete-user': $controller->delete_user(); break; + + case 'add-book': $controller->add_book(); break; + case 'update-book': $controller->update_book(); break; + case 'delete-book': $controller->delete_book(); break; + + case 'add-stock': $controller->add_stock(); break; + case 'update-stock': $controller->update_stock(); break; + case 'delete-stock': $controller->delete_stock(); break; + + case 'add-category': $controller->add_category(); break; + case 'update-category': $controller->update_category(); break; + case 'delete-category': $controller->delete_category(); break; + + case 'do': switch (explode('/', $uri)[3] ?? null) { + + case 'add-user': $controller->do_add_user(); break; + case 'update-user': $controller->do_update_user(); break; + case 'delete-user': $controller->do_delete_user(); break; + + case 'add-book': $controller->do_add_book(); break; + case 'update-book': $controller->do_update_book(); break; + case 'delete-book': $controller->do_delete_book(); break; + + case 'add-stock': $controller->do_add_stock(); break; + case 'update-stock': $controller->do_update_stock(); break; + case 'delete-stock': $controller->do_delete_stock(); break; + + case 'add-category': $controller->do_add_category(); break; + case 'update-category': $controller->do_update_category(); break; + case 'delete-category': $controller->do_delete_category(); break; + + default: break; + } break; + + default: header('Location: '.($this->check_login(0)?'/admin/users':'/user/login')); break; + } + } else header('Location: /user'); break; + + default: + $controller = new default_controller(); + switch ($to) { + + case 'index': $controller->index(); break; + case 'lists': $controller->lists(); break; + case 'search': $controller->search(); break; + + case 'book': $controller->book((int)(explode('/', $uri)[2] ?? 0)); break; + + default: http_response_code(404); break; + } break; + } + } + + private function check_login($jump = true) { + return ($login = !isset($_SESSION['user'])) && $jump ? exit(header('Location: /user/login')) : !$login; + } + +} \ No newline at end of file diff --git a/src/template/admins/add_book.php b/src/template/admins/add_book.php new file mode 100755 index 0000000..3b24eb9 --- /dev/null +++ b/src/template/admins/add_book.php @@ -0,0 +1,49 @@ + +
+ +
+
+

添加书籍

+
+

+      +

+

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 封面图片: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+   +

+ + + + +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/add_category.php b/src/template/admins/add_category.php new file mode 100755 index 0000000..24f6225 --- /dev/null +++ b/src/template/admins/add_category.php @@ -0,0 +1,24 @@ + +
+ +
+
+

添加分类

+
+

+      +

+

+  分类名: +

+

+   +

+ + + + +
+
+
+
diff --git a/src/template/admins/add_stock.php b/src/template/admins/add_stock.php new file mode 100755 index 0000000..85e7251 --- /dev/null +++ b/src/template/admins/add_stock.php @@ -0,0 +1,59 @@ + +
+ +
+
+

添加库存

+
+

+   +

+ +

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+      +

+

+  书架号: +

+

+ 受损程度: +

+

+ 借阅状态: +

+

+   +

+ + + + +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/add_user.php b/src/template/admins/add_user.php new file mode 100755 index 0000000..6ea4289 --- /dev/null +++ b/src/template/admins/add_user.php @@ -0,0 +1,51 @@ + +
+ +
+
+

添加用户

+
+

+      +

+

+  用户名: +

+

+  密 码: +

+

+ 重复密码: +

+

+  性 别: +

+

+  生 日: +

+

+  身份证: +

+

+ 借书配额: +

+

+ 用户类型: +

+

+   +

+ + + + +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/books.php b/src/template/admins/books.php new file mode 100755 index 0000000..c837af2 --- /dev/null +++ b/src/template/admins/books.php @@ -0,0 +1,63 @@ + +
+ +
+
+

书籍管理

+
+ 添加书籍 +
+
+
+

书籍列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
书名库存操作
+ + 库存 + 删除 +
没有库存
+
+
+
+
+

书籍条目

+

+
+
+

书籍总量

+

+
+
+
+ +
+
+
+
diff --git a/src/template/admins/categories.php b/src/template/admins/categories.php new file mode 100755 index 0000000..614cf95 --- /dev/null +++ b/src/template/admins/categories.php @@ -0,0 +1,56 @@ + +
+ +
+
+

分类管理

+
+ 添加分类 +
+
+
+

分类列表

+ + + + + + + + + + + + + + + + + + + + +
ID分类名操作
+ 更新 + 删除 +
没有分类
+
+
+
+
+

分类数量

+

+
+
+

书籍总量

+

+
+
+
+ +
+
+
+
diff --git a/src/template/admins/delete_book.php b/src/template/admins/delete_book.php new file mode 100755 index 0000000..362aa86 --- /dev/null +++ b/src/template/admins/delete_book.php @@ -0,0 +1,41 @@ + +
+ +
+
+

删除书籍

+

修改不可逆,请谨慎操作!

+

+      +

+ +

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+   +

+ + + + + + +
+
+
\ No newline at end of file diff --git a/src/template/admins/delete_category.php b/src/template/admins/delete_category.php new file mode 100755 index 0000000..937e7e3 --- /dev/null +++ b/src/template/admins/delete_category.php @@ -0,0 +1,35 @@ + +
+ +
+
+

删除分类

+

修改不可逆,请谨慎操作!

+
+

+      +

+

+  分类名: +

+

+  合并至: +

+

+   +

+ + + + + +
+
+
\ No newline at end of file diff --git a/src/template/admins/delete_stock.php b/src/template/admins/delete_stock.php new file mode 100755 index 0000000..54107e5 --- /dev/null +++ b/src/template/admins/delete_stock.php @@ -0,0 +1,54 @@ + +
+ +
+
+

删除库存

+

修改不可逆,请谨慎操作!

+

+   +

+ +

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+      +

+

+  书架号: +

+

+ 受损程度: +

+

+ 借阅状态: +

+

+   +

+ + + + + + + +
+
+
\ No newline at end of file diff --git a/src/template/admins/delete_user.php b/src/template/admins/delete_user.php new file mode 100755 index 0000000..a7e4240 --- /dev/null +++ b/src/template/admins/delete_user.php @@ -0,0 +1,40 @@ + +
+ +
+
+

删除用户

+

修改不可逆,请谨慎操作!

+

+      +

+

+  用户名: +

+

+  性 别: +

+

+  生 日: +

+

+  身份证: +

+

+ 借书配额: +

+

+ 用户类型: +

+

+   +

+ + + + + + +
+
+
\ No newline at end of file diff --git a/src/template/admins/page_switch.php b/src/template/admins/page_switch.php new file mode 100755 index 0000000..f1508be --- /dev/null +++ b/src/template/admins/page_switch.php @@ -0,0 +1,15 @@ + +

/

+ 2) { ?> + 首页 + + 上一页 + + 上一页 + + 下一页 + + 下一页 + 2 && $page < $total - 1) { ?> + 尾页 + diff --git a/src/template/admins/stock.php b/src/template/admins/stock.php new file mode 100755 index 0000000..4573e11 --- /dev/null +++ b/src/template/admins/stock.php @@ -0,0 +1,68 @@ + +
+ +
+
+

库存管理

+
+ + 添加库存 + +
+
+
+

库存列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
书名借阅状态操作
+ 更新 + 删除 +
没有库存
+
+
+
+
+

剩余库存

+

+
+
+

库存总量

+

+
+
+ +
+
+
diff --git a/src/template/admins/update_book.php b/src/template/admins/update_book.php new file mode 100755 index 0000000..fcc07de --- /dev/null +++ b/src/template/admins/update_book.php @@ -0,0 +1,47 @@ + +
+ +
+
+

更新书籍

+

留空则不作修改

+
+

+      +

+

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 封面图片: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+   +

+ +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/update_category.php b/src/template/admins/update_category.php new file mode 100755 index 0000000..5385f97 --- /dev/null +++ b/src/template/admins/update_category.php @@ -0,0 +1,22 @@ + +
+ +
+
+

更新分类

+

留空则不作修改

+
+

+      +

+

+  出版社: +

+

+   +

+ +
+
+
+
diff --git a/src/template/admins/update_stock.php b/src/template/admins/update_stock.php new file mode 100755 index 0000000..983d4a6 --- /dev/null +++ b/src/template/admins/update_stock.php @@ -0,0 +1,56 @@ + +
+ +
+
+

更新库存

+
+

+   +

+ +

+  书 名: +

+

+  作 者: +

+

+  出版社: +

+

+ ISBN: +

+

+ 书籍类型: +

+

+ 书籍语言: +

+

+      +

+

+  书架号: +

+

+ 受损程度: +

+

+ 借阅状态: +

+

+   +

+ +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/update_user.php b/src/template/admins/update_user.php new file mode 100755 index 0000000..7201df0 --- /dev/null +++ b/src/template/admins/update_user.php @@ -0,0 +1,45 @@ + +
+ +
+
+

更新用户

+

留空则不作修改

+
+

+      +

+

+  用户名: +

+

+  性 别: +

+

+  生 日: +

+

+  身份证: +

+

+ 借书配额: +

+

+ 用户类型: +

+

+  密 码: +

+

+ 重复密码: +

+

+   +

+ +
+
+
+
\ No newline at end of file diff --git a/src/template/admins/users.php b/src/template/admins/users.php new file mode 100755 index 0000000..5e1eb06 --- /dev/null +++ b/src/template/admins/users.php @@ -0,0 +1,64 @@ + +
+ +
+
+

用户管理

+
+ 添加用户 +
+
+
+

用户列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
用户名用户类型操作
+ 更新 + 删除 +
没有用户
+
+
+
+
+

用户数量

+

+
+
+

借出书籍

+

+
+
+
+ +
+
+
+
diff --git a/src/template/defaults/book.php b/src/template/defaults/book.php new file mode 100755 index 0000000..1e5b9d3 --- /dev/null +++ b/src/template/defaults/book.php @@ -0,0 +1,65 @@ + +
+ +
+
+

库存查询

+
+ 返回上页 +
+
+
+

库存列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
书名借阅状态操作
+ + 借阅 + + 借阅 + +
没有可用库存
+
+
+
+
+

剩余库存

+

+
+
+

库存总量

+

+
+
+
+ +
+
+
+
diff --git a/src/template/defaults/index.php b/src/template/defaults/index.php new file mode 100755 index 0000000..a9d1d4a --- /dev/null +++ b/src/template/defaults/index.php @@ -0,0 +1,42 @@ + +
+ +
+
+

热门书籍

+
+
+ +
+ + +
+ +
+ +
+
+

书籍列表

+
+
+ +
+ + +
+ + +

/
 

+ 2) { ?> + 首页 + + 上一页 + + 上一页 + + 下一页 + + 下一页 + 2 && $page < $total - 1) { ?> + 尾页 + + diff --git a/src/template/defaults/search.php b/src/template/defaults/search.php new file mode 100755 index 0000000..b2627c8 --- /dev/null +++ b/src/template/defaults/search.php @@ -0,0 +1,44 @@ + +
+ +
+
+

搜索结果

+
+
+ +
+ +
+ +
+

请在上方搜索框输入书名关键字 ~

+
+ +
+ pick +
+

+

+ (-) +

+

+ (ISBN: ) +

+ + + +
+
+ + + +
+

没有找到搜索结果呢 ...

+
+ +
+
+ + diff --git a/src/template/example/example-popup.php b/src/template/example/example-popup.php new file mode 100755 index 0000000..bdbf34b --- /dev/null +++ b/src/template/example/example-popup.php @@ -0,0 +1,16 @@ + diff --git a/src/template/example/example-user_profile.php b/src/template/example/example-user_profile.php new file mode 100755 index 0000000..0d1535a --- /dev/null +++ b/src/template/example/example-user_profile.php @@ -0,0 +1,43 @@ + + diff --git a/src/template/example/example.php b/src/template/example/example.php new file mode 100755 index 0000000..b709dc2 --- /dev/null +++ b/src/template/example/example.php @@ -0,0 +1,251 @@ + +
+ +
+
+

Art & Design

+

Interesting Stats

+
+ +
+ + + +
+ +
+
Stats
+
Library (7)
+
Picks for you
+
+
+ + + + +
+ + + + + \ No newline at end of file diff --git a/src/template/header.php b/src/template/header.php new file mode 100755 index 0000000..4401f84 --- /dev/null +++ b/src/template/header.php @@ -0,0 +1,71 @@ + + + + + + + + + + +<?=$title?> - <?=$GLOBALS['config']['name']?> + + + + + + +
+ + + + + + + + + + + + + + + +
+
+ +
+
+
+
+ +
+ +
+
+ + + +
+
+ + + + + +
+
+ +
diff --git a/src/template/side_nav.php b/src/template/side_nav.php new file mode 100755 index 0000000..ac71fd2 --- /dev/null +++ b/src/template/side_nav.php @@ -0,0 +1,67 @@ + + '首页', 'id' => 'index', 'svg' => 'home', 'href' => '/'], + ['name' => '快捷功能', 'id' => 'categories', 'svg' => 'category', 'sidenav' => [ + ['name' => '书籍列表', 'href' => '/lists'], + ['name' => '书籍检索', 'href' => '/search'] + ]], + ['name' => '用户中心', 'id' => 'users', 'svg' => 'profile', 'sidenav' => [ + ['name' => '个人资料', 'href' => '/user/info'], + ['name' => '借书记录', 'href' => '/user/record'] + ]], + ['name' => '管理中心', 'id' => 'admins', 'svg' => 'wishlist', 'sidenav' => [ + ['name' => '用户管理', 'href' => '/admin/users'], + ['name' => '书籍管理', 'href' => '/admin/books'], + ['name' => '库存管理', 'href' => '/admin/stock'], + ['name' => '分类管理', 'href' => '/admin/categories'], + ]] + ]; +?> + diff --git a/src/template/users/info.php b/src/template/users/info.php new file mode 100755 index 0000000..375ed51 --- /dev/null +++ b/src/template/users/info.php @@ -0,0 +1,47 @@ + +
+ +
+
+

个人资料

+
+ 更新信息 +
+
+
+

基本信息

+
+
+

用户名

+

+
+
+
+
+

性别

+

+
+
+

生日

+

+
+
+
+
+
+

身份证

+

+
+
+
+

借书配额

+

+
+
+

访问级别

+

+
+
+
+
+
diff --git a/src/template/users/login.php b/src/template/users/login.php new file mode 100755 index 0000000..930b2f6 --- /dev/null +++ b/src/template/users/login.php @@ -0,0 +1,27 @@ + +
+ +
+
+

用户登录

+

+ 没有账号?点我注册 +

+
+

+      +

+

+  用户名: +

+

+  密 码: +

+

+   +

+ +
+
+
+
\ No newline at end of file diff --git a/src/template/users/record.php b/src/template/users/record.php new file mode 100755 index 0000000..c2dffff --- /dev/null +++ b/src/template/users/record.php @@ -0,0 +1,65 @@ + +
+ +
+
+

借书记录

+
+ 借阅更多 +
+
+
+

借阅列表

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
书名借书日期还书日期
+ 归还 +
没有记录
+
+
+
+
+

借书配额

+

/

+
+
+

访问级别

+

+
+
+
+ +
+
+
+
diff --git a/src/template/users/register.php b/src/template/users/register.php new file mode 100755 index 0000000..038d849 --- /dev/null +++ b/src/template/users/register.php @@ -0,0 +1,33 @@ + +
+ +
+
+

用户注册

+

+ 已有账号?点我登录 +

+
+

+      +

+

+  用户名: +

+

+  身份证: +

+

+  密 码: +

+

+ 重复密码: +

+

+   +

+ +
+
+
+
\ No newline at end of file diff --git a/src/template/users/update.php b/src/template/users/update.php new file mode 100755 index 0000000..73614b7 --- /dev/null +++ b/src/template/users/update.php @@ -0,0 +1,32 @@ + +
+ +
+
+

更新信息

+

留空则不作修改

+
+

+      +

+

+  性 别: +

+

+  生 日: +

+

+  密 码: +

+

+ 重复密码: +

+

+   +

+ +
+
+
+
\ No newline at end of file